Droopescan-基于CMS的插件化安全扫描器

Droopescan是一款基于插件的扫描器,可帮助安全研究人员发现Drupal,SilverStripe,Wordpress,Joomla(枚举版本信息和可利用URL地址)和Moodle的问题。

安装:

使用pip安装会非常容易:

apt-get install python-pip

pip install droopescan

手动安装如下:

git clone https://github.com/droope/droopescan.git

cd droopescan

pip install -r requirements.txt

./droopescan scan --help

特点:

扫描类型

Droopescan的准确率在默认情况下是最精准的,而不会因为过多的并发请求而超载目标服务器。由于这一点,所以在默认情况下将使用四个线程对目标进行大量数据请求;你也可以使用-number和-threads参数分别更改这些设置。

这个工具可以使用四种测试模式。默认情况下所有测试模式都在运行,但是您可以使用-e或--enumerate来指定以下内容:

p -- Plugin checks:执行数千个HTTP请求,并返回目标主机上已安装所有插件的列表。

t -- Theme checks:如上所述,但仅检查主题。

v -- Version checks:下载多个文件,根据这些文件的校验和,返回一个所有可能版本的列表。

i -- Interesting URL checks: 检查有价值的URL(例如:管理面板,Readme等)

目标说明

您可以通过-u或--url参数指定特定的主机来扫描:

droopescan scan drupal -u example.org

您还可以省略drupal参数。这将触发“CMS识别”,就像这样:

droopescan scan -u example.org

可以使用-U或-url-file参数扫描多个url。该参数应该设置为包含url列表文件的路径:

droopescan scan drupal -U list_of_urls.txt

在本例中,drupal参数也可以省略。对于每个站点,它将会发出几个GE请求来执行CMS识别,如果站点是支持的CMS版本,它会被扫描并添加到输出列表中。例如,这可以在所有站点上运行droopescan。

droopescan scan -U list_of_urls.txt

下面的示例列表中每一个url包含一个代码块,每行一个:

http://localhost/drupal/6.0/

http://localhost/drupal/6.1/

http://localhost/drupal/6.10/

http://localhost/drupal/6.11/

http://localhost/drupal/6.12/

一个包含URL的文件和一个通过制表符或空格分隔默认主机头的也可以用于URL文件。当在大型主机上进行扫描时,您可以方便地进行操作,并防止不必要的DNS查询。请看下面的一个例子:

192.168.1.1 example.org

http://192.168.1.1/ example.org

http://192.168.1.2/drupal/ example.org

扫描器会扫描官方网站特定的CMS(例如wordpress.org WordPress),但是官方网站很少在他们的CMS系统上运行vainilla,或者做一些其他改版的事情。例如,WordPress.org运行最新版本的WordPress,因为droopescan在所有的WordPress扫描中发现校验和不匹配,所以不会被确定为任何已知的WordPress版本。

身份验证

应用程序完全支持.netrc文件和http_proxy环境变量。

使用.netrc文件进行基本身份验证。一个示例netrc(一个名为.netrc的文件放在根目录主目录中)文件可以如下所示:

password Winter01

您可以设置http_proxy和https_proxy变量。它们允许您设置HTTP代理,在其中您可以处理更复杂的身份验证类型(例如:Fiddler、ZAP、Burp)。

export http_proxy='user:password@localhost:8080'

export https_proxy='user:password@localhost:8080'

droopescan scan drupal --url http://localhost/drupal

注意:允许代理拦截和对带有SSL的WEB应用程序测试,droopescan必须允许自签名或其他无效的证书。

输出

该应用程序既支持“标准输出”,也支持JSON,后者更适合机耗。这个稳定输出只在主要版本之间。

这可以用 --output控制。一些示例JSON输出如下所示(除去多余的空格):

{

"themes": {

"is_empty": true,

"finds": [

]

},

"interesting urls": {

"is_empty": false,

"finds": [

{

"url": "https:\/\/www.drupal.org\/CHANGELOG.txt",

"description": "Default changelog file."

},

{

"url": "https:\/\/www.drupal.org\/user\/login",

"description": "Default admin."

}

]

},

"version": {

"is_empty": false,

"finds": [

"7.29",

"7.30",

"7.31"

]

},

"plugins": {

"is_empty": false,

"finds": [

{

"url": "https:\/\/www.drupal.org\/sites\/all\/modules\/views\/",

"name": "views"

},

[...snip...]

]

}

}

如果不运行部分扫描,JSON对象可能缺少一些属性。

这就是多站点输出的样子;每一行都包含一个有效的JSON对象,如下所示。

$ droopescan scan drupal -U six_and_above.txt -e v

{"host": "http://localhost/drupal-7.6/", "version": {"is_empty": false, "finds": ["7.6"]}}

{"host": "http://localhost/drupal-7.7/", "version": {"is_empty": false, "finds": ["7.7"]}}

{"host": "http://localhost/drupal-7.8/", "version": {"is_empty": false, "finds": ["7.8"]}}

{"host": "http://localhost/drupal-7.9/", "version": {"is_empty": false, "finds": ["7.9"]}}

{"host": "http://localhost/drupal-7.10/", "version": {"is_empty": false, "finds": ["7.10"]}}

