OWASP Top 10漏洞解析(10)- Server-Side Request Forgery (SSRF)
Web应用程序安全一直是一个重要的话题,它不但关系到网络用户的隐私,财产,而且关系着用户对程序的新人。随着Web应用程序功能持续增加,复杂性不断提高,这些程序也面临着越来越多的安全威胁和挑战。
为了帮助这些应用程序的开发团队和安全人员了解和防范这些威胁,提高安全意识,编写更安全的代码,OWASP(Open Web Application Security Project,开放式Web应用程序安全项目)发布了一份标准指南,称为OWASP Top 10。
这是一份关于Web应用程序安全风险的标准指南,它基于全球范围内的安全专家和数据提供者的共识,列出了当前最严重、最关键的10种Web应用程序安全风险,并提供了相应的防范措施和建议。OWASP Top10 每隔几年会更新一次(目前已经发布了六个版本,分别是2004年、2007年、2010年、2013年、2017年和2021年),最新的版本是在2021年发布的OWASP Top10:2021。
已解析的OWASP漏洞
- OWASP Top 10漏洞解析(1)- A1:Broken Access Control 访问控制失效:https://bbs.huaweicloud.com/blogs/400993
- OWASP Top 10漏洞解析(2)- A2:Cryptographic Failures 加密机制失效:https://bbs.huaweicloud.com/blogs/405125
- OWASP Top 10漏洞解析(3)- A3:Injection 注入攻击:https://bbs.huaweicloud.com/blogs/407990
- OWASP Top 10漏洞解析(4)- A4:Insecure Design 不安全的设计:https://bbs.huaweicloud.com/blogs/414812
- OWASP Top 10漏洞解析(5)- A5:Security Misconfiguration 安全配置缺陷: https://bbs.huaweicloud.com/blogs/420057
- OWASP Top 10漏洞解析(6)- A6:Vulnerable and Outdated Components:https://bbs.huaweicloud.com/blogs/424642
- OWASP Top 10漏洞解析(7)- Identification and Authentication Failures:https://bbs.huaweicloud.com/blogs/427299
- OWASP Top 10漏洞解析(8)- Software and Data Integrity Failures:https://bbs.huaweicloud.com/blogs/429695
- OWASP Top 10漏洞解析(9)- Security Logging and Monitoring Failures:https://bbs.huaweicloud.com/blogs/432184
“服务端请求伪造”缺陷详情
“服务端请求伪”这个缺陷类别是从排名top10的社区调查中加上来的。数据显示在测试覆盖率高于平均水准、explot和impact潜力评等高于平均水准的情况下,该缺陷类别的发生几率会相对比较低。因为该新加入的缺陷类别看着可能是CWEs 缺陷中受关注比较少的一种,因此社区希望可以引来更多关于该权限的关注,进而在未来版本里演变成一个较大的类别。
常见的“服务端请求伪造”缺陷类型
当一个网页应用程序正在获取远端资源,但却没有去验证用户提供的url网址,此时就会发生“服务端请求伪造”。即便是在有防火墙、VPN 或其他网路 ACL 保护的情况下,攻击者仍然可以强迫网页应用程序发送一个经过捏造的请求到一个非预期的目标。
如今的网页应用程序提供了终端用户很多便利的滕,获取到一个url地址已经成为一个很常见的场景。因此,服务端请求伪造缺陷的发生是在不断增加的。而且,因为云端服务和云端结构的复杂性,伪造服务端请求的严重性将会愈来愈严峻。
如何防止该缺陷的发生
开发者可以通过实施以下部分或全部的防御措施来预防服务端请求伪造缺陷:
从网络层下手
- 将远端资源存取功能切割成不同子网路以降低伪造服务端请求的影响
- 强制实施"预设全拒绝(deny by default)" 的防火墙策略或网络访问控制规则来阻止除了必要之外的所有网络流量
从应用层下手
- 过滤并验证来自用户端的全部输入
- 强制要求以正式允许列表的形式提供url schema, port,和目的
- 不传送原始回应给用户端
- 禁止使用 HTTP 重新导向
- 留意url的一致性,以避免例如 DNS rebinding 攻击、TOCTOU 攻击
不要通过拒绝清单(deny list)或正规表示式(regular expression)减少伪造服务端请求缺陷的发生。攻击者拥有payload 清单、工具和技巧可以绕过这些拒绝清单。
额外可以考虑的方法
- 不要部署其他与安全相关的服务(比如,OpenID)到前端系统中。需要做的是控制这些系统的原始流量(比如,localhost)。
- 对于拥有特定且易于管理用户群的前端,应在独立系统上使用网络加密(如VPN)来满足极高的保护需求。
举个栗子
攻击者可以利用伪造服务端请求来攻击在 WAF、防火墙、或网路 ACL 后面的系统,可能采取如下的措施:
场景1
扫描内部服务器的端口。
如果网络架构没有分段(unsegmented),攻击者能够通过连接结果或则连接/拒绝SSRF负载连接所需的时间,来绘制内部网络图并判断内部服务器的端口是开放还是关闭。
场景2
敏感数据暴露。
攻击者能够访问本地文件或内部服务,获取诸如 file:///etc/passwd 和 http://localhost:28017/ 这样的敏感信息。
场景3
访问云服务的元数据存储。
大多数云服务提供商都设有元数据存储,例如 http://169.254.169.254/。攻击者可以读取这些元数据,以获取敏感信息。
场景4
攻破内部服务。
攻击者可能滥用内部服务,进一步实施诸如远程代码执行(RCE)或拒绝服务(DoS)攻击。
参考链接
- 点赞
- 收藏
- 关注作者
评论(0)