SSRF 服务器请求伪造
漏洞介绍
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,下载等等。
漏洞危害
- 通过该漏洞可访问到内网机器做扫描,
- 获取到外网无法访问的内网站点或信息
漏洞原理
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。很多 Web 应用都提供了从其他服务器上获取数据的功能。使用用户指定的 URL,Web 应用可以获取图片,下载文件,读取文件内容等。这个功能如果被恶意使用,可以利用存在缺陷的 web 应用作为代理攻击远程和本地服务器。
漏洞复现
防护方法
成因:模拟服务器对其他服务器资源进行请求,没有做合法性验证。
利用:构造恶意内网 IP 做探测,或者使用其余所支持的协议对其余服务进行攻击。
防御:禁止跳转,限制协议,内外网限制,URL 限制。
- 统一错误信息,避免用户可以根据错误信息来判断远程服务器端口状态
- 限制请求的端口为 HTTP 常用的端口,比如 80,443,8080,8088 等
- 黑名单内网 IP。
- 禁用不需要的协议,仅仅允许 HTTP 和 HTTPS.
应用场景
一般出现在有调用外部资源的场景中,如社交服务分享功能,图片识别服务 网站采集服务远程资源请求 文件处理服务
内网探测
指纹识别
各个协议调用探针: http,file,dict,ftp,gopher 等
http://192.168.x.x/phpmyadmin/
file:///D:/xx.txt
ftp://192.168.x.x:21
dict://192.168.x.x:3306/info
ssrf 绕过
绕过:使用不同协议,针对 IP,IP 格式的绕过,针对 URL,恶意 URL 增添其他字符,@之类的。302 跳转+dns rebindding
- @ http://www.baidu.com@anantest.com
- IP 地址转化成 10 进制 (也换成八 十六进制)
192.168.1.51 = 3232235827
转换链接:https://tool.520101.com/wangluo/jinzhizhuanhuan
- xip.io 绕过
127.0.0.1.xip.io --à127.0.0.1
www.127.0.0.1.xip.io --à127.0.0.1
Haha.127.0.0.1.xip.io --à127.0.0.1
Haha.xixi.127.0.0.1.xip.io --à127.0.0.1
ip 特殊写法 windows 0 代表 0.0.0.0 linux 代表 127.0.0.1 如某些情况下 http://0 访问的是http://172.0.0.1
POC
总结
参考引用
SSRF 漏洞(非常详细)
https://my.oschina.net/u/4610683/blog/4812116