w3af在Kali中默认为命令行版w3af_console,需用git源码安装适配Python 3;扫描PHP站点须配置spider_man忽略后台路径、审计插件仅启用php_eval等三个专用检测器;批量扫描应封装Bash脚本并限制超时;漏洞需手工验证,尤其关注伪协议利用与备份文件泄露。

w3af 在 Kali 中默认已安装,但默认不启用 GUI
w3af 自 3.0 版本起已移除图形界面,Kali 2023.1+ 自带的是命令行版 w3af_console,直接运行 w3af_console 即可进入交互式扫描器。若提示“command not found”,说明被精简掉了,需手动安装:sudo apt update && sudo apt install w3af。注意:Kali 2024 默认用 Python 3,而旧版 w3af(2.x)只支持 Python 2,强行装会失败——必须用当前维护的 git+https://github.com/andresriancho/w3af.git 源码安装,否则连启动都报 ModuleNotFoundError: No module named 'urlparse'。
扫描 PHP 站点前必须绕过基础拦截和路径识别
多数 PHP 站点有 WAF 或简单访问控制,w3af 默认的爬虫策略会卡在登录页或 403 页面。需提前配置两个关键插件:
- 启用
spider_man插件并设ignore_regex排除/login\.php|/admin/|/wp-类路径,避免深陷后台死循环 - 在
audit插件组中只启用php_eval、php_code_injection、file_upload这三个真正针对 PHP 的检测器,禁用sqlmap类通用插件——它们对 PHP 特性漏洞(如include($_GET['p']))漏报率高 - 设置
target时务必加协议和端口,例如set target http://example.com:8080/,少一个斜杠或错写成https都会导致爬虫返回空结果
批量扫描多个 PHP 域名要用脚本封装,不能靠 w3af 内置 batch
w3af 的 batch 模式只支持单次多目标串行执行,无并发、无错误跳过、无结果归类,实际批量挖洞几乎不用。推荐写一个 Bash 封装脚本,核心逻辑是:
- 每行读取一个域名,拼出完整 URL(自动补
http://和/) - 用
timeout 300限制单站扫描不超过 5 分钟,防止卡死 - 将输出重定向到独立文件:
w3af_console -s $profile | tee logs/${domain}_report.txt - 扫描完 grep 关键字:
grep -q "Vulnerability found" logs/${domain}_report.txt && echo "[+] ${domain} has PHP vuln"
注意:profile 文件要提前导出(在 w3af_console 里用 profiles save php_basic),里面必须关掉 dns_resolution(否则批量时 DNS 查询会拖慢整个队列)。
立即学习“PHP免费学习笔记(深入)”;
发现疑似漏洞后,手工验证比 w3af 自动利用更可靠
w3af 的 exploit 插件对 PHP 漏洞支持极弱,比如它能报出 php_eval,但生成的 PoC 往往是 ?cmd=ls 这种裸参数,而真实场景中常见 ?page=about.php&lang=../etc/passwd%00 或 base64 编码绕过。必须人工跟进:
- 从报告里提取触发路径和参数名,用
curl -v重放请求,观察响应体是否含root:x:0:0:或命令回显 - 遇到
include()类漏洞,优先试?f=php://filter/read=convert.base64-encode/resource=/etc/passwd,w3af 不检测这类伪协议利用 - 若目标用 Nginx + PHP-FPM,注意
.php.swp、.php~等备份文件可能泄露源码——这不属于 w3af 的默认爬取范围,得额外用ffuf -w /usr/share/seclists/Discovery/Web-Content/backup-extentions.txt补扫
真正有效的 PHP 漏洞挖掘,从来不是靠一个工具跑完就出报告,而是 w3af 负责快速筛出可疑点,剩下全靠对 PHP 运行机制和常见开发陋习的理解来推进。











