致远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
![](https://img.haomeiwen.com/i5350990/f7bba34ab54abde5.png)
通过源代码进行寻找jar包分析
![](https://img.haomeiwen.com/i5350990/7e7862ad1cb66679.png)
发现htmlofficeservlet存在于seeyon-apps-common.jar,完整路径为
com.seeyon.ctp.common.office.HtmlOfficeServlet.class
查看代码可发现
OPTION
参数与FILENAME
参数结合可以使文件路径由用户控制,使得后台处理时导致任意文件上传
![](https://img.haomeiwen.com/i5350990/f9639587a73eef42.png)
根据在野利用poc进行进一步分析
![](https://img.haomeiwen.com/i5350990/9a40dc953066ee74.png)
可以发现FILENAME的值为某种加密方式,该加密方式由msgObj对象进行调用
![](https://img.haomeiwen.com/i5350990/615a8624bc5ac636.png)
进入该对象,发现该对象是由iMsgServer2000类创建
![](https://img.haomeiwen.com/i5350990/99fedc7d803c1db7.png)
并在其方法中发现解密算法
![](https://img.haomeiwen.com/i5350990/1fc5ca3cfaaedb0d.png)
![](https://img.haomeiwen.com/i5350990/953a1d81a3b8007d.png)
编写加解密脚本
调用DBstep.jar中的iMsgServer2000类的DecodeBase64、EncodeBase64方法即可
![](https://img.haomeiwen.com/i5350990/ebf0af4f4a4dd9c4.png)
加密同样调用方法即可
![](https://img.haomeiwen.com/i5350990/40788e159473c6c5.png)
webshell分析
在野利用poc直接将其webshell源代码写到了报文中
![](https://img.haomeiwen.com/i5350990/f8d778cbcf348bd1.png)
仔细观察报文POST DATA头部参数,可发现355参数值控制写入源码时,从报文中什么地方读取,而666参数值控制了webshell源代码内容大小。这也就是为什么有人改了filename以及webshell源码以后,poc失效的原因。因为头部的两个参数值需要根据改动同时进行调整。
![](https://img.haomeiwen.com/i5350990/b78d140abc8fd513.png)
处置建议
- 1.致远官方已发布补丁,请联系官方安装相应补丁
- 2.禁止
/seeyon/htmlofficeservlet
访问
鸣谢
Bearcat
转载注意事项
本文为北京国舜科技股份有限公司——毕加索实验室独家分析报告,如有转载请联系北京国舜科技股份有限公司——毕加索实验室。如有侵权,我司必将追究其法律责任。