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 - 高 - ローカル - コマンドインジェクション - 復元ダンプが敵対的スキーマをドットコマンドとして出力

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - sqlite-cli-recover

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  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 でもない。オラクルは witness 文字列の echo である。

IDCVE 未採番
分類コマンドインジェクション (CLI .recover / .dump スキーマ出力)
到達範囲ローカル (被害者がドキュメント化された recover パイプを実行する。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 のみ。Witness SQLITE-CLI-RECOVER-WITNESS。

攻撃者ができること

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

仕込みは .db ファイルである。被害者の操作はドキュメント化された recover パイプであり、貼り付けた go 行でも、誤って --safe を外したのでもない。.shell は system() である。ラボのオラクルは witness の 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 を、デフォルトの Unix CLI recover (OPT_SHELL / SQLITE_ENABLE_DBPAGE_VTAB) 付きで sqlite3 にビルドする。.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 は、仮想テーブルの dump がすでに使用している %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
ツールをダウンロード