首页 > 关于安博通 > 新闻中心
【漏洞分析】通达OA 11.6版文件上传getshell漏洞
2020-09-16
54

一、漏洞概述


通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件。


安博通研究发现,通达OA 11.6版中引入了新的任意文件删除漏洞,与早期版本的文件上传漏洞、变量覆盖漏洞结合,可直接getshell。


安博通提醒通达OA用户尽快确认软件版本,并采取积极措施应对漏洞攻击。


二、影响范围


通达OA 11.6版


三、修复建议


升级通达OA至11.7版。

 

同时,官方已发布相应的安全加固程序,可以根据当前版本选择对应程序文件。运行前请先做好备份。

 

四、漏洞分析

 

文件上传getshell漏洞的利用需借助三个漏洞配合使用,下面进行逐个分析:

 

1、任意文件删除漏洞

 

该漏洞位于11.6版的新增文件module/appbuilder/assets/print.php中。(注:该文件在11.5版中不存在,如想使用11.5版进行验证,请单独下载文件。

 

该文件中未添加任何校验,可直接访问利用,进行文件删除操作。

 

源码如下:

 

1.jpg

 

通过拼接参数s_tmp指定删除文件,参数s_tmp由固定部分+guid组成,其中参数guid可控,因此通过该文件可删除任意文件。

 

传入guid=../../../webroot/xx.php,则$s_tmp的拼接路径为

web_root/module/appbuilder/assets/../../../../logs/appbuikder/logs/../../../webroot/xx.php,成功执行后会将xx.php文件删除。

 

2、变量覆盖漏洞

 

该漏洞为通达OA的长期漏洞,在多个版本中均存在。

 

漏洞位于文件 inc/common.inc.php 中。

 

源码如下:

 

2.jpg

 

利用该漏洞不仅可以进行任意变量覆盖,还可以利用代码中的strip_tags函数向参数中加入HTML、PHP标签干扰。

 

关于strip_tags函数的详细说明可参考链接:

https://www.php.net/manual/zh/function.strip-tags.php

 

利用该漏洞可以控制整个系统中的未初始化变量。

 

3、任意文件上传漏洞

 

该漏洞位于文件 general/data_center/utils/upload.php 中。(注:版本<11.7版均存在该漏洞。

 

源码如下:

 

3.jpg

 

通过控制变量使代码直接走最后的else分支,此时变量repkid未重新赋值就直接使用,最终文件名通过拼接变量repkid与文件名s_n获得。利用上文的任意变量覆盖漏洞控制变量repkid,可以确保生成的文件位于attachment目录之外,同时利用方式可加入绕过

general/data_center/utils/upload.php?action=upload&filetype=nmsl&repkid=/.<>./.<>./.<>./,实际获得的repkid参数内容为/../../../,因此拼接后的文件名为webroot下的_文件名。

 

五、相关链接

 

https://www.tongda2000.com/