漏洞挖掘之SSRF漏洞
漏洞挖掘之SSRF漏洞
SSRF
漏洞原理
SSRF(Server-Side Request Forgery,服务器端请求伪造)。是⼀种利用服务端发起请求的⼀个安全漏洞。⼀般情况下,SSRF攻击的⽬标是从外网⽆法访问的内部系统。SSRF 形成的原因⼤都是由于服务端提供了从其他服务器应用获取数据的功能且没有对⽬标地址做过滤与限制。
漏洞复现
Pikachu靶场
Discuz3.x全版本SSRF
漏洞验证
https://site.ip138.com/
例如:在url138的页面上访问url链接(ceye.io),在可以ceye.io看到从138发过来的请求
Python编写端口扫描脚本
漏洞危害
- 端口扫描(一般传递的是内网ip地址;扫描端口,探测内网主机,访问一些公网无法访问到的组件:redis)
- 攻击运⾏在内网或本地的有漏洞程序(⽐如溢出);
- 可以对内网Web应用进⾏指纹识别,原理是通过请求默认的文件得到特定的指纹
- 使用网络协议读取本地文件
- DDOS攻击(请求⼤文件,始终保持连接keep-alive always)
常用的协议
Dict协议,字典服务器器协议,dict是基于查询响应的TCP协议,它的⽬标是超越Webster protocol,并允许客⼾端在使用过程中访问更多字典。Dict服务器和客⼾机使用TCP端⼝2628
Gopher协议是互联网上使用的分布型的文件搜集获取网络协议。gopher协议是在HTTP协议出现之前,在internet上常⻅重用的协议,但是现在已经用的很少了
File协议是本地文件传输协议,File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件⼀样
协议名 | 用处 |
---|---|
Gopher协议 | 对⽬标发起攻击的主要协议,主体部分需要进⾏url编码 |
Dict协议 | 探测端口和版本信息 |
FTP协议 | 只能探测是否存在FTP |
HTTP协议 | 用于简单的漏洞验证 |
File协议 | 读取文件 |
漏洞挖掘
寻找相关业务点
- 网页翻译
- 云盘离线下载
- 根据提供的url采集信息,如获取超链接的标题等内容进⾏显⽰,邮件
- 加载远程文件:通过URL地址加载或下载图片,导入远程视频
- 云服务厂商
寻找参数关键字
未公开的api实现以及其他扩展调用URL的功能,可以利用google语法加上这些关键字去寻找SSRF漏洞
filename
share
wap
url
link
src
source
target
u
display
sourceURl
imageURL
domain
……
参考:https://xz.aliyun.com/t/2115
SSRF对于请求内网地址的限制
利用畸形地址
短网址+xip.io组合
如:http://www.aa.com@http😕/127.0.0.1
http://127.0.0.1 (发现不行)(转换短网址不行)->(转换短网址) http://127.0.0.1.xip.io -> http://dwz.date/h6e 发现可以绕过
利用hosts
利用302跳转
- js跳转 (如受害者点击利用链接,跳转到自己的内网地址,爆出信息)
- html的meta标签
- php的header头跳转
- Java
- Django
更改IP的写法
SSRF漏洞中绕过IP限制的⼏种⽅法总结:https://www.freebuf.com/articles/web/135342.html
^10(.([2][0-4]\d|[2][5][0-5]|[01]?\d?\d)){3}$
^172.([1][6-9]|[2]\d|3[01])(.([2][0-4]\d|[2][5][0-5]|[01]?\d?\d)){2}$
^192.168(.([2][0-4]\d|[2][5][0-5]|[01]?\d?\d)){2}$
(1)、8进制格式:0300.0250.0.1
(2)、16进制格式:0xC0.0xA8.0.1
(3)、10进制整数格式:3232235521
(4)、16进制整数格式:0xC0A80001
利用其他协议
- 这⾥需要补充的是,很多情况下,HTTPS不允许请求HTTP
- Fuzz
file
gopher
ftp
...
迎合指定的后缀
比如 网站需要检测图片格式才能进行跳转其他链接,可以构造
http://127.0.0.1/Discuz/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]http://baidu.com/?data=1.jpg[/img]