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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
sqlite-rsync-ssh — SQLite 3.53.4 sqlite3_rsync - 高危 - 远程 - RCE - SSH 文件名命令注入 | Kitploit
工具/GitHubGitHub/abraxas/sqlite-rsync-ssh
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制红队实验室与实践
GitHubabraxas/sqlite-rsync-ssh

sqlite-rsync-ssh

SQLite 3.53.4 sqlite3_rsync - 高危 - 远程 - RCE - SSH 文件名命令注入

查看仓库
6天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - sqlite-rsync-ssh

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

sqlite-rsync-ssh

类别: RCE(命令注入) 触达: 远程(UI:R)

SQLite 3.53.4(b09c88c)的 sqlite3_rsync 为本地 /bin/sh -c 引用 USER@HOST:PATH。随后 OpenSSH 会将这些引号去掉,把远程 argv 以空格拼接后交给登录 shell。PATH 中的分号、$()、反引号或 | 会以 SSH 远程 UID 执行。这是工具,不是 libsqlite3。Ada Logics 的 readPow2 x>16 栈溢出在此版本已修复。

ID暂无 CVE
类别RCE(以 SSH 远程 UID 执行命令注入)
触达远程(受害者运行 sqlite3_rsync;UI:R)
CWECWE-78
CVSSHigh: 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
产品SQLite sqlite3_rsync 工具
受影响版本3.53.4(b09c88c14082339b66c7b7158d609a771e64ca69,SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc)
认证受害者使用恶意的 USER@HOST:PATH 运行 sqlite3_rsync
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1:18910。Echo 见证。无反向 shell。

攻击者能做什么

在 sqlite3_rsync USER@HOST:PATH 的远程路径中放入 ;、$()、反引号或 |。受害者必须运行该工具(UI:R)。额外命令会以 SSH 远程 UID 执行。

append_escaped_arg(..., 1) 为本地 /bin/sh -c 添加单引号。这些引号在本地被消耗掉。OpenSSH 将剩余的 argv 拼接成一个远程命令字符串。登录 shell 看到的元字符没有引号保护。

这不是 libsqlite3。默认的 sqlite3.c 不包含此协议。Ada Logics 的副本栈溢出(readPow2 指数上限)在 3.53.4 上已修复。

我是如何发现的

在 3.53.2 FTS5 / session 浪潮之后,对 SQLite 标签 version-3.53.4 进行了二十次源码搜寻。默认库仍有其他遗留问题(本包是 rsync 工具)。tool/sqlite3_rsync.c 的 popen2 执行 /bin/sh -c。hostSeparator 在第一个冒号处分割。append_escaped_arg 的返回值从未被检查。

错误方向:认为 Ada Logics 栈溢出仍未修复;搭建反向 shell 实验;连接真实的 sshd;锁定草稿版 3.54.0;将其称为库 RCE。

实验环境

cd lab
./run.sh

从官方 3.53.4 源码 zip 构建 sqlite3_rsync。伪造的 OpenSSH 在 dest 之后拼接 argv。Origin 为 lab@host:;echo SQLITE-RSYNC-SSH-WITNESS>/work/sandbox/pwned.txt。远程命令包含未加引号的 ;echo。绑定回环地址。

SUCCESS sqlite-rsync-ssh how=openssh-argv-join dest=lab@host remote-has-semicolon=yes SQLITE-RSYNC-SSH-WITNESS

修复方案

按照 trunk b0db2db(2026-10-07,ANT-2026-31X9HVRR)在此 GA 之后的做法,对发送给对端的文件名进行十六进制编码(isFilename==2 / --encoded-filenames)。USER@HOST 和 --ssh 仍使用本地 sh 引用。不要依赖本地单引号能在 OpenSSH argv 拼接后保留。

参考资料

  • https://sqlite.org/src pin https://github.com/sqlite/sqlite/tree/version-3.53.4(`b09c88c14082339b66c7b7158d609a771e64ca69`)
  • https://github.com/sqlite/sqlite/blob/version-3.53.4/tool/sqlite3_rsync.c append_escaped_arg、popen2、远程 ORIGIN/REPLICA SSH argv
  • https://sqlite.org/rsync.html
  • Trunk 十六进制编码 b0db2db / Fossil eaec2f7f(2026-10-07)
下载工具