AWD简单介绍和搭建AWD平台

AWD简单介绍和搭建AWD平台

何为AWD

比赛中每个队伍维护多台服务器,服务器中存在多个漏洞,利用漏洞攻击其他队伍可以进行得分,修复漏洞可以避免被其他队伍攻击失分。

1、一般分配Web服务器,服务器(多数为Linux)某处存在flag(一般在根目录下)
2、可能会提供一台流量分析虚拟机,可以下载流量文件进行数据分析
3、flag在主办方的设定下每隔一定实践刷新一轮
4、各队一般都有自己的初始分数
5、flag一旦被其他队伍拿走,该队扣除一定积分
6、扣除的积分由获取flag的队伍均分
7、主办方会对每个队伍的服务进行check,服务器宕机扣除本轮flag分数,扣除的分值由服务check正常的队伍均分
8、一般每个队伍会给一个低权限用户,非root权限

AWD 常见比赛规则说明

Attack With Defence,简而言之就是你既是一个hacker,又是一个manager。
比赛形式:一般就是一个ssh对应一个web服务,然后flag五分钟一轮,各队一般都有自己的初始分数,flag被拿会被拿走flag的队伍均分,主办方会对每个队伍的服务进行check,check不过就扣分,扣除的分值由服务check正常的队伍均分。
其中一半比赛以WEB居多,可能会涉及内网安全,攻击和防御大部分为前期培训内容。

前期准备

1、队伍分工明确
2、脚本工具环境完整
3、漏洞POC/EXP库完整
4、安全防御WAF及批量脚本完整

必备操作

1、备份网站文件
2、修改数据库默认密码
3、修改网页登陆端一切弱密码
4、查看是否留有后门账户
5、关闭不必要端口,如远程登陆端口
6、使用命令匹配一句话特性
7、关注是否运行了“特殊”进程
8、权限高可以设置防火墙或者禁止他人修改本目录

搭建AWD平台

1、更换源
这里我使用的是kali进行搭建,将kali的源换成阿里云或者清华的源即可,这里不多介绍

参考文章:https://blog.csdn.net/lina_999/article/details/90635959?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163437049816780265461094%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163437049816780265461094&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-90635959.pc_search_result_cache&utm_term=kali%E6%9B%B4%E6%8D%A2%E6%BA%90&spm=1018.2226.3001.4187

2、安装docker环境
kali这里是自带docker环境的,就不需要再去安装了
3、下载赛题项目

git clone https://github.com/zhl2008/awd-platform


这里可能需要一个小时以上才能下完,项目比较大
4、下载完后进入项目

cd awd-platform


5、下载镜像文件

sudo docker pull zhl2008/web_14.04


这里下载如果过慢就需要去替换一下docker源
6、更改镜像名称

sudo docker tag zhl2008/web_14.04 web_14.04

启动比赛

1、进入awd项目

cd awd-platform

2、创建队伍

python batch.py web_yunnan_simple 3


这里创建了3个队伍,赛题是web_yunnan_simple
3、根据赛题修改check.py(awd-platform/check_server/目录下)文件,找到check类

class check():
    def __init__(self):
        print "checking host: "+host

    def index_check(self):
        res = http('get',host,port,'/','',headers)
        if 'Home' in res:
            return True
        if debug:
            print "[fail!] index_fail"
        return False


    def test_check(self):
        res = http('get',host,port,'/about.php?file=header.php','',headers)
        if 'About' in res:
            return True
        if debug:
            print "[fail!] test_fail"
        return False


    def test_check_2(self):
        headers['Cookie'] = ''
        data = 'key=1'
        res = http('get',host,port,'/services.php',data,headers)
        if 'Services' in res:
            return True
        if debug:
            print "[fail!] test_2_fail"
        return False

4、修改flag刷新时间,同样是check.py文件中,默认120s,2分钟

5、创建好队伍后就可以开始比赛了,输入命令启动比赛

python start.py ./ 3


6、比赛拓扑图

web站点
team1:192.168.109.128:8801
team2:192.168.109.128:8802
team3:192.168.109.128:8803
ssh连接
team1:192.168.109.128:2201
team2:192.168.109.128:2202
team3:192.168.109.128:2203
ssh连接的账号密码在项目下的pass.txt里面

7、访问web站点
team1web站点

其他队伍的web站点与team1队伍完成一致,只是端口不同而已

得分

运行修改后的check.py文件,启动check服务器

在这里可以看到实时分数

如果觉得这个页面太丑的话,可以自己换个页面,我这里用的夜莫离大佬做的页面

计分板源码下载

链接:https://pan.baidu.com/s/1xF9uZpKUZTZt_OOfpoOrOw 
提取码:qwer

计分板文件拷贝至awd-platform下的flag_server文件夹下。要注意将文件score.txt与result.txt文件权限调至777,这样才能刷新出分值。
记分板里面的index.php文件需要将IP换成自己虚拟机的IP

模拟team1攻击team2得分
访问team2web网站

下载发现一个代码执行漏洞
查看根目录下的文件

ls /


发现flag,查看flag内容

cat /flag


提交flag为自己的队伍加分
加分的方法是访问一个为地址并且以get的形式上交flag
http://主机IP地址:8080/flag_file.php?token=teamx&flag=xxxx (x为队伍号)


可以看到team1加了两分,team2减了两分,但是如果是开赛前三十分钟的话是攻击不成功的,前三十分钟为准备阶段

结束比赛

进入项目目录

sudo python stop_clean.py

  • 16
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
利用 mvc 框架,显示和功能分离, 每次比赛的数据都放在到 games 里 ## 目录结构 ├── data # 框架运行所需要的持久化文件 ├── games ├── library │ ├── controller │ │ ├── common │ │ ├── defense │ │ └── exploit │ ├── models │ └── views │ │ ├── common │ │ ├── defense │ │ └── exploit │ ├── common │ ├── defense │ └── exploit ├── config.py ├── README.md └── requirements.txt ## 数据表结构 (语雀完善中) ### poc | 字段名称 | 类型 | 说明 | | :------: | :----------: | :----------------------------------: | | id | int | 索引(自增 id | | name | varchar(30) | 名称 | | type | int(2) | 类型 0 flag 1 webshell 2 systemshell | | os | int | 系统类别 0 php1 python | ### target | 字段名称 | 类型 | 说明 | | :--------------: | :----------: | --------------- | | id | int | 索引(自增 id) | | ip | varchar(30) | 名称 | | is_reach | | 类型 | | is_get_shell | | 系统类别 | | flag | | | | flag_create_time | | | ### 流量 | 字段名称 | 类型 | 说明 | | ---------- | ------------ | --------------- | | id | int | 索引(自增 id) | | message | varchar(30) | 名称 | | type | | 类型 (get post) | | host | | 系统类别 | | source_ip | | | | create_ime | | | -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

super 硕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值