NoSQLMap:開源自動化NoSQL數據庫破解工具

LionelBrazi 8年前發布 | 34K 次閱讀 MongoDB 數據庫 開源 安全相關

來自: http://www.evil0x.com/posts/13415.html

簡介

NoSQLMap是一款Python編寫的開源工具,常用于審計NoSQL數據庫中的自動注入攻擊、為了 從數據庫中揭露數據而利用NoSQL數據庫或使用NoSQL的Web應用的 默認配置弱點。

它這樣命名是為了幾年Bernardo Damele和Miroslav創作的流行的SQL工具SQLmap,它的設計理念來源于Ming Chow在Defcon中發表的很棒的演講-”Abusing NoSQL Databases”。該工具目前主要應用于MongoDB,但是它在未來的版本中還會支持其他基于NoSQL的平臺,如CouchDB, Redis和Cassandra等。當前該項目的目的是為簡單攻擊MongoDB服務器和一些web應用提供滲透測試工具,以及用通過概念攻擊來證明某NoSQL應用不會受到SQL注入。

功能

自動化MongoDB和CouchDB數據庫枚舉和克隆攻擊。

通過MongoDB web應用提取數據庫名稱、用戶和哈希密碼。

為使用默認訪問和枚舉版本的MongoDB和CouchDB數據庫掃描子網或IP列表。

字典攻擊、暴力破解恢復的MongoDB和CouchDB的哈希密碼。

針對MongoClient的PHP應用程序參數注入攻擊,返回所有數據庫中的記錄。

Javascript函數變量轉移和任意代碼注入,返回所有數據庫中的記錄。

類似于盲SQL注入的用于驗證無來自應用程序的反饋的Javascript注入漏洞的時序攻擊。

更多功能敬請期待!

發布歷史

0.6 builds(在github社區簡歷完整版本,非常感謝眾位優秀的貢獻者完善功能和代碼!)

Web應用攻擊,增加支持發送用戶提供的headers(感謝gpapakyriakopoulos)

Web應用攻擊,遷移所有來自urllib到rullib2的requests到 support header input(感謝 gpapakyriakopoulos)

修Bug,沒有提供GET方法的url參數將會導致AttributeError異常(感謝gpapakyriakopoulos)

接口,糾正輸出中的拼寫錯誤(感謝akash0x53)

設置,增加新的安裝過程,該過程使用Python的setuptool而不依賴BASH,并且它能夠成功的獨立安裝(感謝akash0x53)

實現第二階段代碼清理,剝離尾部空格(感謝akash0x53)

0.5 builds:

V0.5(主要版本):

Web應用攻擊,增加針對PHP/ExpressJS應用的$gt no value攻擊。感謝 Petko D. Petkov!

Web應用攻擊,糾正影響PHP和ExpressJS關聯數組的攻擊的標簽。

一般,代碼清理項目,每個NoSQL平臺都是一個免費的可以被import其他代碼的基于Python的模塊。

掃描器,增加支持CouchDB掃描及版本記錄。

網絡攻擊,增加支持CouchDB網絡層,以及包括數據庫復制和密碼破解的訪問攻擊。

一般,為主菜單增加更改平臺以切換NoSQL平臺和自動設置的正確選項。

0.4 builds:

v0.4b:

修Bug,修復導致網絡攻擊認證無法使用的問題。

v0.4a:

為啟動和異常處理實現了更好的Python結構。

v0.4(GIANT主要版本):

Web應用攻擊,增加HTTPS支持。

Web應用攻擊,為檢測和報告用于減少誤報并提供額外的針對注入的監視NoSQL錯誤增加邏輯。

一般,代碼清理和組織項目的第二階段。

MongoDB掃描器,掃描器現在記錄服務器上檢測到的MongoDB的版本。

MongoDB掃描器,來自結果/目標列表的飛默認訪問模式的過濾的MongoDB目標。

MongoDB掃描器,為版本大規模提速設置socket超時。

MongoDB掃描器,在嘗試簡歷MongoDB連接增加ping主機的能力。

MongoDB掃描器,增加保存掃描器結果到CSV文件的選項。

密碼破解,增加暴力破解。

網絡攻擊,為了直接訪問需要的攻擊而不是通過yes/no菜單獲取所有攻擊而更改對菜單驅動的界面攻擊。

網絡攻擊,增加自動化特使來檢查、查看是否MongoDB服務器需要憑據和提示,如果需要憑據則不用要求用戶指定。

0.3 builds:

v0.31:

為yes/no輸入處理修改代碼。

修復了當web應用不返回HTTP200響應時的漏洞。

v0.3(主版本):

為使用POST方法的請求的注入測試增加測試版本支持。

在使用MongoDB(MongoDB版本<2.4)的脆弱的web應用上增加提取數據庫名稱、數據庫用戶名和密碼哈希的功能。

從注入結果中獲取一般的MongoDB版本檢測。

