SSRF漏洞简介
(1)SSRF(Server - Side Request Forgery,服务端请求伪造)是一种由攻击者构造的请求,由服务端发起请求的安全漏洞。一般情况下, SSRF攻击的目标是外网无法访问的内部系统(正因为请求是服务端发起的,所以服务端能请求到与自身相连而与外部隔离的内部系统)
(2)SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制
(3)PHP中下面函数的使用不当会导致SSRF:
1.file_get_contents():支持读取远程文件和本地文件,也支持多种协议和php伪协议
2.fsockopen()
3.curl_exec():对传入的url进行请求,然后将请求的结果又返回给了前端
原理介绍
SSRF触发点
(1)有远程图片加载的地方
(2)网站采集、网页抓取的地方
(3)头像的地方
(4)一切要你输入网址的地方和可以输入 IP 的地方
如:http://www.xxxx.com/image?url=http://www.image.com/1jpg
SSRF的危害
(1)对服务器所在的内网进行端口和IP存活性进行扫描,获取一些服务的banner信息等读取本地文件等
(2)对内网WEB应用进行指纹识别,通过访问默认文件实现(Readme 等文件),从而对内网的主机进行攻击(比如Struts2, sQL 注入等)
(3)利用 Redis 未授权访问, HTTP CRLF注入达到get shell
(4)下载内网资源(利用file协议读取本地资源)
(5)进行跳板,无视CDN
SSRF漏洞利用
(1)通过 file 协议读取文件
http://127.0.0.1/http.php?url=file:///C://windows/win.ini
http://lecalhost/http.php?url=file://etc/password
(2)探测内网,探测端口
探测端口
http://127.0.0.1/http.php?url=ftp://127.0.0.1:3306
端口扫描
http://localhost/htp.php?url=dict://127.0.0.1:6666/info