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的文件放在根目錄主目錄中)文件可
以如下所示:
machine secret.google.com
login admin@google.com
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安裝的最新版本非常重要,否則結果可能不準確。