致远A8 OA系统任意文件上传getshell漏洞分析报告
2019-06-28 本文已影响512人
清水川崎
漏洞影响范围
致远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
转载注意事项
本文为北京国舜科技股份有限公司——毕加索实验室独家分析报告,如有转载请联系北京国舜科技股份有限公司——毕加索实验室。如有侵权,我司必将追究其法律责任。