GKCTF2020EZ三剑客-EzWeb

知识点

内网ssrf 打 redis服务 、结合gopher协议

解题

11.png

题目打开是一个输入框,可以提交url,这里我想到可能是文件包含或者SSRF,我尝试了一下 ?url=../../../etc/passwd 被ban了,然后尝试用file:///var/www/html/index.php 发现也读取不了,这里可能把file://协议 也给ban了,但是用file:/var/www/html/index.php 绕过去了。。

然后读到index.php源代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
echo curl_exec($ch);
curl_close($ch);
}

if(isset($_GET['submit'])){
$url = $_GET['url'];
//echo $url."\n";
if(preg_match('/file\:\/\/|dict|\.\.\/|127.0.0.1|localhost/is', $url,$match))
{
//var_dump($match);
die('别这样');
}
curl($url);
}
if(isset($_GET['secret'])){
system('ifconfig');
}
?>

可以看到有一个curl命令,另外我们尝试访问一下 ?secret,得到:

12.png

很显然,这个告诉了我们IP,很大概率就是SSRF打内网了。

我们用bp 扫一下存活的主机:

13.png

发现IP为173.84.103.12 的主机是突破口,并给了提示,可能需要利用到一个服务,可能是Mysql的3306,也可能是Redis的6379,我们还是用来爆破一下,最后确定是6379,这里我们用SSRF来打Redis,有一篇文章:

https://www.redteaming.top/2019/07/15/%E6%B5%85%E6%9E%90Redis%E4%B8%ADSSRF%E7%9A%84%E5%88%A9%E7%94%A8/

利用gopher协议 去给Redis 发送 RESP格式的数据包,来本地生成一个shell,然后访问这个Shell拿到Flag