本項目收集互聯網各種危害性大的 RCE · 任意文件上傳 · 反序列化 · sql注入 等高危害且能夠獲取到服務器核心權限的漏洞POC/EXP,并集成在 POC bomber 武器庫中,利用大量高危害POC對單個或多個目標進行模糊測試,以此在大量資產中快速獲取發現脆弱性目標,獲取目標服務器權限。適用場景包括但不僅限于以下:
- 紅藍對抗或hvv中幫助紅隊在大量資產中快速找到突破口進入內網
- 內網安全測試,橫向移動
- 利用新型0day對企業資產進行批量評估
簡介
POC bomber 的poc支持weblogic,Tomcat,Apache,jboss,Nginx,struct2,thinkphp2x3x5x,spring,redis,jenkins,php語言漏洞,shiro,泛微OA,致遠OA,通達OA等易受攻擊組件的漏洞檢測,支持調用DNSlog平臺檢測無回顯的rce(包括log4j2的檢測),支持單個目標檢測和批量檢測,程序采用高并發線程池,支持自定義導入poc/exp,并能夠生成漏洞報告
POC bomber默認使用驗證模式進行poc的驗證,如返回結果中attack的值為True時,可以加參數(--attack)進入攻擊模式直接調用exp進行攻擊(需要指定poc文件名),達到一鍵getshell
安裝
git clone https://github.com/tr0uble-mAker/POC-bomber.git cd POC-bomber pip install -r requirements.txt
用法
查看用法: Python/ target=_blank class=infotextkey>Python3 pocbomber.py 模式: 獲取poc/exp信息: python3 pocbomber.py --show 單目標檢測: python3 pocbomber.py -u http://xxx.xxx.xx 批量檢測: python3 pocbomber.py -f url.txt -o report.txt 指定poc檢測: python3 pocbomber.py -f url.txt --poc="thinkphp2_rce.py" exp攻擊模式: python3 pocbomber.py -u 目標url --poc="指定poc文件" --attack 參數: -u --url 目標url -f --file 指定目標url文件 -o --output 指定生成報告的文件(默認不生成報告) -p --poc 指定單個或多個poc進行檢測, 直接傳入poc文件名, 多個poc用(,)分開 -t --thread 指定線程池最大并發數量(默認30) --show 展示poc/exp詳細信息 --attack 使用poc文件中的exp進行攻擊 --dnslog 使用dnslog平臺檢測無回顯漏洞(默認不啟用dnslog,可在配置文件中啟用)
配置文件
/inc/config.py
常見問題
- 程序不安裝requirements.txt就可以直接運行,只依賴requests第三方庫,其他庫安裝不上不影響程序運行,但有些poc會不能檢測
- log4j2命令執行漏洞的檢測:需要添加 --dnslog 參數
- 無回顯漏洞檢測默認使用 dnslog.cn 平臺且默認關閉, 要開啟需前往配置文件將 dnslog_flag 開關置為True
- 需要指定一個poc才能調用--attack攻擊模式
POC編寫規則
- OC bomber支持自定義編寫poc
- poc統一要求python3編寫,具有verify和attack(非必須)兩個函數分別進行驗證和攻擊
漏洞驗證函數(verify)編寫應該滿足以下條件:
1、函數名為 verify , 參數接收目標url的參數
2、函數的返回結果以字典的形式返回并且具有name和vulnerable兩個鍵值,name說明漏洞名稱,vulnerable通過True和False的狀態表明漏洞是否存在
3、如果存在漏洞要將返回字典中vulnerable的值置為True, 并添加目標url, 漏洞利用相關網頁等信息
4、用try方法嘗試驗證,使用request等發送數據包時要設置超時時間, 避免poc會卡死
def verify(url): relsult = { 'name': 'Thinkphp5 5.0.22/5.1.29 Remote Code Execution Vulnerability', 'vulnerable': False, 'attack': False, # 如果有exp支持attack模式將attack的值置為True } try: ...... (用任意方法檢測漏洞) ...... if 存在漏洞: relsult['vulnerable'] = True # 將relsult的vulnerable的值置為True relsult['url'] = url # 返回驗證的url relust['xxxxx'] = 'xxxxx' # 可以添加該漏洞相關來源等信息 ...... return relsult # 將vulnerable值為True的relsult返回 else: # 不存在漏洞 return relsult # 若不存在漏洞將vulnerable值為False的relsult返回 execpt: return relsult
如果有exp可以編寫 attack 函數作為exp攻擊函數。
漏洞攻擊函數(attack)編寫應該滿足以下條件:
1、函數名為 attack , 參數接收目標url的參數
2、并在try中編寫exp代碼進行攻擊, 可以與用戶交互輸入
3、編寫完成后將該漏洞的verify函數返回字典中attack值置為True
4、攻擊成功后返回True,其他原因失敗的話返回False即可
def attack(url): try: ........................................ 攻擊代碼(執行命令或反彈shell上傳木馬等) ........................................ return True except: return False
編寫完成后的poc直接放入 /pocs 目錄下任意位置即可被遞歸調用。
示例
- 驗證模式
python3 pocbomber.py -u http://xxx.xxx

- 攻擊模式
python3 pocbomber.py -u http://xxx.xxx --poc="thinkphp2_rce.py" --attack


—END—