大家好!👋 终于到了OWASP Top 10 2021征服系列的最后一课。备受瞩目的第10位是通过社区调查新进入排名的,一个非常强大和危险的攻击:A10:2021-SSRF(Server-Side Request Forgery,服务器端请求伪造)。
“如果操纵一个值得信任的内部员工,让他去偷老板办公室的秘密文件呢?” 🕵️♂️ SSRF正是这样一种攻击,攻击者像操纵傀儡一样控制受信任的服务器,让服务器代为向其他地方发送恶意请求。现在,让我们一起深入探讨我们的服务器如何成为黑客的间谍,以及这个可怕的场景!

🤔 SSRF?那到底是什么?
SSRF(服务器端请求伪造)是一种攻击技术,攻击者利用Web应用程序的漏洞,强制服务器直接向攻击者想要的任意地址发送HTTP请求。
它与CSRF(客户端请求伪造)名称相似,容易混淆,但攻击主体完全不同。
- CSRF (Client-Side): 攻击者欺骗用户的Web浏览器,使其发送用户不希望的请求。(受害者:用户 👤)
- SSRF (Server-Side): 攻击者欺骗Web服务器本身,使其直接向其他系统发送请求。(受害者:服务器及内部网络 🏠)
服务器通常位于防火墙内部,可以自由地与外部无法直接访问的内部系统通信。SSRF攻击正是利用了服务器作为“内部人员”的信任,因此非常危险。
🕵️♂️ SSRF攻击为何如此危险?
如果服务器代替攻击者执行命令,可能会造成超乎想象的损害。
1. 内部网络扫描及信息泄露 🔥🧱
攻击者可以利用服务器作为代理,扫描防火墙后面隐藏的内部网络。
- 攻击场景: 攻击者操纵服务器向192.168.1.1:8080、10.0.0.5:3306等内部IP地址和端口号发送请求。通过服务器的响应时间或错误消息,可以判断哪些端口是开放的,哪些服务(数据库、管理员页面等)正在运行,从而绘制出内部系统的地图。
2. 内部服务攻击 💣
可以直接攻击那些未对外暴露、被认为是安全的内部服务。
- 攻击场景: 服务器可以代替攻击者访问仅限内部访问的管理员页面(http://localhost/admin),执行管理员功能,或者调用内部API来泄露数据或操纵系统。
3. 云元数据窃取 ☁️🔑 (最致命!)
在云环境中,SSRF可能带来灾难。
- 攻击场景: AWS、GCP、Azure等云环境中的服务器(实例)可以通过http://169.254.169.254等特殊内部IP地址访问其元数据(角色、临时凭证等)。如果攻击者操纵服务器向此地址发送请求,就可以窃取临时访问密钥、秘密密钥等敏感凭证信息。一旦攻击者获得这些密钥,就可以随意控制该云账户的所有资源。
4. 读取本地文件 📄
还可以利用file:///协议读取服务器的本地文件。
- 攻击场景: 攻击者输入file:///etc/passwd或file:///c:/windows/win.ini等路径,服务器可以读取该路径下的文件,并将其内容传递给攻击者。
🧰 SSRF漏洞在哪里发生?
SSRF主要发生在服务器直接访问用户输入的URL地址并执行某些操作的功能中。
- 基于URL的图片/内容获取: 服务器获取并显示用户输入的URL图片的功能。
- Webhook: 当特定事件发生时,向用户指定的URL发送通知的功能。
- PDF/文档转换器: 接收网页URL并将其转换为PDF的功能。
- 链接预览生成: 在即时通讯或社交媒体中粘贴链接时,服务器访问该URL以获取标题、描述和缩略图的功能。
🛡️ 如何防御? (防御方法)
防御SSRF的核心是“严格控制服务器发送请求的目的地”。
- 基于白名单(Allow List)的访问控制 ✅ (最重要!) 黑名单方式(如阻止localhost、127.0.0.1等)容易被绕过。必须创建服务器可以访问的域名、IP地址、端口、协议列表(白名单),并阻止所有不在该列表中的请求。原则是“除了允许的,其他全部禁止”。
- 输入值验证和解析 🧐: 不应直接使用用户输入的URL。应解析URL,分离出主机、端口、路径等,并彻底验证每个部分是否符合白名单策略。file:///, ftp:///等危险协议当然应该禁止。
- 禁用重定向(Redirection)↪️➡️❌: 攻击者可以输入一个安全的URL,然后诱导其重定向到危险的内部地址。因此,服务器的HTTP客户端应配置为不跟随重定向。
- 网络隔离和防火墙设置 🧱: 处理外部请求的服务器应放置在独立的隔离网络中,并通过防火墙加强网络策略,使其只能访问该服务器绝对需要的内部系统。(深度防御)
✨ 总结
SSRF的发生频率可能相对较低,但一旦发生,它是一种具有巨大破坏力的攻击,能够使防火墙失效,并危及整个内部系统。绝不能掉以轻心,认为“服务器向外部发送请求?那有什么危险的?”
如果我们的服务中存在服务器直接访问用户输入地址的功能,现在就让我们再次检查一下,我们是否完美地控制了它的目的地。我们必须阻止我们受信任的服务器成为黑客的间谍!
标签: OWASP, A10, SSRF, Server-Side Request Forgery, 安全, Web漏洞, 云安全
发表回复