通达OA文件上传及文件包含漏洞分析

2020-03-27 约 92 字 预计阅读 1 分钟

声明:本文 【通达OA文件上传及文件包含漏洞分析】 由作者 爱吃猫的闲鱼 于 2020-03-27 09:48:30 首发 先知社区 曾经 浏览数 91 次

感谢 爱吃猫的闲鱼 的辛苦付出!

一 前言

安全圈只要爆出一个重大漏洞,就是一次腥风血雨,学习代码审计没有多久,看着网上各位大佬分析,也忍不住想分析一下,主要是看到好像漏洞利用不太难,适合我等初学者学习。
本次复现环境是通达OAV11.3,文件上传漏洞为全版本通杀,文件包含漏洞/ispirit/interface/gateway.php只有V11.3版本存在,web文件加密为zend加密,需要下载解密软件进行解密,相关软件下载地址如下:
OA软件地址:https://www.tongda2000.com/download/2019.php
zend 5.4解密工具:https://www.cr173.com/soft/418289.html

二任意文件上传

根据网上众多复现内容,跟进到存在漏洞的文件ispirit/im/upload.php这个文件

$P = $_POST["P"];
if (isset($P) || ($P != "")) {
    ob_start();
    include_once "inc/session.php";
    session_id($P);
    session_start();
    session_write_close();
}
else {
    include_once "./auth.php";
}

如果直接访问该url会提示用户未登录

如果带入P参数提交的话,可以看到PHPSESSID已经设置为P参数,已经绕过了登录限制

然后接下来根据流程,开始判断DEST_UID参数,只需要传入一个不为空和0的数字即可
intval($DEST_UID)如果是空或者为0输出都是0

报错是无文件上传

接下来继续跟进函数,只要是全局变量1 <= count($_FILES)即可,也就是有文件上传就会调用upload函数

然后跟进到upload函数,位于inc/utility_file.php中,当然主要看的是上传允许的后缀问题,但是这里所用的getshell方式是文件包含,绕不绕过也就无所谓了

if (!is_uploadable($ATTACH_NAME)) {
                $ERROR_DESC = sprintf(_("禁止上传后缀名为[%s]的文件"), substr($ATTACH_NAME, strrpos($ATTACH_NAME, ".") + 1));
            }

可以看到调用了is_uploadable函数,跟进到该函数,同样位于inc/utility_file.php,代码意思是寻找最后
一次出现 . 的位置,然后寻找后三个字符,然后变成小写字符看是否匹配字符’php’,绕过方式为在最后加 .

然后继续跟进函数UPLOAD_MODE 该函数是用来回显用的,参数值为 1 2 3,

当UPLOAD_MODE值为1时,看返回的值

然后分析下这个保存路径问题
首先可以看到UPLOAD_MODE所需要的ATTACHMENT_ID等参数来自于ATTACHMENTS,
而ATTACHMENTS则是调用upload函数的返回结果

我们所需要的ATTACHMENTS["ID"]来源于add_attach函数,add_attach函数同样位于inc/utility_file.php文件下

在add_attach函数中,看到保存路径,FILENAME

然后看这个函数的返回值,返回值中包含了文件路径以及自定义部分的文件名,在upload函数返回了原始文件名部分。

上传可以用写一个html来进行

三 文件包含

漏洞文件位于ispirit/interface/gateway.php

http://localhost:8081/ispirit/interface/gateway.php?json={%22url%22:%22qqqispirit/../../attach/im/2003/376154918.x.php%22}

关键词:[‘安全技术’, ‘漏洞分析’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now