NoSQLMap:開源自動化NoSQL數據庫破解工具
來自: 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依賴。
不同的使用的功能:
還有一些需要的常見的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)