通达OA v11.8 后台文件包含存储型XSS漏洞

漏洞描述

通达OA v11.8以下存在文件上传接口,可上传 .user.ini 文件包含有xss语句的文件,使管理员后台文件均包含XSS语句,被攻击者获取敏感信息

漏洞影响

Note

通达OA < v11.8

环境搭建

通达OA v11.6下载链接

下载完毕点击安装即可

漏洞复现

这里使用的环境为通达 v11.6版本,v11.6版本中的漏洞利用较好,在 v11.7 后续版本中规定了上传路径,导致XSS利用会比较困难

出现漏洞的文件为 webroot/general/hr/manage/staff_info/update.php

<?php

include_once "inc/auth.inc.php";
include_once "inc/utility_all.php";
include_once "inc/utility_file.php";
include_once "inc/utility_field.php";
include_once "inc/utility_cache.php";
include_once "general/system/log/annual_leave_log.php";
if (strstr($BYNAME, "/") || strstr($BYNAME, "\\") || strstr($BYNAME, "..")) {
    Message(_("错误"), _("OA用户名包含非法字符!"));
    exit();
}

include_once "inc/header.inc.php";
echo "\r\n<body class=\"bodycolor\">\r\n";
echo "\r\n<body class=\"bodycolor\">\r\n";
$PHOTO_NAME0 = $_FILES["ATTACHMENT"]["name"];
$ATTACHMENT = $_FILES["ATTACHMENT"]["tmp_name"];

if ($PHOTO_NAME0 != "") {
    $FULL_PATH = MYOA_ATTACH_PATH . "hrms_pic";

    if (!file_exists($FULL_PATH)) {
        @mkdir($FULL_PATH, 448);
    }

    $PHOTO_NAME = $USER_ID . substr($PHOTO_NAME0, strrpos($PHOTO_NAME0, "."));
    $FILENAME = MYOA_ATTACH_PATH . "hrms_pic/" . $PHOTO_NAME;
    td_copy($ATTACHMENT, $FILENAME);

    if (file_exists($ATTACHMENT)) {
        unlink($ATTACHMENT);
    }

    if (!file_exists($FILENAME)) {
        Message(_("附件上传失败"), _("原因:附件文件为空或文件名太长,或附件大于30兆字节,或文件路径不存在!"));
        Button_Back();
        exit();
    }
}

在这里参数 $USER_ID 是可控的,并且无过滤危险符号就拼接进去了,那我们传入 ../../../ 我们就可以任意文件上传了

由于通达OA 的文件上传限制的死死的,所以我们可以通过利用 PHP的 .user.ini 文件来包含其他文件,这里是可以用于包含XSS语句的文件的,所以我们上传文件

内容为

我们想要最大化利用可以上传在首页或者管理员 界面,利用自定义弹窗来渗透

这里对管理员页面 general 目录上传

请求包为

其中 USER_ID=../../general/.user 为上传路径

这里拼接后上传就变成了 .user.ini

这里再上传 XSS文件 peiqi.log 被包含进去

上传后每次管理员登录后都会带着Cookie请求一次XSS平台

钓鱼什么的代码写在peiqi.log文件里就好啦

刚刚提到了 v11.7版本不方便利用,这是因为在后续版本加上了文件上传的规定路径

路径中必须要包含 webroot 和 attachment 才可以上传

这里XSS的利用点有4个文件夹,其中最有几率XSS的为存储目录管理的文件夹

用同样的方法上传利用文件,每次当管理员设置时就会盗取Cookie

漏洞利用POC

因为是xss可能对目标有影响,所以这里POC在一个不常用目录探测是否存在漏洞

Cookie填写访问后台时的Cookie, 其中的base64解码更改 PeiQi_Wiki为 自己的XSS语句

v11.6及以下 攻击 /general 和 /general/system/attachment 目录较好

v11.6以上 攻击 /general/system/attachment 目录较好

参考文章

https://paper.seebug.org/1499/

Last updated

Was this helpful?