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 およびスラッシュ終端文字の後にドットコマンド

リポジトリを見る
229日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Abraxas Labs - sqlite-cli-go

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

解説記事: https://abraxaslabs.tech/research/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 です。

IDCVE 未割当
分類コマンドインジェクション (CLI の go / / 終端に続く後続のドットコマンド)
到達範囲ローカル (被害者が --safe なしでデフォルト sqlite3 に攻撃者の SQL/スクリプトを実行させる; UI:R)
CWECWE-78
CVSSHigh: 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() です。ラボのオラクルは証拠文字列の echo です。リバースシェルではありません。

発見の経緯

OpenLiteSpeed に続く 3.53.4 のソース探索は 20 回目です。最新の 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 と呼ぶこと、リバースシェルをオラクルとして使うこと、3.54.0 (ドラフト) に固定すること。

ラボ

cd lab
./run.sh

公式の sqlite-src-3530400 をデフォルトの Unix sqlite3 にビルドします(--disable-readline)。sqlite-cli-go を Compose します。127.0.0.1:18920 でダミー 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 と / を終端文字として扱うのをやめてください。これは trunk 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
ツールをダウンロード