致远A8 OA系统任意文件上传getshell漏洞分析报告

漏洞影响范围

致远OA A8-V5 V6.1 SP1
致远OA A8+协同管理软件 V7.0
致远OA A8+协同管理软件 V7.0 SP1
致远OA A8+协同管理软件 V7.0 SP2
致远OA A8+协同管理软件 V7.0 SP3
致远OA A8+协同管理软件 V7.1

漏洞分析

根据在野利用的poc,可清楚得知漏洞触发点为seeyon文件夹下的htmlofficeservlet


/seeyon/htmlofficeservlet

通过源代码进行寻找jar包分析

寻找jar包

发现htmlofficeservlet存在于seeyon-apps-common.jar,完整路径为com.seeyon.ctp.common.office.HtmlOfficeServlet.class
查看代码可发现OPTION参数与FILENAME参数结合可以使文件路径由用户控制,使得后台处理时导致任意文件上传

HtmlOfficeServlet.class

根据在野利用poc进行进一步分析


FILENAME

可以发现FILENAME的值为某种加密方式,该加密方式由msgObj对象进行调用

msgObj对象

进入该对象,发现该对象是由iMsgServer2000类创建

iMsgServer2000

并在其方法中发现解密算法

解密算法
解密算法

编写加解密脚本

调用DBstep.jar中的iMsgServer2000类的DecodeBase64、EncodeBase64方法即可

解密

加密同样调用方法即可

加密

webshell分析

在野利用poc直接将其webshell源代码写到了报文中

webshell源代码

仔细观察报文POST DATA头部参数,可发现355参数值控制写入源码时,从报文中什么地方读取,而666参数值控制了webshell源代码内容大小。这也就是为什么有人改了filename以及webshell源码以后,poc失效的原因。因为头部的两个参数值需要根据改动同时进行调整。

POST DATA头部参数

处置建议

  • 1.致远官方已发布补丁,请联系官方安装相应补丁
  • 2.禁止/seeyon/htmlofficeservlet访问

鸣谢

Bearcat

转载注意事项

本文为北京国舜科技股份有限公司——毕加索实验室独家分析报告,如有转载请联系北京国舜科技股份有限公司——毕加索实验室。如有侵权,我司必将追究其法律责任。

你可能感兴趣的:(致远A8 OA系统任意文件上传getshell漏洞分析报告)