不能。Arachni是黑盒Web扫描器,不分析PHP源码,仅通过请求响应推测漏洞,如根据PHP Warning识别LFI疑似点,但无法定位未过滤的$_GET等具体代码行。

Arachni 能不能直接挖 PHP 代码层漏洞?
不能。Arachni 是 Web 应用扫描器,只做黑盒检测:它不读源码,不分析 eval()、system() 或未过滤的 $_GET 变量,而是通过发请求、观察响应(状态码、响应体、重定向、报错信息等)推测漏洞存在。比如它可能发现一个参数触发了 PHP Warning: include(): Failed opening 'xxx' for inclusion,从而标记为「本地文件包含疑似点」,但不会告诉你哪行 PHP 代码漏了 basename() 过滤。
在 Kali 上跑 Arachni 扫描 PHP 站前必须确认的三件事
很多扫不出来或报错,其实是环境没对齐:
- 目标站必须能被 Kali 主机正常访问(
curl -I http://target.com要返回 200/30x,不是超时或连接拒绝) - 关闭 Kali 自带的代理(如 Burp 或 FoxyProxy 正在监听
127.0.0.1:8080),否则arachni默认会走系统代理,导致请求全卡住 - 确认目标站没有 WAF 拦截——Arachni 的默认 payload 触发率高,容易被云 WAF(如 Cloudflare)或 mod_security 直接封 IP。可先用
arachni --http-request-timeout=10 --scope-include-pattern=".*" http://target.com/加个超时再试,避免卡死
怎么让 Arachni 更大概率发现 PHP 特有漏洞(LFI/RFI/命令注入)
靠默认配置基本扫不到深层利用点。得手动调参,重点改这几个:
- 启用高风险检查:
--checks=*lfi*,*rce*,*exec*,*path_traversal*(注意用逗号分隔,不是空格) - 放宽路径遍历试探深度:
--http-request-concurrency=5 --plugin-options='path_traversal.depth=6'(默认是 3,对嵌套多层的include($_GET['p'].'.php')不够) - 加一个常见 PHP 文件后缀试探:
--audit-links --audit-forms --audit-cookies --scope-extend-path=.php,否则它可能跳过/page.php?id=1这类明显带 PHP 后缀的 URL - 如果目标用了 URL 重写(如 ThinkPHP 的
/index.php?s=/module/action),必须加--scope-include-pattern="s=.*",否则 Arachni 会当成静态路径忽略
扫完怎么看结果里哪些是真 PHP 漏洞线索
Arachni 报告里一堆「Low severity」别急着关。重点关注这几类描述和 payload:
立即学习“PHP免费学习笔记(深入)”;
-
Path Traversal类型中,vector字段含../../../etc/passwd且响应里真出现了 passwd 内容(不是 404 或空白)→ 很可能是 LFI -
Remote Code Execution类型中,payload 是echo MD5(123);或id,且响应体返回了202cb962ac59075b964b07152d234b70或uid=33(www-data)→ RCE 成立 -
Server Side Include报告里,response_body显示出服务器时间、IP 或执行了→ 可能配合 PHP 的virtual()或 Apache 解析漏洞利用 - 所有带
unvalidated redirect的结果,如果 location 头里拼了$_GET['url']且没过滤://,就可能绕过成https://evil.com/?x=javascript:alert(1)→ 这属于 PHP 逻辑缺陷,但 Arachni 只标「redirect」,得人工看
真正麻烦的是那些「没回显但请求被服务端执行了」的情况,比如命令注入盲打。Arachni 的 timing 插件(--checks=*timing*)会发 sleep(5) 类请求,但 PHP 的 max_execution_time 或 Nginx 的 fastcgi_read_timeout 可能截断响应,导致误判。这时候得切到手工验证,用 curl -v "http://t.com/p.php?c=id;sleep 5" 看真实耗时。











