ssrf漏洞形成
SSRF(Server-Side Request Forgery:服务器端请求伪造)漏洞形成的原因主要是服务器端所提供的接口中包含了所要请求的内容的URL参数,并且未对客户端所传输过来的URL参数进行过滤
ssrf实现
本次ssrf于Pikachu靶场上实现
我们可以先拉取镜像
docker run -d -p 8765:80 8023/pikachu-expect:latest
拉取成功并重启docker,通过8765端口就可以实现本地登录了
在ssrf概述中有一些常用的ssrf函数
file_get_contents() 把整个文件读入一个字符串中。
fsockopen() 函数打开一个 Internet 或 Unix 域套接字连接。
curl_exec()执行指定 curl会话。
ssrf(curl)
由于curl支持多种协议,可以用来访问百度
url=http://www.baidu.com
利用dict协议探测内网端口和一些服务
url=dict://127.0.0.1:3306
如fastcgi,若存在则可以实现RCE;redis未授权访问:可以实现写入webshell物理路径、写入任务计划书->反弹shell、写入公钥直接登录服务器。
dict 协议是一个在线网络字典协议,这个协议是用来架设一个字典服务的。不过貌似用的比较少,所以网上基本没啥资料(包括谷歌上)。可以看到用这个协议架设的服务可以用 telnet 来登陆,说明这个协议应该是基于 tcp 协议开发的。
利用file协议读取内网文件内容
url=file:///etc/passwd
利用gopher协议发送http get和http post请求
该协议危害最大,ssrf漏洞必须用到的协议