5.8 KiB
27017,27018 - MongoDB 渗透测试
从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家)!
支持 HackTricks 的其他方式:
- 如果您想在 HackTricks 中看到您的 公司广告 或 下载 HackTricks 的 PDF,请查看 订阅计划!
- 获取 官方 PEASS & HackTricks 商品
- 探索 PEASS 家族,我们的独家 NFTs
- 加入 💬 Discord 群组 或 电报群组 或 关注 我们的 Twitter 🐦 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来分享您的黑客技巧。
加入 HackenProof Discord 服务器,与经验丰富的黑客和赏金猎人交流!
黑客见解
参与深入探讨黑客活动的刺激和挑战的内容
实时黑客新闻
通过实时新闻和见解及时了解快节奏的黑客世界
最新公告
随时了解最新的赏金任务发布和重要平台更新
加入我们的 Discord,立即与顶尖黑客合作!
基本信息
MongoDB 是一个使用 面向文档的数据库模型 处理各种形式数据的 开源 数据库管理系统。它提供了灵活性和可扩展性,用于管理应用程序中的非结构化或半结构化数据,如大数据分析和内容管理。 默认端口: 27017, 27018
PORT STATE SERVICE VERSION
27017/tcp open mongodb MongoDB 2.6.9 2.6.9
枚举
手动
from pymongo import MongoClient
client = MongoClient(host, port, username=username, password=password)
client.server_info() #Basic info
#If you have admin access you can obtain more info
admin = client.admin
admin_info = admin.command("serverStatus")
cursor = client.list_databases()
for db in cursor:
print(db)
print(client[db["name"]].list_collection_names())
#If admin access, you could dump the database also
一些MongoDB命令:
show dbs
use <db>
show collections
db.<collection>.find() #Dump the collection
db.<collection>.count() #Number of records of the collection
db.current.find({"username":"admin"}) #Find in current db the username admin
自动化
nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used
Shodan
- 所有mongodb:
"mongodb server information"
- 搜索完全开放的mongodb服务器:
"mongodb server information" -"partially enabled"
- 仅部分启用认证:
"mongodb server information" "partially enabled"
登录
默认情况下,Mongo 不需要密码。
Admin 是一个常见的 Mongo 数据库。
mongo <HOST>
mongo <HOST>:<PORT>
mongo <HOST>:<PORT>/<DB>
mongo <database> -u <username> -p '<password>'
nmap脚本:mongodb-brute 将检查是否需要凭据。
nmap -n -sV --script mongodb-brute -p 27017 <ip>
暴力破解
查看 /opt/bitnami/mongodb/mongodb.conf 文件以确定是否需要凭据:
grep "noauth.*true" /opt/bitnami/mongodb/mongodb.conf | grep -v "^#" #Not needed
grep "auth.*true" /opt/bitnami/mongodb/mongodb.conf | grep -v "^#\|noauth" #Not needed
Mongo Objectid 预测
示例在这里。
Mongo Object IDs 是12字节的十六进制字符串:
例如,这里是如何解析应用程序返回的实际 Object ID:5f2459ac9fa6dc2500314019
- 5f2459ac: 1596217772 转换为十进制 = 2020年7月31日星期五 17:49:32
- 9fa6dc: 机器标识符
- 2500: 进程 ID
- 314019: 递增计数器
在上述元素中,机器标识符将在数据库运行在相同的物理/虚拟机器上时保持不变。如果 MongoDB 进程重新启动,进程 ID 将会改变。时间戳将每秒更新一次。通过简单递增计数器和时间戳值来猜测 Object IDs 的唯一挑战在于,Mongo DB 生成 Object IDs 并在系统级别分配 Object IDs。
该工具https://github.com/andresriancho/mongo-objectid-predict,给定一个起始 Object ID(您可以创建一个帐户并获取一个起始 ID),它会返回大约 1000 个可能被分配给下一个对象的 Object IDs,因此您只需要对它们进行暴力破解。
帖子
如果您是 root 用户,您可以修改 mongodb.conf 文件,以便不需要凭据(noauth = true)并无凭证登录。
加入HackenProof Discord 服务器,与经验丰富的黑客和赏金猎人交流!
黑客见解
参与深入探讨黑客行为的刺激和挑战的内容
实时黑客新闻
通过实时新闻和见解及时了解快节奏的黑客世界
最新公告
通过最新的赏金计划发布和重要平台更新保持信息更新
加入我们的 Discord 并开始与顶尖黑客合作!