手把手搞懂 SSRF:服务器为什么会帮攻击者访问内网?
学完 SQL 注入、XSS、CSRF 后,很多人都会接触到 SSRF,但第一次看到这个漏洞时往往会觉得抽象。什么叫服务器替我们发请求?为什么攻击者明明在外网,却能访问企业内网资源?本文将从 SSRF 的基本概念开始,通过实际场景讲解漏洞形成原因、常见利用方式、内网探测思路以及防御措施,帮助大家建立完整的 SSRF 知识体系。文章内容以学习理解为主,适合 Web 安全初学者阅读。
大家在学习 Web 安全时,经常会听到一个词:
SSRF
很多人第一次看到这个漏洞都会疑惑:
“攻击者不是在互联网吗?为什么能访问公司的内网服务器?”
实际上,SSRF 最核心的思想只有一句话:让服务器替攻击者发送请求。
理解了这句话,SSRF 就不再神秘了。

一、什么是 SSRF
SSRF 全称: Server Side Request Forgery
中文叫:服务器请求伪造。
原理是:服务器提供了从其他服务器应用获取数据的功能,但没有对目标地址做严格过滤限制,导致攻击者通过外网访问内网造成攻击。
简单来说:
本来应该由用户自己访问的网址,变成了服务器帮用户访问。
例如网站提供了一个图片抓取功能:
https://example.com/fetch?url=https://test.com/a.jpg
服务器收到参数后:
requests.get(url)
然后再把图片返回给用户。
正常情况下:
url=https://test.com/a.jpg
服务器会去访问:
https://test.com/a.jpg
但如果攻击者把参数改成:
https://test.com/a.jpg
服务器就会去访问自己。
这就产生了 SSRF。

二、SSRF 为什么危险
攻击者无法直接访问企业内网:
攻击者
↓
互联网
↓
公司防火墙
↓
内网服务器
但是企业服务器可以访问内网。
于是攻击流程变成:
攻击者
↓
存在SSRF漏洞的网站
↓
内网服务器
服务器变成了“中间人”,攻击者借助服务器身份进入内网。

三、一个典型案例
假设网站存在接口:
GET /api/image?url=
后台代码:
requests.get(url)
攻击者输入:
http://127.0.0.1
服务器访问:
http://127.0.0.1
如果返回内容:
Apache Default Page
说明服务器本机开启了 Web 服务。
攻击者成功访问到本机资源。
四、SSRF 能做什么
1. 探测内网
尝试访问:
http://192.168.1.1
http://192.168.1.2
http://192.168.1.3
根据响应结果判断:
- 主机是否存在
- 端口是否开放
- 服务是否运行
这就是内网探测。
2. 扫描端口
尝试访问:
http://127.0.0.1:22
http://127.0.0.1:80
http://127.0.0.1:3306
观察:
- 超时
- 拒绝连接
- 返回数据
判断目标端口状态。
3. 访问管理后台
很多后台只允许内网访问:
http://127.0.0.1/admin
外部用户打不开。
但服务器自己能打开。
于是 SSRF 可以帮助攻击者访问这些页面。
4. 获取云平台元数据
云服务器通常提供:
169.254.169.254
这样的特殊地址。
用于获取:
* 实例信息
* Access Key
* Token
* 云平台配置
这也是云环境中 SSRF 最经典的利用方式之一。

五、SSRF 常见危险函数
1.Python
requests.get()
urllib.request.urlopen()
2.PHP:
file_get_contents()
curl_exec()
fopen()
3.Java:
HttpURLConnection
只要程序允许用户控制访问地址,
就需要警惕 SSRF。

六、如何发现 SSRF
观察网站是否存在:
图片抓取
输入图片URL
文件导入
导入远程文件
在线预览
预览远程网页
RSS订阅
导入RSS地址
第三方资源同步
同步远程数据
这些功能都可能成为 SSRF 的入口。
七、SSRF 防御思路
白名单
只允许访问指定域名:
cdn.example.com
img.example.com
禁止访问其他地址。
禁止内网地址
过滤:
127.0.0.1
localhost
192.168.x.x
10.x.x.x
172.16.x.x
DNS解析校验
防止:
evil.com解析后指向:127.0.0.1从而绕过检测。
网络隔离
服务器权限最小化。
限制访问:
- 内网
- 数据库
- 管理后台
- 云平台接口
即使发生 SSRF 也难以进一步利用。

八、总结
SSRF 的本质并不复杂:
攻击者自己访问不了目标,于是让服务器替自己访问。
漏洞核心可以概括为:

学习 SSRF 时,不必一开始就研究复杂绕过技巧。
先理解:
- 为什么服务器会帮我们访问
- 为什么能探测内网
- 为什么云环境害怕 SSRF
把这三个问题想明白,后面的内网扫描、云平台利用、绕过技巧都会容易很多。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)