安全矩阵

 找回密码
 立即注册
搜索
查看: 3242|回复: 0

AWD 常规流程和操作

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-12-9 15:04:39 | 显示全部楼层 |阅读模式
原文链接:AWD 常规流程和操作

一、简介AWD(Attack With Defence,攻防兼备),也就是说你即是一个黑客(攻击者),也是一个管理员(保护自己的主机)。
   在比赛中,我们既需要维护自己的主机,又需要进行攻击。我们维护的主机中存在多个漏洞,需要修复这些漏洞来防止其他队伍得分,同时可以利用这些漏洞攻击其他队伍进行得分。
   服务器(多数为Linux)某处存在 flag(一般在根目录下),获取 flag 的方式有两种:
  (1)本地 flag 文件
这种方式需要我们找到这个 flag 文件,然后 cat it。
  (2)访问flag服务器
这种方式是通过使用 curl 命令获取的。curl http://xxx/get-flag
二、比赛方式 && 相关赛制1、Web 服务器主办方会给每个队伍分配一台 Web 服务器,一般各队伍的 web 服务器是一样的,并且一般 Web 服务器为 Linux 系统。
2、flag获取方式(1)需要找到 flag文件,一般在根目录,通过 cat flag 文件获取
(2)去flag 服务器获取,通过curl 命令
3、轮次(1)主办方会设置一定的时间为一轮,比如:设置 10分钟为一轮。
(2)每一轮都会更新一次flag,在这轮中 flag 不变,flag 只能提交一次,就是说一轮只能攻击一个队伍一次。
4、得分及扣分规则各队一般都有自己的初始分数,flag一旦被其他队伍拿走,该队扣除一定积分,同理获得其他队伍的flag后得到一定的积分。
5、宕机主办方会对每个队伍的服务进行check,如果服务宕机会被扣除一定分数。
扣分规则:
(1)扣除的分数由服务check正常的队伍均分,比如:一共10支队伍,只有一支队伍宕机,那么该队伍一轮扣除的分数为 扣除分值*9,所以一般宕机扣除的分数要比正常被攻击丢失的分数还要高。
注:会被揍的操作是,如果自己队伍得到了一个所有队伍都没有修改的漏洞,那么让其他所有队伍都宕机,自己队伍会得到多少分数自己算去,这个这个被打了概不负责。
6、防护时间防护时间主要用于对我们自己主机的进行维护,在防护时间中无法对其他队伍发起攻击,我们可以利用这个时间做好防护,查找漏洞,准备好批量攻击的相关脚本,在正式开始时可以第一时间进行攻击。
注:有的比赛没有防护时间。
三、网络拓扑

