数仓安全测试之 SSRF 漏洞
本文分享自华为云社区《GaussDB(DWS)安全测试之SSRF漏洞》,作者: ACBD。
什么是 SSRF 漏洞
SSRF (Server-Side Request Forgery,服务器端请求伪造)是指由攻击者构造请求,然后利用服务器的漏洞以服务端的身份向内网发送请求对内网发起攻击。一般情况下,SSRF 攻击的目标是外网无法访问的内部系统,因为请求是服务端发起的,所以服务端就能请求到与其网络通畅而与外网隔离的内网系统。
SSRF 漏洞的形成大多是因为服务端可以从其他服务器获取数据,但没有对服务端的请求做校验,导致攻击者通过服务端向服务器发送事先构造好的请求,攻击者把存在漏洞的服务器作为跳板,从而达到访问内网服务器的目的。
如下图所示,服务器 A 存在 SSRF 漏洞可被攻击者访问,内网中的其他服务器不能被攻击者直接访问,攻击者就可以向服务器 A 发送请求,服务器 A 再向内部服务器发送请求,内部服务器返回数据给服务器 A,服务器 A 再将内部服务器的响应数据返回给攻击者,服务器 A 作为中间人被攻击者利用,从而达到攻击者的目的。
SSRF 漏洞常见攻击类型
本地敏感数据窃取
利用 file 协议可以访问 Web 本地文件。如下图所示,在 url 后面拼接本地服务器文件地址(提前在 C:\Users\Public 下创建一个文件 test.txt,写入内容“This is a test for SSRF!”),即可读取本地文件内容。
端口探测
在我们利用 SSRF 漏洞去攻击内网服务器时,并不知道内网中有什么样的应用和 IP,也不知道开放了什么端口以及端口对应的服务,此时我们可以利用 SSRF 漏洞先对内网做 IP+端口的扫描。端口的开放、关闭状态不同,响应的返回时间也会有差别,据此就可以判断端口的开放状态。
如下图所示,不同的端口响应时间不同,如果端口的响应时间明显少于其他端口,则该端口很有可能是开放状态。
SSRF 攻击总结
SSRF 攻击测试思路
SSRF 漏洞挖掘一般有两种思路,一种是黑盒的方法,另一种是白盒的方法。
黑盒的方法是找到所有调用外部资源的场景,进行漏洞排查,主要排查点包括
图片加载下载
社交分享功能
文章收藏功能
网站采集
未公开的 api 接口
从远程服务器请求资源
白盒的方法是从项目支持的网络协议、项目中使用的发起网络请求的类和 API 以及访问地址中是否有外部可控的变量三个方面进行排查。常见的协议有 file、ftp、http、https 等,关注能够利用上述协议发起网络请求的类,然后关注传入的变量是否外部可控,如果外部可控则可能存在问题。
常见的防护措施
网络层面,在 URL 中过滤掉内网 IP,如 localhost 等。
应用层面,过滤掉不常用且有危险的协议,对返回的内容及报错信息做好处理避免泄露敏感信息,以及对内部访问做二次认证等。
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/4e1b64bdc51d757bdab332119】。文章转载请联系作者。
评论