Bubbles~blog

用爱发电

第一次线下awd感悟

最近参加了一下cstc的线下攻防赛,也差不多是我第一次打线下赛,虽然毫无疑问是被打爆了,不过还是有所收获,现在感觉awd还是挺有意思的

这次的比赛给了三台主机,两台web一台pwn,因为我们队伍并木有pwn手,所以也没怎么看,两个web都是php,给的似乎是现成的cms,不过说实话也没怎么仔细看

开场的时候给我们发了平台账号密码与我们的主机密码,ip需要登陆到平台去获取,这里我们也能看到其他队伍的主机地址,大致看了看大家全都在一个c段,这倒是方便了许多,其实前期主要是拼手速的阶段,这点我们做的说实话不怎么样,队里其他师傅也是第一次打线下赛,一开始进入主机准备备份源码,结果tar打包一直失败,不知道什么鬼,后来还是拿MobaXterm直接download下来的,队里还有位师傅的mac连接赛场的网络一直失败,导致我们前期也挺缺人的,拿到源码直接上D盾扫,果然主办方留了几个后门,其实这时候已经有队伍开始得分了,我们动作就比较僵硬,可以说没有一个清晰的规划吧,因为害怕check的检查没敢直接上通防waf,队友先上了个日志记录的脚本,然后我一打开已经满屏的垃圾流量了,这时候我们还没有意识到问题的严重性

然后我们准备利用起来主办方留的后门,这时候一检查,发现其他队伍的后门都已经被删干净了,当时还感慨没想到大家意识还不错,赛后才了解到原来前面的师傅利用后门批量传shell的时候就顺手把后门给删了,真的是很僵硬了

因为比赛的flag是20分钟一轮,放在/home/flag里,需要我们取得这个值提交到平台上,平台会判断这是哪个队的flag然后给你加分给那个队扣分,所以相对来说节奏比较慢,毕竟很多比赛5分钟10分钟就一轮了,这也给了我们喘息的机会

手忙脚乱一阵后我们留意到我们web1的主页竟然访问不了了,直接报500,虽然本来也没法访问,一到主页就给了你一个跳转,显示请使用绑定域名访问,但是访问又没有用,所以当时也是比较懵逼的,事实上这里的web1确实也是个坑。因为害怕check判断的down我们开始排查,毕竟down一次要扣几千分,然后我就看到ps显示跑着好几个不死马,也庆幸我们之前有商量过对付不死马的方法也找了相关的姿势

我们知道通常是www-data用户下跑的web服务,而一般我们被授予的是普通用户权限,所以是没法kill掉web服务的进程或者重启apache等服务的,因为这两者是同级的,这样也就无法遏制不死马的肆虐,也有姿势会让你写脚本不断去删生成的shell或者去建立同名文件夹来绕过内存马里的判断条件等,不过这些其实都不够优雅,也不是那么方便,而且如果内存马使用md5校验等方式,那么建立同名文件的方式也就没用了,这里我们可以想办法得到www-data权限来执行kill -9 -1命令来强制杀死服务下的所有子进程,这里就可以杀死apache的所有子进程而不会动它的主进程,从而杀死内存马,然后再把生成的马删除就不会再出现了,所以我们可以给自己的服务器上一个shell来执行命令,真是急了连我自己的服务器都日,不过事实上比赛里给我们的就是apache的用户权限,是可以直接执行命令的,当时真的是都有点傻,这里我先把所有木马都先备份下来准备分析一波,然后删除木马

这时候才想起来得给服务器上个文件监控的脚本,这个确实给我们帮了大忙,它会检测目录下过去一段时间内是否有文件改动然后备份该文件并将其删除,这里主要用到的命令就是

find -name ‘*.php’ -mmin -10

这样就会找出过去10分钟发生改动的文件,我也先试着运行了一下命令,然后就是一大片木马展示在你眼前,当时的心情真是难以言喻,赶紧备份删马,上监控脚本,其实从这里开始我们就没怎么在web上丢分了,然后我开始分析那些木马,大致就两种,一种非常直白直接的没有混淆的直接就让你看口令的,另一种则是对口令做了MD5
校验,这样你就得去流量里找到他传过来的密码,倒是没看到那些非常猥琐的rsa木马之类的,这也方便了我们进行重放攻击,赶紧写脚本去请求其他主机的对应地址的木马拿flag,这样我们成功地打了一波flag,就这样我们几乎是一直跟在大佬后面混flag,因为收集了很多木马,所以开始的几波收获还算不错,后面一些反应慢的队伍意识过来也删了这些木马收益就开始不断减少了,不过得益于这次比赛的神奇check,虽然我们防御的比较死,但是倒是没被判断过down,而且我们的web1的主页也一直是down的状态,这一点我们也是一直很纳闷,不知道为啥,不过还好没有作死去申请重置,本来想着拿备份覆盖一下,不过上传的时候总是失败,后来也将没管了

倒是我们的pwn服务很意外的down掉了,也不知道是哪队dalao干的,而且纵观全场也没几个队pwn被打down,就让我们很头疼,这一下就是几千分,心痛的要死,赶紧找了个pwn的通防waf挂了上去,还好后来就没怎么掉了

后期就是不断刷flag去提交了,我们的名次倒是也不断在上升,可惜到结束也将到个及格线,还是有点遗憾的,后来也发现web1真正的玄妙在于其8080端口开的另一个web服务存在的注入,这个倒是真的涨见识了,开始还纳闷根目录给了两个项目是要干嘛,可惜后来已经没时间去看了

纵观这次比赛也让我看到了很多不足,,一开始的手忙脚乱让我们丢了很多分,其实这种比赛开始就是拼一个手速,一开始马上给服务上waf上脚本,先做好防守,然后马上准备利用已有的后门传一波内存马,这就是个拼手速的过程,这个可以分工完成,因为一开始很多队可能没来得及删后门,这样就可以成功收割第一波,而我们就没做好这样的准备,虽然赛前倒是看了很多博客做了很多准备,但是真的比赛的时候还是比较蒙蔽的状态,感觉还是太嫩吧,在很多赛棍手里前期简直种马都种出花了,我们自然也是被暴打的那一批,而且也没怎么仔细审洞,防御方式也就比较粗暴,可以说是只适用于比赛的防御方式了,而且因为这个比赛你几乎感受不到的check,甚至我感觉你直接把服务关了都行,实现终极防御

虽然这次awd各种被打爆,不过确实增加了参赛经验,也知道了一上来基本的套路该干啥,起码也得做好分工,后面碰到节奏比较快的比赛可能就没时间容你喘息了,希望后面能不断进步吧