kali怎么挖php漏洞_借助zap代理测php站csrf漏洞【步骤】

8次阅读

ZAP代理php站点只需配置浏览器指向其默认代理端口127.0.0.1:8080,确保Proxy运行正常;csrf检测需人工验证Token存在性、校验逻辑及可复用性,ZAP主动扫描效果有限;抓不到token常因js动态生成,需启用Headless Browser或分析XHR接口

kali怎么挖php漏洞_借助zap代理测php站csrf漏洞【步骤】

ZAP 怎么代理转发 PHP 站点的请求

ZAP 本身不区分后端语言,它只抓 http 流量;只要 PHP 站能被你本地浏览器访问,ZAP 就能代理它。关键不是“PHP 特殊配置”,而是确保浏览器流量真走 ZAP 的代理端口(默认 127.0.0.1:8080)。

实操要点:

  • 启动 ZAP 后,在 Tools → Options → Local Proxy 确认监听地址和端口(别改成本机外网 IP,否则可能被防火墙拦截)
  • 浏览器手动设置代理:HTTP/https 都指向 127.0.0.1:8080chrome 推荐用 SwitchyOmega 插件快速切换,避免全局污染
  • 访问目标 PHP 站前,先在 ZAP 的 Quick Start 标签页点 Automated Scan 或手动输入 URL 进 Manual Explore,否则 ZAP 不会主动记录请求
  • 如果页面加载失败,检查 ZAP 右下角状态栏是否显示 Proxy is running,以及浏览器是否报 ERR_PROXY_CONNECTION_FAILED —— 多半是端口被占用或代理没开

怎么确认 PHP 页面存在 CSRF 漏洞

CSRF 检测不靠 ZAP 自动扫描“打分”,而要人工验证表单行为是否缺失抗抵赖机制。ZAP 的 Active Scan 对 CSRF 效果有限,真正有效的是看请求里有没有 CSRF token、是否校验、能否复用。

操作路径:

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

  • 在 ZAP 的 Sites 树里找到目标 PHP 页面的 POST 请求(比如 /admin/update_profile.php
  • 右键 → Resend with Request Editor,删掉 cookie 头或修改 Referer,看响应是否仍成功(若成功,说明没校验来源)
  • 重点查参数:是否存在类似 token=abc123_csrf=xyz 的字段;再进 PHP 源码(如果有权限)或响应 html 里搜 hidden 输入框,确认该 token 是否每次请求都刷新
  • 用 ZAP 的 Breakpoints 功能拦截请求,在发包前手动删掉 token 字段,再放行 —— 若服务器仍执行操作,就是漏洞确认

为什么 ZAP 抓不到 PHP 表单的 token 参数

常见原因不是 ZAP 问题,而是 PHP 页面用了前端 JS 动态生成 token(比如 vue/ajax 初始化时从 /api/csrf-token 拿),ZAP 默认不执行 JS,所以 token 字段压根不会出现在原始 HTML 表单里。

应对方式:

  • 打开 ZAP 的 Spider 时勾选 Parse javaScript,并启用 Headless Browser(需提前装好 Chromium)
  • 手动访问页面后,在 ZAP 的 history 标签页过滤 XHRfetch 请求,找返回 json 中带 csrf_token 的接口
  • 如果 token 由 JS 加密拼接(如 md5(timestamp + secret)),ZAP 无法还原,必须结合 PHP 代码逻辑或 Burp 的 Extensions → CSPro 辅助
  • 注意 PHP 的 session.use_only_cookies=1 配置会导致 ZAP 无法通过 URL 传 sessionid,此时必须保留 Cookie 头,否则 token 校验直接失败

绕过 Referer / Origin 校验的实操边界

有些 PHP 站只校验 Referer 是否为本站,看似防 CSRF,实则极易绕过。ZAP 本身不发包爆破,但可导出请求供 curlpython 复现。

典型绕过方式:

  • Referer: https://victim.com/admin 改成 Referer: https://victim.com.admin.evil.com(部分 PHP parse_url() 解析缺陷)
  • 删除 Origin 头,或设为 Origin: NULL(某些 PHP 框架对 null 值未做严格判断)
  • 用 ZAP 的 Send to Repeater 后,在 Raw 标签页手动添加换行符混淆头解析:Referer: https://victim.comrnX-Forwarded-Host: evil.com
  • 注意:PHP 的 $_SERVER['HTTP_ORIGIN'] 在非 CORS 请求中可能为空,此时仅靠 Referer 校验形同虚设

真正难搞的是结合双重提交 Cookie + 同步 token 的 PHP 实现(比如 laravel@csrf),这种必须拿到用户 session 才能构造合法请求,ZAP 单独跑不出结果,得配合已登录态的手动重放。

text=ZqhQzanResources