上图为比赛中常见的网络示意图:
1、一般每个队伍一个路由器,如上图所示;或者每个队伍一个 VLAN。队伍与队伍之间是不互通的。
2、所有队伍的服务器都是在对抗区的,我们可以连接所有队伍的服务器。
(1)有的比赛需要我们去发现其他队伍的主机,就是我们只知道自己队伍主机的 IP 地址,其他队伍的 IP 地址需要扫描发现;
我们可以使用 nmap、masscan、httpscan等去发现,一般在一个 C段中,或者在一个 B段中。
https://github.com/zer0h/httpscan  https://github.com/Kit4y/httpscan-python3
(2)有的比赛会告诉我们其他队伍服务器的 IP 地址。
注:有的比赛会告诉我们自己队伍的 IP 地址,但是不给我们 SSH 连接帐户和密码,这个就需要我们事先准备好爆破工具了。
3、一般比赛中会禁止 ARP 攻击,以及禁止攻击 比赛平台。
大家要有比赛精神不要捣蛋让大家都没得玩儿。
四、运维1、帐户比赛中我们需要注意的账号信息有:
(1)CTF 帐户
这个为我们登录我们自己队伍服务器的帐户,一般为低权帐户,没有 sudo 权限(也会有例外的惊喜哦)。
关于此账户一般会有以下两种情况:
①、所有队伍的帐号和密码都一样
②、所有队伍的帐户和密码是独有的,注意保护好自己队伍的帐户和密码。
所以大家在比赛前准备好批量修改 SSH 密码的脚本,如:https://github.com/xnianq/awd-frame
(2)www-data 账户
此帐户为 Apache的运行帐户,关于 Apache 的运行帐户也有可能会被修改为以上的 CTF 帐户。
(3)root 帐户
赛方维护使用帐户,可能会存在系统级别的弱口令哦!
(4)隐藏帐户
cat /etc/passwd 查看是否有隐藏帐户。
2、运维工具(1)ssh工具
SSH 连接工具,用于管理我们的服务器。大家需要在比赛开始前准备好,常用的有 Xshell、MobaXterm、putty等,看大家习惯。
(2) ftp 工具
Xftp、WinSCP、FileZilla等,用于文件传输。
3、备份备份网站源码以及数据库是比赛开始第一步需要做的事情,一旦自己网站被改挂掉了,或者被人删掉了,能够快速恢复。除此之外,我们还可以对源码进行代码审计找到漏洞进行攻击。
(1)查找 Web 根目录
①、一般 Apache 中间件,Web 根目录为 /var/www/html
②、浏览器访问查看是否有 Web 应用,可以找某个 css文件,或者js文件,然后使用 find 命令查找。
(2)备份网站源码
①、scp 命令
scp -r /var/www/html /tmp
scp 命令优点:可以保留原始文件的权限信息。

②、tar 命令
到 Web 根目录下执行:tar -zcvf www.tar.gz * 即可打包 Web 目录下的所有文件。

③、使用 ftp 工具下载到本地
这里我使用的是 FinalShell 进行 的备份。

(3)备份数据库
①、查找数据库配置文件
可以使用 find 命令结合 xargs 进行搜索,也可以去查找相关文档,或者去目录里查看。
find /var/www/html -name "*.php" |xargs egrep '3306|localhost|127.0.0.1'

②、获取数据库连接用户和密码

③、备份数据库
mysqldump -uroot -p ctf > /tmp/ctf.sql//备份数据库,保存到指定的位置。
注:备份数据库需要有权限,如果没权限会备份失败

其他数据库管理命令在下一步中有讲解。
4、查看是否有其他 Web 应用(1)使用 netstat  查看端口情况
通过端口信息,我们不仅仅能够得到一些 Web信息,同时还可以找到一些数据库的相关信息,防止数据库弱口令的情况下,还开启了外联,这样其它队伍就可以直接连接上我们的数据库了。

(2)从 Web 目录中查看
Linux 中默认 Web 目录一般为:
/var/www/html
其他的 Web 目录需要我查找了,查找方式见下面的查看 Web 应用。
五、获得 Web 应用相关信息1、查找后门在比赛中,有的比赛会为了降低难度而预留后门,所以我们可以利用预留后门快速打一波。
(1)命令查找
find /var/www/html -name "*.php" |xargs egrep 'assert|eval|phpinfo\(\)|\(base64_decoolcode|shell_exec|passthru|file_put_contents\(\.\*\$|base64_decode\('
(2)D盾查找后门
D盾使用很简单,直接把源码拖进去就可以了。

找到后直接注释掉或者删掉就可以了。
同时我们可以让我们队伍的攻击手利用这个后门开始攻击了。
2、数据库(1)查看用户权限,如果权限过高,需要降权。
如果是 root 用户,我们也可以新建一个用户,然后修改网站配置文件,这样来降权。
show grants     // 查看当前用户权限
show grants for ctf@localhost;   //查看指定用户权限

②、修改用户权限
revoke delete,drop on ctf.* from 'ctf'@'localhost';
flush privileges;
(2)恢复数据库
CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
例如:
create database ctf;
use ctf;
source /tmp/ctf.sql
(3)修改数据库用户密码
set password for 用户名@localhost = password('新密码');

