SSRF是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内部系统.(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
产生条件
由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等.
利用手段:
- 可以对外网、内网、本地进行端口扫描,某些情况下端口的Banner会回显出来(比如3306等)
- 攻击运行在内网或本地的有漏洞程序(比如溢出)
- 可以对内网Web应用进行指纹识别,原理是通过请求默认的文件得到特定的指纹
- 攻击内网或外网有漏洞的Web应用
- 使用file:///协议读取本地文件
危害:
- 加载外部的恶意木马文件执行
- 加载内部的敏感文件程序自身的敏感文件
- 访问内网进行内网端口的扫描,获取内网设备信息,枚举内网服务等
漏洞点:
-
通过url 地址分享文章,例如如下地址:
http://share.xxx.com/index.php?url=http://127.0.0.1 -
通过URL地址加载或下载图片
http://image.xxx.com/image.php?image=http://127.0.0.1 -
图片/文章收藏功能:
http://title.xxx.com/title?title=http://title.xxx.com/as52ps63de -
利用参数中的关键字来查找:
share wap url link src source target u 3g display sourceURl imageURL domain
判断漏洞是否存在的重要前提是,请求的服务器发起的,以下链接即使存在并不一定代表这个请求是服务器发起的。因此前提不满足的情况下,SSRF是不必要考虑的。
http://www.xxx.com/image.php?image=http://www.xxc.com/a.jpg
链接获取后,是由js来获取对应参数交由window.location来处理相关的请求,或者加载到当前的iframe框架中,此时并不存在SSRF ,因为请求是本地发起,并不能产生攻击服务端内网的需求。
简单绕过:
- 限制为http://www.xxx.com 域名时:
可以尝试采用http基本身份认证的方式绕过,http://www.xxx.com@www.xxc.com。
在对@解析域名中,不同的处理函数存在处理差异,例如:
http://www.aaa.com@www.bbb.com@www.ccc.com,在PHP的parse_url函数中会识别www.ccc.com,而在libcurl函数中则识别为www.bbb.com
限制请求IP不能为内网地址:
- 采用短网址绕过,比如百度短地址https://dwz.cn/。
- 采用可以指向任意域名的xip.io,127.0.0.1.xip.io,可以解析为127.0.0.1
- 采用进制转换,127.0.0.1八进制:0177.0.0.1。十六进制:0x7f.0.0.1。十进制:2130706433
其他:
其他绕过形式可以查看:https://www.secpulse.com/archives/65832.html
MS08067安全实验室
Frieza
浙公网安备 33010602011771号