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

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/321008.html
標籤:其他
上一篇:ctfshow-web
下一篇:網路安全漏洞深度剖析