(4)网站后台的密码
①、从数据库中获取后台的用户名和密码
②、前台猜测弱口令
③、爆破
④、修改后台弱口令,可以直接登录后台更改
⑤、直接修改数据库
如果自己网站的管理员密码被其他队伍改了,那么我们可以根据密码的加密规则直接从数据库中修改,注意要符号加密规则,md5 是否加盐要看代码。
3、查看 Web 应用(1)通过根目录文件,查看是否为某种 cms。
(2)查看 Web 目录,然后根据根目录中的文件来查找是否能够获取到 web应用是否是某种 cms框架。
(3)根据 前台页面查看,识别是否为 某种 CMS 框架,AWD 题目设置 一般为 开源 CMS 框架或者修改后的 CMS 框架,或者是自己编写的一个 web应用。
4、白盒审计关于白盒代码审计,我们需要知道这是比赛,需要在有限的时间内发现漏洞。
六、防护1、文件监控文件监控可以看到 Web 目录中所有文件被修改的情况,新上传的文件也会被删除,能够有效的防止留后门。
2、流量监控(这是耍赖,大佬们可以从流量中分析出 EXP)
(1)tcpdump(如果可以使用的话)
需要root权限
(2)weblogger
https://github.com/wupco/weblogger

3、假的 flag流量转发
4、修改权限(1)chattr
chattr 可以禁止其他队伍对我们网站的文件进行修改,以及上次木马等操作,但是需要root权限。
(2)chmod
对一些文件上传 getshell 的漏洞,我们可以取消上传目录写文件的权限,这样简单粗暴的方式还是很有效的。
5、日志分析日志分析得看比赛了,有的比赛我们有查看日志权限,有的比赛没有。如果有查看日志的权限我们可以对日志进行分析,来找到对方 getshell 的 payload,这样就可以捡漏洞了。并且我们还可以分析出主办方的 check 来源,设置一个白名单这样其他队伍就不能访问我们的网站了。
6、iptables需要 root权限,很少用到。
7、杀死不死马在 AWD 比赛中 (1)如果 Apache 运行用户是 www-data,而网站根目录的用户是 ctf:ctf, 那么杀死不死马可以使用以下脚本:
<?php
system("ps aux|grep www-data|grep -v grep|awk '{print $2}'|xargs kill -9");
?>
在浏览器中进行访问,然后删除不死马文件即可。浏览器在访问 Web 目录中的文件时用户是 www-data,所以我们可以使用浏览器访问上面的 php文件来杀死不死马。
(2)如果apache运行用户是 ctf,那么杀死不死马,直接运行以下命令即可:ps aux|grep ctf |grep -v grep|awk '{print $2}'|xargs kill -9 或者执行下面的命令 killall apache2
注:awd比赛中第一种情况比较常见。
七、攻击
1、批量修改 ssh如果比赛中所有队伍 ssh 的用户名和密码都一样的话,我们可以使用此批量修改密码的脚本,这样的话可以直接控一波队伍了。
https://github.com/xnianq/awd-frame

2、批量留不死马如果我们找到了预留后门,我们可以使用 批量 留不死马的工具直接攻击一波,同样很香。
这里可以使用 https://github.com/yemoli/yml-AWD-FRAMEWORK 攻击框架
也可以使用 https://github.com/admintony/Prepare-for-AWD里面的小脚本
3、批量获取flag我们自己的后门都留上去了,那 flag 还远么?可以使用 https://github.com/admintony/Prepare-for-AWD里面的小脚本进行批量获取flag。
4、批量提交flag准备好批量提交 flag 的脚本,我们就可以嗑瓜子了,当然我们就不用一个个的手动提交flag了,可以有更多的精力去发现其他漏洞。
现在很多 AWD 比赛可能不止一个Web题目,我批量提交flag之后,就可以对其他题目进行攻击利用了。
5、攻击框架Github 上有很多大佬写好的攻击框架,大家可以自行选择,或者自行编写更适合自己的自动化攻击工具。
https://github.com/Ares-X/AWD-Predator-Framework
https://github.com/yemoli/yml-AWD-FRAMEWORK


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-23 07:14 , Processed in 0.015750 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表