Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
sqlite-cli-recover — SQLite 3.53.4 CLI - 高 - ローカル - コマンドインジェクション - 復元ダンプが敵対的スキーマをドットコマンドとして出力 | Kitploit
ツール/GitHubGitHub/abraxas/sqlite-cli-recover
脆弱性分析エクスプロイトペネトレーションテストコマンド&コントロール論文と研究データベースセキュリティラボと実践
GitHubabraxas/sqlite-cli-recover

sqlite-cli-recover

SQLite 3.53.4 CLI - 高 - ローカル - コマンドインジェクション - 復元ダンプが敵対的スキーマをドットコマンドとして出力

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - sqlite-cli-recover

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

解説記事: https://abraxaslabs.tech/research/sqlite-cli-recover

sqlite-cli-recover

分類: コマンドインジェクション 到達範囲: ローカル

SQLite 3.53.4 (b09c88c) CLI の .recover は、敵対的な sqlite_schema.sql を後続のドットコマンドとして出力する。recoverOneStmt は最初のステートメントのみを prepare する。仕込まれた CREATE TABLE と改行を挟んだ .shell は依然として書き出される。ドキュメントに記載されたリストア用パイプが、これをオペレータの UID で実行する。

.dump の printSchemaLine も同じ出力クラスである。libsqlite3 ではない。--safe でもない。オラクルは目印文字列の echo である。

IDCVE 未割当
分類コマンドインジェクション (CLI .recover / .dump のスキーマ出力)
到達範囲ローカル (被害者がドキュメント記載のリカバリ用パイプを実行する。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 hostile.db .recover | sqlite3 restored.db を実行する
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:18930 のみ。目印 SQLITE-CLI-RECOVER-WITNESS。

攻撃者ができること

有効な最初の CREATE と、後続の .shell を sqlite_schema.sql に仕込む。その db を 2 つ目の sqlite3 にリカバリした被害者は、ドットコマンドを自身の UID で実行してしまう。

仕込みは .db ファイルである。被害者の操作はドキュメント記載のリカバリ用パイプであり、貼り付けた go 行でも、誤って --safe を外したのでもない。.shell は system() である。ラボのオラクルは目印の echo である。リバースシェルではない。

発見の経緯

3.53.4 を対象に 20 回のソース探索を行った。recover 自体の探索では、recoverOneStmt を最初のステートメントのみを prepare するものと結論づけて打ち切った。残されたのは出力経路である。recoverSqlCb は依然として余分なテキストを出力する。そのスクリプトをパイプで流すのが、sqlite.org が示すリストア方法である。

既に記録済みの誤った道筋: 最初のステートメントのみの prepare を除去とみなしたこと、3.54.0 (ドラフト) に固定したこと、CVE-2022-46908 の --safe を再提出したこと、これを libsqlite3 の RCE と呼んだこと、リバースシェルをオラクルとして使ったこと。

ラボ

cd lab
./run.sh

sqlite-src-3530400 を sqlite3 にビルドし、デフォルトの Unix CLI recover(OPT_SHELL / SQLITE_ENABLE_DBPAGE_VTAB)を有効化。.dbconfig defensive off の後に writable_schema。CREATE TABLE t(x); と改行 .shell echo SQLITE-CLI-RECOVER-WITNESS を仕込む。.recover が .shell を出力。2 つ目の sqlite3 にパイプすると実行された。ループバックにバインド。

SUCCESS sqlite-cli-recover how=recover-pipe-dot-shell recover-has-shell=yes restore-echo=yes SQLITE-CLI-RECOVER-WITNESS

修正

単一のステートメントではないスキーマ SQL を出力しないこと。最初の prepare で分割し、そのステートメントのみを出力するか、その行を拒否すること。通常の CREATE は、仮想テーブルのダンプがすでに使用している %q と同様にクォートすること。後続の . 行は敵対的なものとして扱い、破棄すること。リストア用 sqlite3 の --safe は .shell をブロックするが、ドキュメントに記載されたパイプでは有効になっていない。

参考文献

  • sqlite.org/src タグ version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • Recovering Data From A Corrupt SQLite Database - ドキュメント化された .recover とその後のリストア
  • ext/recover/sqlite3recover.c recoverOneStmt / recoverWriteSchema1
  • src/shell.c.in recoverSqlCb、.dump の printSchemaLine
ツールをダウンロード