SSRF——介绍利用(不全)
1. SSRF介绍
SSRF(Server-side Request Forge, 服务端请求伪造)。
由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。
2. SSRF的危害
1. 扫内网
2. 向内部任意主机的任意端口发送精心构造的Payload
3. DOS攻击(请求大文件,始终保持连接Keep-Alive Always)
4. 攻击内网的web应用,主要是使用GET参数就可以实现的攻击(比如 struts2,sqli等)
5. 利用file协议读取本地文件等
3.容易出现SSRF的地方
- 转码服务
- 在线翻译
- 图片加载与下载(通过URL地址加载或下载图片)
- 图片、文章收藏功能
- 网站采集、网页抓取的地方。
- 头像的地方。(远程加载头像)
- 一切要你输入网址的地方和可以输入ip的地方。
- 从URL关键字中寻找:
share
、wap
、url
、link
、src
、source
、target
、u
、3g
、display
、sourceURl
、imageURL
、domain
4. SSRF漏洞相关函数和协议
-
函数
file_get_contents()
、fsockopen()
、curl_exec()
、fopen()
、readfile()
等函数使用不当会造成SSRF漏洞 -
协议
(1)file
: 在有回显的情况下,利用 file 协议可以读取任意内容
(2)dict
:泄露安装软件版本信息,查看端口,操作内网redis服务等
(3)gopher
:gopher支持发出GET、POST请求:可以先截获get请求包和post请求包,再构造成符合gopher协议的请求。gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell
(4)http/s
:探测内网主机存活
5. 本题解法
思路
(1) 已知目标服务器可以访问我们输入进去的url。没有任何过滤
(2) 首先探测目标主机开放了哪些端口
最简单的方法:http://127.0.0.1:端口
利用__dict__协议
利用dnslog解析成localhost,从而可以访问localhost
实践
(1) burp抓包爆破地址
(2)结果
(3)得到flag
搞CTF