Bughound:一款基于Elasticsearch的静态代码分析工具

VSole2021-12-09 07:59:16

关于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/

gitelasticsearch
本作品采用《CC 协议》,转载必须注明作者和本文链接
Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。使用Kibana,可以通过各种图表进行高级数据分析及展示。
GoFound 一个golang实现的全文检索引擎,支持持久化和单机亿级数据毫秒级查找,接口可以通过http调用。ElasticSearch缺点就是配置繁琐、基于JVM对内存消耗比较大。gofound是原生编译,会减少系统资源的消耗。而且对外无任何依赖。
Bughound是一款开源的静态代码分析工具,可以帮助广大研究人员分析自己的代码,并将结果发送至Elasticsearch和Kibana,以更好地审查代码中潜在的安全漏洞。
前言因工作需要,需要调研WAF和IDS产品,我经过调研选择了Modsecurity作为Web端的防火墙防护软件和Suricata作为tcp和udp层的防护,并且通过logstash将结果输出到elasticsearch中进行分析。
一款src捡洞扫描器,因没时间挖src,毕竟挖src是个费时费力的活,自19年8月起入坑至今,依靠?扫描出的信息和漏洞,利用业余时间从扫描报告中的资产捡洞和找洞,已经3次jd月度前十。目前 SScan 的主要逻辑还是在模仿 BBScan。目录对于数据库口令检测,目前只是检测是否存在空口令检测,后续会考虑要不要加入一些弱口令,进行检测。否则需自行承担,本公众号及原作者不承担相应的后果.
一款src捡洞扫描器
2023-01-03 15:24:46
前言一款src捡洞扫描器,因没时间挖src,毕竟挖src是个费时费力的活,自19年8月起入坑至今,依靠?扫描出的信息和漏洞,利用业余时间从扫描报告中的资产捡洞和找洞,已经3次jd月度前十。萌发出自己写扫描器挖洞的念头,自动挖一些简单漏洞,赚点零花钱,同时提升一下开发能力,毕竟搞安全的不能不懂开发。目录对于数据库口令检测,目前只是检测是否存在空口令检测,后续会考虑要不要加入一些弱口令,进行检测。
前言一款src捡洞扫描器,因没时间挖src,毕竟挖src是个费时费力的活,自19年8月起入坑至今,依靠?扫描出的信息和漏洞,利用业余时间从扫描报告中的资产捡洞和找洞,已经3次jd月度前十。目前 SScan 的主要逻辑还是在模仿 BBScan。目录对于数据库口令检测,目前只是检测是否存在空口令检测,后续会考虑要不要加入一些弱口令,进行检测。
Vulmap 是一款 web 漏洞扫描和验证工具, 可对 webapps 进行漏洞扫描, 并且具备漏洞利用功能, 目前支持的 webapps 包括 activemq, flink, shiro, solr, struts2, tomcat, unomi, drupal, elasticsearch, fastjson, jenkins, nexus, weblogic, jboss, spring
VSole
网络安全专家