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

w3af_console,直接运行 w3af_console 即可进入交互式扫描器。若提示“command not found”,说明被精简掉了,需手动安装:sudo apt update && sudo apt install w3af。注意:Kali 2025 默认用 Python 3,而旧版 w3af(2.x)只支持 Python 2,强行装会失败——必须用当前维护的 git+https://github.com/andresriancho/w3af.git 源码安装,否则连启动都报 ModuleNotFoundError: No module named 'urlparse'。
多数 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 都会导致爬虫返回空结果w3af 的 batch 模式只支持单次多目标串行执行,无并发、无错误跳过、无结果归类,实际批量挖洞几乎不用。推荐写一个 Bash 封装脚本,核心逻辑是:
http:// 和 /)timeout 300 限制单站扫描不超过 5 分钟,防止卡死w3af_console -s $profile | tee logs/${domain}_report.txt
grep -q "Vulnerability found" logs/${domain}_report.txt && echo "[+] ${domain} has PHP vuln"
注意:profile 文件要提前导出(在 w3af_console 里用 profiles save php_basic),里面必须关掉 dns_resolution(否则批量时 DNS 查询会拖慢整个队列)。
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 不检测这类伪协议利用.php.swp、.php~ 等备份文件可能泄露源码——这不属于 w3af 的默认爬取范围,得额外用 ffuf -w /usr/share/seclists/Discovery/Web-Content/backup-extentions.txt 补扫真正有效的 PHP 漏洞挖掘,从来不是靠一个工具跑完就出报告,而是 w3af 负责快速筛出可疑点,剩下全靠对 PHP 运行机制和常见开发陋习的理解来推进。