目录
ssrf漏洞形成
ssrf实现
ssrf(curl)
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漏洞必须用到的协议
进入到gopherus redis 选择你要选择的shell(反弹shell/直接写入shell)
以及要写到的根路径,前提是知道网站物理路径(此处默认)
写入webshell
解码后得到的redis,实际上就是把写入的value存储到shell.php,最终写入的webshell落盘到/var/www/html下
看看反弹shell,任务计划的目录选择默认
可以看到写入到/var/spool/cron/的root文件底下了,那么反弹的shell为root权限