Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
sqlite-cli-go — SQLite 3.53.4 CLI - 高危 - 本地 - 命令注入 - go 和斜杠终止符后接点命令 | Kitploit
工具/GitHubGitHub/abraxas/sqlite-cli-go
漏洞分析漏洞利用安全虚拟化密码学渗透测试实验室与实践
GitHubabraxas/sqlite-cli-go

sqlite-cli-go

SQLite 3.53.4 CLI - 高危 - 本地 - 命令注入 - go 和斜杠终止符后接点命令

查看仓库
106天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - sqlite-cli-go

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sqlite-cli-go

sqlite-cli-go

类别: 命令注入 影响范围: 本地

SQLite 3.53.4(b09c88c)默认的 sqlite3 CLI 仍将 SQL Server 的 go 和 Oracle 的 / 视为语句终止符。line_is_command_terminator 会将该行重写为 ;。当 SQL 缓冲区为空时,下一行会进入 do_meta_command,因此 .shell / .output / .read 会以操作员 UID 执行。

--safe 仍会阻止 .shell。该控制措施依然有效。默认的 sqlite3 不会开启 --safe。不是 libsqlite3。Oracle 是见证字符串的 echo。

ID暂无 CVE
类别命令注入(CLI go / / 终止符后接后续点命令)
影响范围本地(受害者在未使用 --safe 的情况下,对攻击者提供的 SQL/脚本运行默认 sqlite3;UI:R)
CWECWE-78
CVSS高危:7.8 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
产品SQLite(sqlite3 CLI)
受影响版本3.53.4(b09c88c14082339b66c7b7158d609a771e64ca69)SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
认证受害者向默认 sqlite3 提供脚本;未使用 --safe
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1:18920。见证字符串 SQLITE-CLI-GO-WITNESS。

攻击者能做什么

在操作员未使用 --safe 向 sqlite3 提供的脚本中存在未终止的 SQL 后,一行 go 或 / 后接 .shell / .output / .read 会以操作员 UID 执行。

分号已经结束了一条语句。剩余部分是终止 SQL,但没有 ;,因此认为语句仍处于打开状态的包装器仍会执行下一个点命令。.shell 即 system()。实验环境 oracle 是见证字符串的 echo。不是反向 shell。

我是如何发现的

在 OpenLiteSpeed 之后,对 3.53.4 进行了二十次源码搜寻。最新 GA 版本,而非 3.54.0 草案。CLI 附加功能并非默认库。--safe 是处理不受信任脚本的文档化防护措施(CVE-2022-46908)。它仍会阻止 .shell。默认 sqlite3 不会开启它。

src/shell.c.in 仍保留 SQL Server / Oracle 兼容路径。主干 ac6ac0c22d(2026-10-08)除非定义 SQLITE_SHELL_LEGACY_COMMAND_TERMINATOR,否则会禁用该路径。该提交在此 GA 版本之后。

已记录的弯路:将分号视为相同的剩余部分;重新提交 CVE-2022-46908;期望 --safe 成为默认;将此称为 libsqlite3 RCE;使用反向 shell 作为 oracle;锁定 3.54.0(草案)。

实验环境

cd lab
./run.sh

将官方 sqlite-src-3530400 构建为默认 Unix sqlite3(--disable-readline)。Compose sqlite-cli-go。在 127.0.0.1:18920 上运行 Dummy TCP。默认 CLI 将 go 和 / 视为终止符,然后运行 .shell echo SQLITE-CLI-GO-WITNESS。--safe 输出 cannot run .shell in safe mode。绑定回环地址。

SUCCESS sqlite-cli-go how=go-then-dot-shell slash=yes safe=blocked SQLITE-CLI-GO-WITNESS

修复方案

停止将 go 和 / 视为终止符,这正是主干 ac6ac0c22d 所做的,除非定义 -DSQLITE_SHELL_LEGACY_COMMAND_TERMINATOR。在此之前,请使用 --safe 运行不受信任的脚本。--safe 是仍然有效的控制措施。

参考资料

  • sqlite.org/src 标签 version-3.53.4(b09c88c14082339b66c7b7158d609a771e64ca69)
  • 官方 zip https://www.sqlite.org/2026/sqlite-src-3530400.zip
  • src/shell.c.in line_is_command_terminator、process_input 重写、do_meta_command、failIfSafeMode 之后的 .shell system()
  • CVE-2022-46908 --safe
  • sqlite.org/cli.html CLI --safe
  • CWE-78
下载工具