{"host": "http://localhost/drupal-7.11/", "version": {"is_empty": false, "finds": ["7.11"]}}

{"host": "http://localhost/drupal-7.12/", "version": {"is_empty": false, "finds": ["7.12"]}}

{"host": "http://localhost/drupal-7.13/", "version": {"is_empty": false, "finds": ["7.13"]}}

{"host": "http://localhost/drupal-7.14/", "version": {"is_empty": false, "finds": ["7.14"]}}

{"host": "http://localhost/drupal-7.15/", "version": {"is_empty": false, "finds": ["7.15"]}}

{"host": "http://localhost/drupal-7.16/", "version": {"is_empty": false, "finds": ["7.16"]}}

{"host": "http://localhost/drupal-7.17/", "version": {"is_empty": false, "finds": ["7.17"]}}

{"host": "http://localhost/drupal-7.18/", "version": {"is_empty": false, "finds": ["7.18"]}}

{"host": "http://localhost/drupal-7.19/", "version": {"is_empty": false, "finds": ["7.19"]}}

{"host": "http://localhost/drupal-7.20/", "version": {"is_empty": false, "finds": ["7.20"]}}

{"host": "http://localhost/drupal-7.21/", "version": {"is_empty": false, "finds": ["7.21"]}}

{"host": "http://localhost/drupal-7.22/", "version": {"is_empty": false, "finds": ["7.22"]}}

{"host": "http://localhost/drupal-7.23/", "version": {"is_empty": false, "finds": ["7.23"]}}

{"host": "http://localhost/drupal-7.24/", "version": {"is_empty": false, "finds": ["7.24"]}}

{"host": "http://localhost/drupal-7.25/", "version": {"is_empty": false, "finds": ["7.25"]}}

{"host": "http://localhost/drupal-7.26/", "version": {"is_empty": false, "finds": ["7.26"]}}

{"host": "http://localhost/drupal-7.27/", "version": {"is_empty": false, "finds": ["7.27"]}}

{"host": "http://localhost/drupal-7.28/", "version": {"is_empty": false, "finds": ["7.28"]}}

{"host": "http://localhost/drupal-7.29/", "version": {"is_empty": false, "finds": ["7.29"]}}

{"host": "http://localhost/drupal-7.30/", "version": {"is_empty": false, "finds": ["7.30"]}}

{"host": "http://localhost/drupal-7.31/", "version": {"is_empty": false, "finds": ["7.31"]}}

{"host": "http://localhost/drupal-7.32/", "version": {"is_empty": false, "finds": ["7.32"]}}

{"host": "http://localhost/drupal-7.33/", "version": {"is_empty": false, "finds": ["7.33"]}}

{"host": "http://localhost/drupal-7.34/", "version": {"is_empty": false, "finds": ["7.34"]}}

调试

当事情不按您的方式进行时,您可以通过使用--debug-requests命令来检查原因。

某些输出可能如下所示:

computer:~/droopescan# droopescan scan silverstripe -u http://localhost -n 10 -e p

--debug-requests

[head] http://localhost/framework/... 403

[head] http://localhost/cms/css/layout.css... 404

[head] http://localhost/framework/css/UploadField.css... 200

[head] http://localhost/misc/test/error/404/ispresent.html... 404

[head] http://localhost/widgetextensions/... 404

[head] http://localhost/orbit/... 404

[head] http://localhost/sitemap/... 404

[head] http://localhost/simplestspam/... 404

[head] http://localhost/ecommerce_modifier_example/... 404

[head] http://localhost/silverstripe-hashpath/... 404

[head] http://localhost/timeline/... 404

[head] http://localhost/silverstripe-hiddenfields/... 404

[head] http://localhost/addressable/... 404

[head] http://localhost/silverstripe-description/... 404

[ ] No plugins found.

[ ] Scan finished (0:00:00.058422 elapsed)

--debug该调试参数也可用于调试应用程序内部部件。

统计

通过运行以下命令,您可以获得扫描器功能的最新报告

droopescan stats

一些示例输出可能如下所示:

Functionality available for ‘drupal’:

- Enumerate plugins (XXXX plugins.)

- Enumerate themes (XXXX themes.)

- Enumerate interesting urls (X urls.)

- Enumerate version (up to version X.X.X-alphaXX, X.XX, X.XX.)

Functionality available for ‘joomla’:

- Enumerate interesting urls (X urls.)

- Enumerate version (up to version XX.X, X.X.X, X.X.XX.rcX.)

Functionality available for ‘wordpress’:

- Enumerate interesting urls (X urls.)

- Enumerate version (up to version X.X.X, X.X.X, X.X.X.)

Functionality available for ‘silverstripe’:

- Enumerate plugins (XXX plugins.)

- Enumerate themes (XX themes.)

- Enumerate interesting urls (X urls.)

- Enumerate version (up to version X.X.XX, X.X.XX, X.X.XX.)

验证在droopescan中可用于CMS安装的最新版本非常重要,否则结果可能不准确。

文章:http://www.effecthacking.com/2018/02/droopescan.html由华盟网翻译排版,转载请注明华盟网

你可能喜欢

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180305B0BXVW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券