广东省强网杯运维赛部分WP

上周末打了强网杯,某赛道打了第三名拿了二等奖,上午是运维赛,下午是awd。
上午的运维赛出的还可以,我觉得难度相对低一点,一共12道题,到最后基本有一半的人能做出来6-8道左右,本赛道第三-八名全部是8道题。这次拿奖得亏了有pwn👴去修题,我web应急响应做的不如别人多。

吐槽:下午的AWD纯脑瘫,参赛手册写的是AWDP,赛制介绍则是AWD。不一致也就算了,下午AWD只给一道巨难的pwn是什么意思?最后放hint连exp都快放完了,最后只有高校组有1-2支队伍在打,其他赛道全在罚坐。

web运维

反序列化

有一个存在反序列化漏洞的页面,大体意思就是传入参数之后反序列化进行命令执行,题目本身给了waf,只不过关键词比较少。如 blacklist=’\php|flag|system|';自己加一些关键字就好了

1
2
3
4
5
6
7
8
$pattern = "\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile|dumpfile|sub|hex|file_put_contents|file_get_contents|fwrite|curl|system|eval|shell_exec|cat|tac|more|flag|base64|assert|passthru|readfile|php\:\/\/|file\:\/\/|fread|create\_function|php|script|\<\?php|\'|\"|\(|\)|\&";

$back_list = explode("|",$pattern);

foreach($back_list as $hack) {
if(preg_match("/$hack/i", $query)) // 假设用户输入的参数是 $query
die("hack detected!");
}

多加了几个关键字这题的check就过了

不死马

ls -all 看了一下有.2.php,我直接 rm -rf 删完之后这个check点还是没有过,之后又ll看了下发现是不死马。
杀不死马有2种思路,第一种是写脚本无限循环删除,python或者shell或者php脚本都可以,第二种是重启php-fpm服务。这次给的权限比较高,是root,可以直接重启。但是在大部分awd比赛中可能没有重启服务的权限,所以第一种思路是必行的。
附脚本

1
2
3
4
5
 while :
do
rm -rf .3.php;
echo "remove success";
done

上传上去之后chmod u+x 1.sh 然后 nohup ./1.sh &挂着跑就可以了。

phpinfo信息泄露

没啥好说的,删了就行。

后门

把源码搞下来放到D盾查杀,查到了后门,直接删掉就好,还有XXE,文件也是直接删掉就好。

应急响应

挖矿

web就那么几道题我是妹想到的,我以为后面还会放题,专门问了主办方,主办方说一次放完,好吧,那估计是要在其他地方找patch点了。top看了一下,有一个进程的cpu利用率过高,在/home/ctf/mxxx目录下(具体目录名称记不清了)是一个elf文件,同目录下还有json的配置文件,直觉告诉我是挖矿。挖矿程序常在tmp目录写点东西,这里的操作就是首先干掉挖矿进程,然后删掉挖矿程序以及tmp目录下对应的内容,然后查看crontab防止再次下载与自启动。

crontab

crontab这题我应该是妹做出来,异常点是ctf用户的crontab,我是root用户。看了 /var/spool/cron/crontabs没看到啥东西,就没在看。赛后师傅说了下 crontab -user -l 也可以看指定用户的crontab。。学到了

外连socket

netstat -antlp 之后发现有向9999端口外连的行为,然后ps aux 和ps ef 之后看到了命令类似 sh -c python3 -c “__import__(‘os’).system(‘xxxxxx’)”。可以确定是这些进程建立了socket连接,但是找不到具体是谁起了这些进程…就很无奈,杀也杀不掉,这里我的处理方法是把python3的软连接给干掉了。因为通过观察进程发现除了这些外连的没有用py3起的进程。这里其实是有个so文件被修改了,后面pwn的队友修复的。

ssh公钥

ssh 免密登录存放的公钥在~/.ssh/authorized_keys文件里面,由于我们是私钥登录,但是里面有三个公钥,我们只保留了我们私钥对应的公钥,其他公钥全给删了。

总结

这次运维赛相对基础,就当温习一下应急响应了。毕竟只正经做过一次:)