Bughound:一款基于Elasticsearch的靜態代碼分析工具
關于Bughound
Bughound是一款開源的靜態代碼分析工具,可以幫助廣大研究人員分析自己的代碼,并將結果發送至Elasticsearch和Kibana,以更好地審查代碼中潛在的安全漏洞。
Bughound擁有自己的Elasticsearch和Kibana Docker鏡像,并且經過預配制,提供了儀表盤,可以更好地以可視化的形式查看代碼安全問題。
我們可以使用Bughound檢測多種類型的漏洞,其中包括:
命令注入
XXE
不安全的反序列化
其他
Bughound目前僅支持分析PHP和Java代碼,并且包含了一組針對這些語言的不安全函數。開發人員會在將來增加更多的語言和函數支持。
工具要求
首先,我們需要使用下列命令安裝運行Bughound所需的全部依賴組件:
pip3 install -r requirements.txt
除此之外,為了運行Bugbound鏡像,你還需要安裝好Docker。
工具安裝
廣大研究人員可以使用下列命令來安裝最新版本的Bughound:
git clone https://github.com/mhaskar/Bughound
上述步驟操作完成之后,我們就可以使用下列命令來運行Bughound了:
./bughound.py
運行腳本之后,你將會看到如下所示的操作界面:
┌─[askar@hackbook]─[/opt/bughound]
└──? $./bughound.py
.______ __ __ _______ __ __ ______ __ __ .__ __. _______
| _ \ | | | | / _____|| | | | / __ \ | | | | | \ | | | \
| |_) | | | | | | | __ | |__| | | | | | | | | | | \| | | .--. |
| _ < | | | | | | |_ | | __ | | | | | | | | | | . ` | | | | |
| |_) | | `--' | | |__| | | | | | | `--' | | `--' | | |\ | | '--' |
|______/ \______/ \______| |__| |__| \______/ \______/ |__| \__| |_______/
\ /
oVo
\___XXX___/
__XXXXX__
/__XXXXX__\
/ XXX \
V V1.0 Beta
[+] Example: ./bughound3.py --path vulnerable_code/ --language php --extension .php --name testproject
usage: bughound.py [-h] [--path PATH] [--git GIT] --language LANGUAGE
--extension EXTENSION --name NAME [--verbose [VERBOSE]]
bughound.py: error: argument --language is required
┌─[?]─[askar@hackbook]─[/opt/bughound]
└──? $
Docker鏡像安裝
如需安裝Bughound Docker鏡像,可以直接運行下列命令:
docker pull bughound/bughound
上述命令將會遠程拉取最新版本的Bughound鏡像,并存儲至你的計算機中。
接下來,使用下列命令來運行鏡像:
docker run --name bughound -p5601:5601 -p 9200:9200 bughound/bughound
如果你需要增加最大虛擬內存的話,可以使用下列命令:
sysctl -w vm.max_map_count=262144
工具使用
如需開始分析代碼,你應該使用Bughound.py,該腳本提供了很多操作選項:
┌─[?]─[askar@hackbook]─[/opt/bughound]
└──? $./bughound.py -h
.______ __ __ _______ __ __ ______ __ __ .__ __. _______
| _ \ | | | | / _____|| | | | / __ \ | | | | | \ | | | \
| |_) | | | | | | | __ | |__| | | | | | | | | | | \| | | .--. |
| _ < | | | | | | |_ | | __ | | | | | | | | | | . ` | | | | |
| |_) | | `--' | | |__| | | | | | | `--' | | `--' | | |\ | | '--' |
|______/ \______/ \______| |__| |__| \______/ \______/ |__| \__| |_______/
\ /
oVo
\___XXX___/
__XXXXX__
/__XXXXX__\
/ XXX \
V V1.0 Beta
[+] Example: ./bughound3.py --path vulnerable_code/ --language php --extension .php --name testproject
usage: bughound.py [-h] [--path PATH] [--git GIT] --language LANGUAGE
--extension EXTENSION --name NAME [--verbose [VERBOSE]]
optional arguments:
-h, --help show this help message and exit
--path PATH local path of the source code
--git GIT git repository URL
--language LANGUAGE the used programming language
--extension EXTENSION
extension to search for
--name NAME project name to use
--verbose [VERBOSE] show debugging messages
┌─[askar@hackbook]─[/opt/bughound]
└──? $
掃描本地項目
比如說,你想要掃描一個本地PHP項目,你可以使用下列命令:
./bughound.py --path /opt/dummyproject --language php --extension .php --name dummyproject
該命令將會在Elasticsearch索引下創建一個名為“dummyproject”的新目錄,并爬取本地路徑“/opt/dummyproject”中所有擴展名包含“.php”的所有文件,然后將分析結果發送至Elasticsearch。
掃描遠程Git庫
除此之外,我們也可以使用“—git”參數來掃描一個遠程Git項目庫:
./bughound.py --git https://github.com/DummyCode/DummyProject --language php --extension .php --name dummyproject
Bughound將會自動克隆目標項目庫,并將其存儲至“projects”目錄中,然后對其進行安全掃描與分析。
許可證協議
本項目的開發與發布遵循GPL-3.0開源許可證協議。
項目地址
Bughound:【點擊文末閱讀原文】
參考資料
https://shells.systems/unveiling-bughound-a-static-code-analysis-tool-based-on-elasticsearch
https://docs.docker.com/engine/install/