
Bughound 是一款开源的静态代码分析工具,能够分析你的代码并将结果发送到 Elasticsearch 和 Kibana,从而让你获得代码中潜在漏洞的有用洞察。
Bughound 自带预配置的 Elasticsearch 和 Kibana Docker 镜像,其中包含为你发现的结果量身定制的仪表板。
你可以检测多种类型的漏洞,例如:
目前 Bughound 能够分析 PHP 和 JAVA 代码,并包含这些语言的一组危险函数。
随着时间推移,我会确保不断添加更多函数/语言的支持,但目前主要精力放在项目的稳定性上。
请注意,Bughound 的结果并非 100% 准确,它旨在帮助你在分析过程中识别潜在的弱点,以便进一步调查。
首先,Bughound 会根据你想要审计的文件扩展名构建项目内所有文件的列表,然后读取每个文件并尝试查找项目中语言预定义的任何不安全函数。
分析阶段依赖于预配置的正则表达式和一些自定义文本匹配来检测潜在漏洞,因此再次强调,你需要进行手动分析,以检查这些发现是否可利用。
最后,它将结果发送到 Bughound Docker 镜像,该镜像带有预配置的 Elasticsearch 和 Kibana,包含为你发现的结果定制的仪表板。
仪表板会提供有关发现的详细信息,例如:
此外,使用 Kibana,你将能够查看潜在的易受攻击代码片段,以便开始进行分析和追踪阶段,判断其是否可利用。
当然,如果你愿意,也可以使用自己的 ELK 栈,Bughound 会为你完成初始配置,但此时你将无法获得预配置的仪表板。
你可以使用以下命令安装运行 Bughound 所需的所有依赖:
pip3 install -r requirements.txt
这将确保所有依赖都已安装。
此外,你需要安装 Docker 才能运行 Bughound 镜像,有关更多信息,请参见下一节!
如果你想使用自己的 Elasticsearch 和 Kibana 实例,请跳过 Docker 安装步骤
请确保使用以下命令获取最新版本的 Bughound:
git clone https://github.com/mhaskar/Bughound
安装完上述依赖后,你可以使用以下命令运行 Bughound:
./bughound.py
你将看到 Bughound 的主屏幕。
┌─[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]
└──╼ $
要安装 Bughound Docker 镜像,只需执行以下操作:
docker pull bughound/bughound
这将拉取最新版本的镜像并保存到你的机器上。
拉取镜像后,我们可以使用以下命令运行它:
docker run --name bughound -p5601:5601 -p 9200:9200 bughound/bughound
这将在名为 bughound 的新容器中运行镜像,并暴露 Bughound 与 Elasticsearch 和 Kibana 通信所需的主机端口。
你可能需要增加最大虚拟内存才能使用该镜像,因此请确保运行以下命令:
sysctl -w vm.max_map_count=262144
完成这两项操作后,你就可以开始使用 Bughound 了!
要开始对代码进行分析,你应该使用 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 仓库拉取远程项目,如下所示:
./bughound.py --git https://github.com/DummyCode/DummyProject --language php --extension .php --name dummyproject
Bughound 会为你克隆代码并保存在 projects 目录中,然后进行扫描。
如果你决定使用官方的 Bughound Docker 镜像,你将获得几个即开即用的仪表板,帮助你进行分析。
目前可用的仪表板包括:
这些仪表板将提供代码中发现函数和代码片段的统计数据,以便你开始分析过程。
有关 Bughound 的更多信息,请查看以下文章:
本项目基于 GPL-3.0 许可证授权 - 详情请参阅 LICENSE 文件。