增加了針對不是運行在默認端口27017的MongoDB服務器的功能。

增加用戶輸入合法IP地址驗證。

增加獲取詳細輸出或默認標準輸出的切換。

UI清理和改進。

增加使用CTRL+C清理退出。

Bug修復:解決無法由主機名指定目標的bug。

Bug修復:解決如果指定的憑據無法枚舉服務器時,嘗試枚舉GridFS破解。

Bug修復:解決如果指定的憑據無法枚舉服務器時,嘗試竊取數據庫破解。

Bug修復:在沒有目的IP被設置為數據庫克隆的情況下增加處理方法。

使用更簡單的邏輯增強功能檢查結果。

實現第一階段大規模代碼清理。

0.2 builds:

v0.2(主要版本!):

增加子網或IP列表的完整掃描獲取默認MongoDB訪問,增加直接發送目標到NoSQLMap功能。

增加針對存儲的MongoDB密碼哈希的字典攻擊。

在Debian和紅冒系統中增加一個安裝shell腳本來自動操作依賴安裝。

增加存儲在GridFS中的文件枚舉。

增加解析來自Burp Suite存儲的HTTP請求來填充選項。

增加數據庫復制通知,但是文本索引無法被移動。

修正一些小的口錯誤,改進UI,如執行模塊時的標題。

咋想代碼清理及bug修復。

0.1 builds:

v0.15b,當解析URL/參數且選項設置不正確時會拋出異常,此時增加錯誤處理。

v0.15a,修正一個導致web應用在特定環境崩潰的bug;修復會導致額外的&被添加到.this注入URL末尾的bug。

v0.15,增加Mongo認證支持;增加集合名稱枚舉;增加提取數據庫用戶、角色和密碼哈希;修復會導致攻擊者本地IP無法加載的bug。

v0.1(主要版本):

增加不同于注入的攻擊以返回所有數據庫記錄。

增加基于類似于傳統盲SQL注入攻擊的計時。

輸出結果可以被儲存成一個文件。

URL參數選擇部分的UI改進。

增加加載和保存攻擊選項功能。

增加選擇輸入隨機參數格式功能(如,字母數字、僅字母、僅數字、電子郵件地址)。

修復當web應用無法回應基本請求的崩潰。

0.0 builds:

v0.09,改進輸出;修復整數注入測試的bug;增加一些代碼注釋。

v0.08,修復破損的針對Mongo的Metasploit漏洞。

v0.08,一些錯誤處理和bug修復;改進選項菜單的UI。

v0.06,首次公開發行。

未來發展

支持更多平臺

支持更復雜的攻擊

更好的攻擊利用

優化代碼

系統要求

在Debian或者紅帽系統上,使用root權限運行setup.sh腳本,自動安裝NoSQLMap依賴。

不同的使用的功能:

Metasploit框架;

擁有PyMongo的Python;

httplib2;

現有的urllib。

一個本地默認MongoDB實例對數據庫進行復制。點擊 這里 查看安裝說明。

還有一些需要的常見的Python庫。你需要的東西可能有所不同,所以請檢查腳本。

sudo python setup.py install

用法

NoSQLMap

NoSQLMap使用一個菜單建立攻擊。當開始NoSQLMap時,你會看到主菜單:

1-Set options (do this first)
2-NoSQL DB Access Attacks
3-NoSQL Web App attacks
4-Scan for Anonymous MongoDB Access
x-Exit
1-設置選項(第一步操作)
2-NoSQL DB 訪問攻擊
3-NoSQL Web應用攻擊
4-掃描匿名MongoDB訪問
x-退出

菜單說明

1.設置目標host/IP-目標web服務器(如 www.google.com )或者任何你想要攻擊的MongoDB服務器。

2.設置web應用端口-如果一個web應用成為目標,為web應用設置TCP端口。

3.設置URI路徑-部分URI包含頁面名稱及任何非主機名稱的參數(如 /app/acct.php?acctid=102)。

4.設置HTTP請求方法(GET/POST)-設置請求方法為GET或POST;現在只能使用GET方法但是后續會增加POST方法。

5.設置我的本地Mongo/Shell IP-如果直接攻擊一個MongoDB實例,設置這個選項到目標Mongo安裝的IP來復制受害者服務器或打開Meterpreter shell。

6.設置shell監聽端口-如果開放Meterpreter shell就會指定端口。

7.加載選項文件-加載一個之前1-6中保存的設置。

8.從保存的Burp請求加載選擇-解析來自Burp Suite的已保存的請求,并填充Web應用選項。

9.保存選項文件-為未來使用保存1-6中的設置。

x.返回主菜單-使用這個選項開始攻擊。

github地址: https://github.com/tcstool/NoSQLMap

* 參考來源: kitploit ,FireFrank編譯,轉載請注明來自FreeBuf黑客與極客(FreeBuf.COM)

 本文由用戶 LionelBrazi 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!