Watchbird是一個專門爲AWD而生的PHP防火牆,採用純PHP+JS+CSS編寫而成,單文件設計模式,無任何外部依賴,其特點有將原始請求包拼湊出來而實現的內網轉發,基於putenv和ld_preload的命令執行保護,一個漂亮的前端以及流量重放功能.

工具安裝

廣大研究人員可以使用下列命令直接將項目源碼克隆至本地

git clone https://github.com/leohearts/awd-watchbird.git

工具部署

1.進入下載好的文件夾目錄 
2.編譯waf.c生成.so文件,參考命令:gcc waf.c -shared -fPIC -o waf.so 
3.將waf.so,watchbird.php文件存放在/var/www/html或其他目錄中 
4.訪問任意啓用了waf的文件, 參數?watchbird=ui打開watchbird控制檯, 創建一個初始密碼並進行相關配置 
5.將以下代碼放入需要啓用waf的php腳本的第一行 <?php include_once “/var/www/html/watchbird.php” ?>6.enjoy it!

功能介紹

易於配置(單文件, 無需加載外部js/css)

可以隨時開啓/關閉某項防禦

基本防禦:

數據庫注入(sql injection)

文件上傳(upload)

文件包含(lfi)

flag關鍵字

PHP反序列化(unserialize)

命令執行(rce)

分佈式拒絕服務攻擊(ddos)

請求頭,請求參數(GET/POST)關鍵字

特殊字符

深度防禦:

響應檢測/反向代理(默認將流量發送至本地服務器自檢,可配置代理服務器IP及端口實現反代功能)

響應flag檢測並返回虛假flag

基於open_basedir的PHP文件操作保護

基於LD_PRELOAD的指令執行保護

網頁控制檯:

功能開關及配置

實時日誌查看

日誌流量重放, 可廣播流量至指定網段

RCE/文件上傳/深度檢測 防禦通知(由於chrome無法允許不安全的網站(無SSL證書)顯示通知,請使用Firefox並修改about:config中dom.webnotifications.allowinsecure爲true)

工具起源

一開始做這個工具是因爲即將參加awd的線下賽而又沒有好用的waf,網上的waf無法滿足自己的需求於是就開始着寫自己的waf,一開始的構想很簡單,我從網上找到了一份awd的簡單waf(所以你可能會在源碼的某處發現似曾熟悉的代碼),然後實現了GET/POST/請求頭關鍵字檢測,文件上傳檢測的功能(留了個trick,上傳php等惡意文件會提示上傳成功),後面又加入了防ddos的功能(原理很簡陋,就是記錄每秒某個IP的訪問次數,超過某個次數就直接die)

到後來leohearts看到了我的waf並且開始參與這個waf的編寫工作,我們構想通過純PHP的代碼將原始請求包重新拼湊起來,最後將這個請求包發給自身完成自檢或發送到其他靶機實現內網轉發的功能,這個功能一旦實現,無疑會非常強大,我們經歷了很多問題,比如BOM頭,分塊運輸,如何獲取原始的multipart/form-data等等,幸好我們最終成功實現了這個功能,也是本waf最亮眼的功能–內網轉發.

過了一段時間後,leohearts的一個提議讓我們重新回到waf的編寫工作:基於putenv和ld_preload的命令執行保護.經由他手這個waf又實現了一個漂亮的前端方便使用人員對waf的控制,我們的靈感不斷迸發,又相繼實現了基於open_basedir的文件操作保護(防止使用php讀取/flag),與命令執行保護構成了內外的雙重防護,最後我們實現了流量重放與批量提交flag的功能.

工具預覽

相關文章