通达oa php漏洞,通达OA-感染勒索病毒漏洞分析

本文详细分析了通达OA系统中的两个安全漏洞,包括未授权文件上传和包含漏洞。首先,作者通过解密混淆代码发现了一个文件上传漏洞,但由于文件上传到非Web目录且不允许PHP文件,需结合文件包含漏洞利用。通过/ispirit/interface/gateway.php的include_once实现文件包含。防御方案包括及时打补丁和部署安全设备。
摘要由CSDN通过智能技术生成

原标题:通达OA-感染勒索病毒漏洞分析

No.1声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

No.2引言

开篇的首先感谢l1nk3r大佬的帮助。

前天看到通达OA官方发布的一则更新公告

http://club.tongda2000.com/forum.php?mod=viewthread&tid=128377&extra=page%3D1

20907bc1a7ebd835190ad11d7f9e2b5b.png

No.3 第一个漏洞点

下了2017版本和最新版本的代码(这里遇到了一个坑点,2017版本的相当于只有漏洞的一半,为啥是一半后面会提到)

下载地址如下:http://www.tongda2000.com/download/2017.php

打开以后发现php代码都是混淆过后的(sublime打开如下图所示,用其他编辑器打开是乱码)

9a00aa2cb77fc3226dbd581ec4bfff17.png

通达OA的代码加密方式用的是zend,网上找在线解密即可

也可以下载批量解密工具进行解密

然后我下载了对应版本的补丁包。通过查看补丁包发现主要是针对某一个文件进行补丁

然后针对未打补丁的和打补丁的进行对比查看,发现主要不同点在include_once('auth.php')这里

c38a2f2d04c66b1afa96e2c3f9fec913.png

然后查看了一下auth.php

初步推断是未授权的文件上传漏洞。

直接访问问题url提示还未登陆,然后查看源代码

然后读代码构造payload,发现他有一个$_POST[‘P']参数如果P参数不为空且存在,则会创建一个sessionid

然后我构造一个P参数,发现走到了-ERR接收方IP无效的提示

f1b0a6439faf799d3c415122dc12279c.png

很显然我需要走通这个步骤,也就是我的$DEST_UID需要赋值,来源是post传参。

df63f885ddf0c16d909a4e380e53d15e.png

既然是文件上传我肯定是需要上传文件的,所以构造上传,且不为空

bd946f3d1e58300de737e8d9f57dc1e0.png

构造好以后我以为万事俱备只缺getshell了,然后发现竟然回显ok的标志

464533a7e445a9a21bf850fb144766f3.png

说好的文件上传呢,我又回去读源代码(其实在这里也可以成功上传文件,只不过回显不了文件的名字而已)

发现UPLOAD_MODE虽未赋值,但是会加入判断。由于php代码都被加密了,解密太复杂,就没有深究他的其他配置情况。尝试构造,发现,可以成功上传,然后我去找文件,准备getshell发现2个坑点:

1.不能上传php;

2.上传的文件不在web目录下(当时我找了上传的文件找到怀疑人生,卡了挺久,还好l1nk3r大佬点出来在非web目录下)。

所以又出来了一个新点,就是这个漏洞应该是文件上传+文件包含。通过对比补丁暂未发现新漏洞中存在包含问题。又去看了其他版本通达,发现存在包含,可以文件上传+文件包含getshell文件包含形式和文件上传类似。

No.4 第二个漏洞点

咱们通过第一个漏洞上传文件以后,由于不在web目录下,利用文件包含进行包含。所以发现

/ispirit/interface/gateway.php目录下。

直接使用了include_once进行包含(问题点)

81eb2bd80d258f4084ac9f98410bfd9f.png

所示我们需要让代码走到include_once这个位置。那么开始看整段代码看如何走到

b12d396f384e53dfd2939261b33437d5.png

首先判断了一个json值。然后再判断url。所以我们需要构造一个json,还有一个url即可让代码走到include_once $url这里

构造完以后成功执行。

500b532b2259a2823e94f93d7d020f79.png

No.5 防御方案

1.关注通达OA官网,根据自身版本及时打补丁;

2.关注通达OA官网的历史漏洞及补丁,建议及时打历史补丁;

3.部署安恒玄武盾、waf等安全设备进行安全防护。返回搜狐,查看更多

责任编辑:

通达OA2010版本,完整general目录下php文件无加密,示例: <?php /*********************/ /* */ /* Version : 5.1.0 */ /* Author : RM */ /* Comment : 071223 */ /* */ /*********************/ include_once( "inc/auth.php" ); if ( $LOGIN_THEME != "10" ) { $query = "SELECT * from INTERFACE"; $cursor = exequery( $connection, $query ); if ( $ROW = mysql_fetch_array( $cursor ) ) { $IE_TITLE = $ROW['IE_TITLE']; } echo "<html>\r\n<head>\r\n<title>"; echo $IE_TITLE; echo "</title>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">\r\n[removed][removed]\r\n[removed]\r\nself.moveTo(0,0);\r\nself.resizeTo(screen.availWidth,screen.availHeight);\r\nself.focus();\r\n\r\nrelogin=0;\r\nfunction exit()\r\n{\r\n if(document.body.clientWidth-event.clientX<50||event.altKey||event.ctrlKey)\r\n {\r\n"; if ( $ISPIRIT == 1 ) { echo "return;"; } echo " var req = new_req();\r\n\treq.open(\"GET\", \"relogin.php\", true);\r\n\treq.send('');\r\n }\r\n}\r\n\r\n[removed]\r\n</head>\r\n"; include_once( "inc/antivirus.txt" ); echo "<frameset rows=\"50,*,20\" cols=\"*\" frameborder=\"no\" border=\"0\" framespacing=\"0\" id=\"frame1\" <frame name=\"banner\" id=\"banner\" scrolling=\"no\" noresize=\"noresize\" src=\"topbar.php\" frameborder=\"0\">\r\n <frameset rows=\"*\" cols=\"200,*\" frameborder=\"no\" border=\"0\" framespacing=\"0\" id=\"frame2\">\r\n <frame name=\"leftmenu\" id=\"leftmenu\" scrolling=\"no\" noresize=\"noresize\" src=\"ipanel\" frameborder=\"0\">\r\n <frame name=\"table_index\" id=\"table_index\" scrolling=\"no\" src=\"table.php\" frameborder=\"0\">\r\n </frameset>\r\n <frame name=\"status_bar\" id=\"status_bar\" scrolling=\"no\" noresize=\"noresize\" src=\"status_bar\" frameborder=\"0\">\r\n</frameset>\r\n</html>\r\n"; exit( ); } include_once( "inc/utility_all.php" ); include_once( "inc/td_core.php" ); include_once( "inc/chinese_date.php" ); include_once( "inc/sys_function_all.php" ); ob_end_clean( ); 本资源(仅供技术学习,版权归原公司所有)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值