上QQ阅读APP看书,第一时间看更新
4.4 实例
XDCTF(LCTF)2015中Web 300就是一道与SSRF相关的题目。
首先,通过file协议读取源代码,具体如下:
// file://index.php <?php if (isset($_GET['link'])) { $link = $_GET['link']; // disable sleep if (strpos(strtolower($link), 'sleep') || strpos(strtolower($link), 'benchmark')) { die('No sleep.'); } if (strpos($link,"http://") === 0) { // http $curlobj = curl_init($link); curl_setopt($curlobj, CURLOPT_HEADER, 0); curl_setopt($curlobj, CURLOPT_PROTOCOLS, CURLPROTO_HTTP); curl_setopt($curlobj, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($curlobj, CURLOPT_TIMEOUT, 5); $content = curl_exec($curlobj); curl_close($curlobj); echo $content; } elseif (strpos($link,"file://") === 0) { // file echo file_get_contents(substr($link, 7)); } } else { echo<<<EOF
继续读取系统敏感文件,/etc/hosts文件内容如下:
# The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.0.1 9bd5688225d90ff2a06e2ee1f1665f40.xdctf.com
可见,在hosts文件中本机IP还绑定了另外一个域名,由此可以推测这台服务器上一定还有其他的网站。
直接通过SSRF漏洞请求域名,发现与直接通过IP访问并没有区别,考虑出题人可能会将HTTP服务开在其他端口,因此利用SSRF漏洞对本机进行端口扫描。扫描后发现本机3389端口处于开放状态,带上域名访问发现是一个Discuz!7.2的论坛。
利用Discuz!7.2的faq.php中的SQL注入漏洞,读取数据库内容发现管理员admin的密码即为flag。