kali怎么挖php漏洞_借助davtest检测php webdav洞【步骤】

7次阅读

WebDAV服务是否启用php解析需以实际访问phpinfo页面为准:davtest仅粗略检测上传后缀响应,非真实执行验证;关键看info.php能否通过URL直接访问并输出phpinfo。

kali怎么挖php漏洞_借助davtest检测php webdav洞【步骤】

WebDAV 服务是否启用 PHP 解析?先确认 davtest 能否连上

davtest 不是漏洞利用工具,它只检测 WebDAV 接口是否开放、能否上传文件、能否执行任意后缀(比如 .php)。很多 kali 用户跑完 davtest -url http://target/ 就以为“挖到洞了”,其实只是发现了个 WebDAV 端点。关键要看返回里有没有类似 PHPphp5php7 的 upload result —— 那才说明服务器把 .php 当脚本解析了。

常见失败现象:davtest405 Method Not Allowed401 Unauthorized,说明目标没开 PROPFIND/PUT,或需要认证;若返回 200 OK 但所有上传后缀都显示 Not executable,基本可判定 PHP 解析被禁用(比如 nginx 默认不解析 WebDAV 上传的 PHP)。

  • 确保目标 WebDAV 路径正确,常见为 /webdav//dav//(根路径有时也开放)
  • 若需认证,用 -auth user:pass 参数,别漏掉冒号
  • 注意:davtest 默认只测 13 种后缀,不含 .phtml.php3 等变体,真要覆盖得改源码或换 cadaver + 手动试

为什么 davtest 显示 php 可执行,但上传的 shell.php 访问 404 或 500?

因为 davtest 的“executable”判断逻辑很粗糙:它只看上传后 GET 请求是否返回非空响应体,并不校验内容是否真被 PHP 引擎执行。典型假阳性场景:

  • 服务器把 shell.php 当静态文件返回(Content-Type: text/plain),内容就是你写的 PHP 代码原文
  • apache + mod_php 下,WebDAV 上传的文件权限为 600(属主读写),web 用户无法读取,导致 403
  • Nginx 配置中 location ~ .php$ 只匹配磁盘路径,而 WebDAV 上传可能落在非 root 目录(如 /var/www/dav/),但该路径未被 fastcgi_pass 覆盖

验证方法:上传一个 info.php,内容为 ,然后用浏览器直接访问完整 URL(如 http://target/webdav/info.php),看是否输出 phpinfo 页面 —— 这才是真实可执行。

立即学习PHP免费学习笔记(深入)”;

绕过 WebDAV 的 PHP 解析限制:常见 bypass 方式

即使 davtest 显示 php 不可执行,也不代表完全没戏。WebDAV 本身不解析 PHP,解析行为由 Web Server 决定,所以重点在找服务端配置缺陷:

  • 尝试上传 shell.phtmlshell.php5shell.php3 —— 某些旧版 Apache 会 fallback 解析这些扩展名
  • 若支持 PROPPATCH,可尝试修改已存在文件的 Content-Type 属性(极少见,仅特定 iis 配置)
  • 上传 .htaccess(Apache 场景):内容为 AddType application/x-httpd-php .xxx,再上传 shell.xxx;注意 WebDAV 默认不允许上传点开头的文件,需用 cadaver 或 Burp 改包绕过
  • 检查是否允许上传 ZIP 并解压(某些 WebDAV 实现支持 UNZIP 方法),可打包含 .php 的 ZIP 上传后触发解压

实战中容易忽略的权限与路径细节

davtest 输出的“upload path”只是它自己构造的路径,不等于 web 可访问路径。例如它说上传到 http://target/webdav/test.php,但实际 web 根目录可能是 /var/www/html/,而 WebDAV 根映射到 /var/www/dav/ —— 这两个目录在 HTTP 层是否同级,决定你能不能通过 URL 访问。

更隐蔽的问题:

  • 某些环境 WebDAV 使用独立用户(如 www-data:davusers),上传文件属组不是 web server 用户,导致 nginx/apache 读取失败
  • SElinux 启用时,httpd_can_network_connect 关闭会导致 davtest 连接超时,需先 setsebool -P httpd_can_network_connect on
  • kali 自带的 davtest 版本较老(0.4.8),对 WebDAV 的 digest auth 支持差,遇到 401 时建议切到 curl -X PUT 手动测

真正卡住的地方,往往不是“能不能传”,而是“传完放哪、谁有权限读、web server 配置认不认”。别只盯着 davtest 的一行 output。

text=ZqhQzanResources