Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
sqlite-cli-recover — SQLite 3.53.4 CLI — High — Локальная — Инъекция команд — recover dump выводит враждебную схему как dot-команду | Kitploit
Инструменты/GitHubGitHub/abraxas/sqlite-cli-recover
Анализ уязвимостейЭксплуатацияТестирование на ПроникновениеКомандование и УправлениеСтатьи и ИсследованияБезопасность Баз ДанныхЛаборатории и Практика
GitHubabraxas/sqlite-cli-recover

sqlite-cli-recover

SQLite 3.53.4 CLI — High — Локальная — Инъекция команд — recover dump выводит враждебную схему как dot-команду

Репозиторий
288 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

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

Класс: Внедрение команд Доступ: Локальный

CLI-команда .recover в SQLite 3.53.4 (b09c88c) выводит враждебный sqlite_schema.sql как последующую dot-команду. recoverOneStmt подготавливает только первый оператор. Внедрённый CREATE TABLE вместе с переводом строки и .shell всё равно записывается. Документированный конвейер восстановления выполняет его с UID оператора.

printSchemaLine в .dump относится к тому же классу вывода. Это не 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 (CLI sqlite3)
Затронуто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. Жертва, которая восстанавливает эту БД во второй sqlite3, выполняет dot-команду со своим UID.

Внедрение — это файл .db. Действие жертвы — документированный конвейер восстановления, а не вставленная строка go и не случайно отключённый --safe. .shell — это system(). Оракул в лаборатории — echo свидетеля. Не reverse shell.

Как я это нашёл

Двадцать поисков по исходникам 3.53.4. Собственный поиск в recover назвал recoverOneStmt подготовкой только первого оператора и на этом остановился. Остаток — это путь вывода: recoverSqlCb всё равно выводит лишний текст. Передача этого скрипта через конвейер — это то, как sqlite.org советует восстанавливать.

Уже зафиксированные ошибочные пути: трактовка подготовки первого оператора как очистки; привязка к 3.54.0 (черновик); повторная подача CVE-2022-46908 --safe; называние этого RCE в libsqlite3; использование reverse shell в качестве оракула.

Лаборатория

cd lab
./run.sh

Собирает sqlite-src-3530400 в sqlite3 со стандартным Unix CLI recover (OPT_SHELL / SQLITE_ENABLE_DBPAGE_VTAB). writable_schema после .dbconfig defensive off. Внедрён CREATE TABLE t(x); плюс перевод строки .shell echo SQLITE-CLI-RECOVER-WITNESS. .recover вывел .shell. При передаче через конвейер во второй sqlite3 он выполнился. Привязка к loopback.

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

Исправление

Не выводите SQL-код схемы, если он не является единственным оператором. Разделяйте по первому prepare, выводите только этот оператор или отказывайтесь от строки. Заключайте обычный CREATE в кавычки так же, как это уже делает дамп виртуальных таблиц с помощью %q. Рассматривайте последующую строку с . как враждебную и отбрасывайте её. --safe в restore sqlite3 блокирует .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
Скачать инструмент