Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
sqlite-cli-recover — SQLite 3.53.4 CLI - Alta - Local - Inyección de comandos - recover dump emite un esquema hostil como comando de punto | Kitploit
Herramientas/GitHubGitHub/abraxas/sqlite-cli-recover
Análisis de VulnerabilidadesExplotaciónPruebas de PenetraciónComando y ControlPapers e InvestigaciónSeguridad de Bases de DatosLabs y Práctica
GitHubabraxas/sqlite-cli-recover

sqlite-cli-recover

SQLite 3.53.4 CLI - Alta - Local - Inyección de comandos - recover dump emite un esquema hostil como comando de punto

Ver Repositorio
30hace 9 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Abraxas Labs - sqlite-cli-recover

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

Análisis: https://abraxaslabs.tech/research/sqlite-cli-recover

sqlite-cli-recover

Clase: Inyección de comandos Alcance: Local

La CLI de SQLite 3.53.4 (b09c88c) .recover imprime un sqlite_schema.sql hostil como un dot-command posterior. recoverOneStmt prepara solo la primera sentencia. Un CREATE TABLE plantado más un .shell en una nueva línea se sigue escribiendo. La tubería de restauración documentada lo ejecuta con el UID del operador.

.dump printSchemaLine pertenece a la misma clase de emisión. No es libsqlite3. No es --safe. El oráculo es el echo de una cadena testigo.

IDaún sin CVE
ClaseInyección de comandos (emisión de esquema de la CLI .recover / .dump)
AlcanceLocal (la víctima ejecuta la tubería de recuperación documentada; UI:R)
CWECWE-78
CVSSAlta: 7.8 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
ProductoSQLite (CLI sqlite3)
Afectado3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69) SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
Autenticaciónla víctima ejecuta sqlite3 hostile.db .recover | sqlite3 restored.db
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1:18930. Testigo SQLITE-CLI-RECOVER-WITNESS.

Qué puede hacer un atacante

Plantar un primer CREATE válido más un .shell posterior en sqlite_schema.sql. Una víctima que recupera esa base de datos en un segundo sqlite3 ejecuta el dot-command con su UID.

Lo plantado es un archivo .db. La acción de la víctima es la tubería de recuperación documentada, no una línea go pegada ni un --safe desactivado por accidente. .shell es system(). El oráculo del laboratorio es el echo de un testigo. No es una reverse shell.

Cómo lo encontré

Veinte búsquedas en el código fuente de 3.53.4. La propia búsqueda de recover calificó a recoverOneStmt como una preparación de solo la primera sentencia y siguió adelante. Lo que queda es la ruta de impresión: recoverSqlCb sigue emitiendo el texto adicional. Canalizar ese script es como sqlite.org te indica que restaures.

Errores ya registrados: tratar la preparación de la primera sentencia como un saneamiento; fijar la versión 3.54.0 (borrador); volver a presentar CVE-2022-46908 --safe; llamar a esto RCE de libsqlite3; usar una reverse shell como oráculo.

Laboratorio

cd lab
./run.sh

Compila sqlite-src-3530400 en sqlite3 con la recuperación predeterminada de la CLI de Unix (OPT_SHELL / SQLITE_ENABLE_DBPAGE_VTAB). writable_schema tras .dbconfig defensive off. Se plantó CREATE TABLE t(x); más un salto de línea .shell echo SQLITE-CLI-RECOVER-WITNESS. .recover imprimió .shell. Canalizado a un segundo sqlite3, se ejecutó. Enlaza a loopback.

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

La solución

No imprimir SQL de esquema que no sea una única sentencia. Dividir en el primer prepare, emitir solo esa sentencia, o rechazar la fila. Citar el CREATE ordinario de la forma en que el volcado de tabla virtual ya usa %q. Tratar una línea . posterior como hostil y descartarla. --safe en el sqlite3 de restauración bloquea .shell; no está activado en la tubería documentada.

Referencias

  • sqlite.org/src etiqueta version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • Recovering Data From A Corrupt SQLite Database - .recover documentado y luego restauración
  • ext/recover/sqlite3recover.c recoverOneStmt / recoverWriteSchema1
  • src/shell.c.in recoverSqlCb, .dump printSchemaLine
Descargar herramienta