CTF-WAF
AWD介绍
- CTF中的线下赛又被称为AWD(attack with defence)
- 对于选手的攻击能力,防御能力以及团队合作能力都有很高考验
- 比赛中有多只队伍,每个队伍维护多台服务器,服务器中存在多个漏洞,利用漏洞攻击其他队伍可以进行得分,修复漏洞可以避免被其他队伍攻击失分
- 初始状态所有队伍拥有一台相同的服务器(对于同一个题目来说),得到对方服务器中的flag并提交代表攻击成功,攻击对手的同时做好防御。
例如:
- 提供的主机环境一般是liunx,具体的发行版一般以ubantu和centos为主,正规的主办方会尽可能修补操作系统中存在的漏洞
- 一般不给root权限,只给一个能修改代码的低权限用户
比赛流程
开始入场时,首先配置本地的网络环境,一般ip是静态配置的,每个队都会拿到一个初始的说明材料。
主办方可能不给提供外网访问,需要自带外网连接设备,注意可能需要设置静态路由,不然双网可能不能同时访问。
比赛开始阶段,选手可能会拿到所有目标(包括靶场和flag服务器)的ip地址和访问端口,以及他们要维护的服务器的ssh用户名和密码。选手需要连上自己的服务器做一些基本的安全配置和代码、数据库备份。
比赛中期,选手通过审计代码中的漏洞,尝试去攻击其他队伍,获取flag,留好后门
比赛过程中可能遭受其他队伍的攻击,需要恢复代码、数据库,清除后门
分工协作
攻击、防御、运维
- 攻击-攻击对手的服务
- 在找到漏洞,修补完成的基础上,尽量攻击别人
- 要求现场快速根据漏洞写出利用程序,读取攻击flag
- 攻击需要自动化,同时攻击x个对手,攻击成功要自动提交flag获得分数
- 攻击-分析流量直接反击
- 由于快速攻击占据先机非常重要,分析完漏洞写攻击可能比对手慢很多
- 直接从对手的攻击流量中学习并直接根据流量反击则快速很多
- 需要一个快速通过丢分定位攻击流量并学习的机制
- 防御-修补自己的服务
- 针对逻辑进行修补
- 针对危险函数修补
- 修补服务可能造成无法通过主办方的可用性检查
- 对方的攻击也有可能造成服务器失效
- 运维
- 快速熟悉服务器配置
- 摸清网络主机
- 备份数据
- 防止服务被恶意中断
- 定时下载分析流量
CTF-WAF
描述
针对CTF线下AWD比赛临时开发的WAF,能够拦截XSS、SQl、反序列化、菜刀/蚁剑、以及一些CTF常见的危险函数流量。可以绕过对页面检测的check,拦截返回正常页面的html。并且能够对简单payload进行流量转发,自动反打设置好的IP。如果比赛禁止使用通防也可以一键关闭通防,作为流量监控审计所用。
目录结构
CTF_WAF.php(WAF主要文件)
waflog(文件夹)
………ip.txt(需要反打的ip)
………log.php(日志审计系统)
使用方法
- 将
CTF_WAF.php
包含进需要保护的文件 - 开启
WAF
开关(CTF_WAF.php
代码27行),设置返回页面(CTF_WAF.php
代码26行),
1 | $this->Waf_switch=1;//通防开启 |
设置需要反打(流量转发)的主机,在
waflog/ip.txt
模拟对本地主机进行攻击,可以发现并不会返回flag,说明对payload拦截成功
查看
waflog
文件夹下发现生成了logs.txt和flag.txt说明生成了日志文件和flag文件,打开即可看到ip对应的flag修改日志系统密码
/waflog/log.php
代码4行,修改密码
1 | $passwd="admin";//修改密码 |
登陆后台发现记录了攻击payload。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment