如果没有一定的攻击基础,以及扎实的开发功底,想要做好防御是不可能的,因此想要在AD类竞赛中做好防御,首先是有足够的基础,这里面的基础有很多,大概包括以下几个方面:
其实防守要做的事情很多,只有好的防守,才有足够的精力去进攻,防守要做的事情大概总结如下:
这里的密码包括
ssh
连接密码,mysql
账户密码,web
应用弱密码等等。
1.修改 ssh
密码一定要快,否则很容易被对手利用脚本直接改掉密码从而失去控制权,当然很多比赛也使用了每个队不同 ssh
登陆的密码,那也可以改一个自己队伍都熟知的密码,但是注意不要又改成弱密码即可。 2.修改 mysql
密码,这个因为每个队伍的内部配置是一样的,所以大家的 mysql
密码一定是一样的,这个密码是存在web应用的配置文件里面的,所以要想得到mysql密码,要先找到web的配置文件,这就考到了对框架开发的熟悉程度,如果机器开放了 mysql
的远程连接,那拿到 mysql
还是有可能很危险的。 3.修改 web
后台密码,这个和上面说的一样,大家的密码都是一样的,这个密码是存在数据库文件里面的,所以需要先备份完数据库以后,才能拿到,然后拿到以后还需要解密,这里也考到了你对框架的熟悉程度,是不是知道这种密码的解密方式,如果你拿到了后台密码,就可以登陆到 web
后台,如果配合后台 getshell
,也可以得到不错的进攻收益。
备份包括web源码,还有数据库文件
具体使用的命令差不多有:
tar -zcf ../1.tar.gz ./
mysqldump --all-databases -uroot -p >../1.sql
这里简单解释一下,为什么要放在上层目录下,其实只要不在当前目录下,就比较方便,你也可以直接放到 tmp
目录下,然后解压 web
目录,就可以得到一个干净完整的web目录,不用担心含有对手中下的木马,然后在找到漏洞之后,直接在这里改掉代码,然后重打包,放回原来的web根目录下,这样就算之前web被攻击,被中下了简单的一句话木马,也可以直接杀掉,但是如果已经被对手中下了内存马,这个时候就需要先杀掉内存马,然后在做上面的恢复操作,否则是没有用的。
.htaccess
,可以强制在每个php文件里面引入记流量的脚本,也是比较好的选择linux
自带的一个命令 crontab
,用到的命令如下:cd /var/www/ && tar -zxvf j.tar.gz
mysql -uroot -proot </var/www/j.sql
这样就能保证每分钟都恢复一下源码和数据库,所以在一分钟以上比较复杂的攻击基本都可以被ban掉,比如一些登陆后台,改模板文件然后拿shell的操作,如果后台是有验证码登陆验证的,这个攻击在比赛中基本对我们无效。
这个也能叫做应急响应吧,其实,这个方面是考的就是开发功底了,能不能快速定位到漏洞点,漏洞产生的根源,如何快速有效的修改,而且不被check掉,都是需要很多经验和技巧才能做好的。 因为是ad比赛,所以有些修改可以是暴力的,比如说你通过流量知道了某个参数是有 ssrf
漏洞的,可以直接拿到 flag
,这个时候你就可以在之前说过的入口文件中,将这个变量直接赋值为空,或者是默认值,只要不影响功能的实现,应该就没有大的问题,总之这个部分就看发挥了,也看你对源码的熟悉程度。
首先简单贴一下大家在比赛中使用很多的内存马的代码:
这个内存马在执行的时候,会销毁自己本身的文件,常驻在内存,然后不断的写入一句话木马,所以这种木马在执行了以后,不容易发现。 所以发现自己被打了以后,可以先尝试 rm -rf xxx.php
,然后在查看是否被删除,如果没有被删除,那很大可能就是中了内存木马。
下面利用docker做一个实验来写一下怎么查杀这个内存木马:
2. 然后我们执行一下内存木马
然后我们很清楚的看到了增加了一条进程,进程id是244,所以到这里我们就可以知道,内存马其实是是apache的进程。
3. 然后我们尝试删除生成的一句话木马: rm-Rfconfig1.php
结果:
4. 这个时候就只能同时杀掉进程和产生的一句话木马,就可以完整的清除这个内存马:
killall -u www-data
killall apache2
这两条可以直接杀掉进程
rm -Rf config1.php
拼接起来就是
killall -u www-data && rm -Rf config1.php
这里为什么要同时删除呢,因为内存马的使用者也想到了这个问题,所以可能有一个脚本,在一直利用写好的一句话木马,重新写入并且激活内存木马
总
结
总之,AD模式是一个很有意思的比赛模式,比赛中可能会遇到很多突发情况,很考验选手的应急反应能力,和快速写脚本处理问题的能力,而且大家不断创新,甚至在比赛中用到了一些新加密套路:
类似于这样的,或者是利用rsa加密的各种各样的木马层出不穷,这也考验了选手们平时的脚本积累,有关进攻以及简单的权限维持,我们下次在写。