SSRF是服务器请求伪造,web应用程序提供从其他服务器获取数据的功能,使用指定用户的url可以下载、查看一下数据,如果没有对目标地址做过滤与限制。攻击者就可以利用这台服务器去攻击与他处于同一内网的其他服务器。
漏洞危害1. 扫描内网设备端口
2. 内网web应用指纹识别
3. 读取本地文件
4. 攻击内网网站
漏洞检测当我们发现一个数据包中有参数是一个url地址,或者是重定向到其他地址时,就有可能存在SSRF漏洞,我们可以将url地址改为本地127.0.0.1或者内网的地址进行尝试。
漏洞利用 1. 针对服务器本身的ssrf应用程序允许来自本地计算机的任何用户在不登录的情况下进行管理访问,也是为了灾难恢复的目的。
2. 针对其他后端系统的ssrf应用程序服务器能够与用户无法直接访问的其他后端系统进行交互,就是与这台服务器处于同一内网的其他服务器,同一内网环境下,无需身份验证就可以访问其他系统的一些功能。
3. 盲注SSRF我们可以利用存在漏洞的服务器,向与他处于同一内网的其他服务器发送http请求时,但是请求并没有返回到前端页面,这时我们就要盲SSRF注入。
盲注的利用还是要利用OOB,带外通道技术:让存在漏洞的设备向我们的vps发送http请求,在我们的vps中根据访问日志信息,就可以看到我们需要的数据。
绕过方法 1. 绕过黑名单
应用程序阻止包含127.0.0.1和localhost的主机名,我们可以将主机名转换为十进制或者十六进制,或者利用大小写、url编码等来绕过被阻止的字符串。
127.0.0.1 可以替换为:2. 绕过白名单2130706433
、017700000001
或127.1
应用程序只允许输入白名单中的值,利用url解析不一致来绕过。
expected-host是攻击者要攻击的主机。
evil-host是正常能够访问数据的主机名
使用@3. 利用后端HTTP请求API支持重定向绕过
https://expected-host@evil-host
使用#
https://evil-host#expected-host
用户提交的url会经过应用程序严格验证,不会导致ssrf的发生,如果用于发出后端HTTP请求的API支持重定向,攻击者就可以构造满足严格验证的url,在重定向位置进行攻击。
前面url是经过严格过滤的,但是重定向地址没有过滤。
stockApi=http://weliketoshop.net/product/nextProduct?currentProductId=6&path=http://192.168.0.68/admin
漏洞防御
1. 限制协议:
仅允许http或者https请求
2. 限制目标IP地址:
仅允许访问正常用户访问的服务地址。
3. 限制端口:
限制请求的端口为常用的端口:80、443、8080等端口
4. 过滤返回信息和统一错误页面:
避免攻击者可以通过错误信息来判断远端服务器的端口开启状态。