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)
</div>