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
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストコマンド&コントロールレッドチーミングラボと実践
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 をログインシェル向けにクォートなしでスペース結合する。PATH 内のセミコロン、$()、バッククォート、または | は、SSH リモート UID として実行される。libsqlite3 ではなくユーティリティである。Ada Logics の readPow2 x>16 スタックスマッシュは、このピンでは修正済みである。

IDCVE 未割当
分類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 のみ。エコーによる証跡。リバースシェルなし。

攻撃者ができること

sqlite3_rsync USER@HOST:PATH のリモートパスに ;、$()、バッククォート、または | を入れる。被害者はこのユーティリティを実行する必要がある (UI:R)。追加コマンドは SSH リモート UID として実行される。

append_escaped_arg(..., 1) はローカルの /bin/sh -c 向けにシングルクォートで囲む。これらのクォートはローカルで消費される。OpenSSH は残りの argv を 1 つのリモートコマンド文字列に連結する。ログインシェルはメタ文字をクォートなしで受け取る。

これは libsqlite3 ではない。デフォルトの sqlite3.c はこのプロトコルを同梱していない。Ada Logics のレプリカスタックスマッシュ (readPow2 指数上限) は 3.53.4 で既に修正済みである。

発見の経緯

3.53.2 の FTS5 / session の波の後、SQLite タグ version-3.53.4 を 20 回ソース探索した。デフォルトライブラリには依然として他の残存物がある (このパックは rsync ユーティリティである)。tool/sqlite3_rsync.c の popen2 は /bin/sh -c を exec する。hostSeparator は最初のコロンで分割する。append_escaped_arg の戻り値は決してチェックされない。

誤った道: Ada Logics のスタックスマッシュをまだ未修正とみなすこと、リバースシェルをラボで試すこと、実際の 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

修正

この GA の後、trunk b0db2db (2026-10-07, ANT-2026-31X9HVRR) が行うように、ピアへ送信するファイル名を hex エンコードする (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 hex-encode b0db2db / Fossil eaec2f7f (2026-10-07)
ツールをダウンロード