MongoDB 未授权访问漏洞复现学习

0x00 漏洞简介

  • 开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增、删、改、查高危动作)而且可以远程访问数据库。

  • 造成未授权访问的根本原因就在于启动 Mongodb 的时候未设置 --auth 也很少会有人会给数据库添加上账号密码(默认空口令),使用默认空口令这将导致恶意攻击者无需进行账号认证就可以登陆到数据服务器。

0x01 环境搭建

测试机:Kali
靶机:Ubuntu16.04
使用docker搭建环境

1、从镜像仓库中拉取或者更新指定镜像

docker pull mongo

在这里插入图片描述
2、列出本地主机上的mongo镜像

docker images mongo

在这里插入图片描述
3、创建一个新的容器并运行一个命令

docker run -d -p 27017:27017 -name mongodb mongo

显示所有的容器,包括未运行的

docker ps -a

在这里插入图片描述

0x02 漏洞证明

MongoDB默认端口一般都为27017,当配置成无验证时,就会存在未授权访问。
先查看DockerIP

打开msf使用如下命令:

use auxiliary/scanner/mongodb/mongodb_login
set rhosts 172.17.0.1
set threads 10
exploit

在这里插入图片描述
555 为啥连不上
在这里插入图片描述
端口filtered...
找到了一篇博客解决
https://blog.csdn.net/Homewm/article/details/88672554

$docker inspect mongodb | grep IPAddress

在这里插入图片描述
打扰了 原来dockerip是172.17.0.2
将docker中的27017映射到靶机的27917端口

iptables -t nat -A DOCKER -p tcp --dport 27917 -j DNAT --to-destination 172.17.0.2:27017

nmap扫下
在这里插入图片描述
open~~
在这里插入图片描述
耶终于成了!!!

0x03 防御手段

1、修改默认端口
修改默认的mongoDB端口(默认为: TCP 27017)为其他端口
2、不要开放服务到公网

vim /etc/mongodb.conf
bind_ip = 127.0.0.1

3、禁用HTTP和REST端口
4、为MongoDB添加认证
MongoDB启动时添加--auth参数、为MongoDB添加用户

0x04 参考

https://xz.aliyun.com/t/6103#toc-1
https://blog.csdn.net/Homewm/article/details/88672554

posted @ 2019-12-20 09:01  吃不胖的ruanruan  阅读(1922)  评论(0编辑  收藏  举报