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-go — SQLite 3.53.4 CLI - Alta - Local - Inyección de comandos - terminadores go y slash y luego comando punto | Kitploit
Herramientas/GitHubGitHub/abraxas/sqlite-cli-go
Análisis de VulnerabilidadesExplotaciónVirtualización de SeguridadCriptografíaPruebas de PenetraciónLabs y Práctica
GitHubabraxas/sqlite-cli-go

sqlite-cli-go

SQLite 3.53.4 CLI - Alta - Local - Inyección de comandos - terminadores go y slash y luego comando punto

Ver Repositorio
22hace 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-go

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

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

sqlite-cli-go

Clase: Inyección de comandos Alcance: Local

La CLI sqlite3 predeterminada de SQLite 3.53.4 (b09c88c) sigue tratando go de SQL Server y / de Oracle como terminadores de sentencia. line_is_command_terminator reescribe esa línea a ;. La siguiente línea con un búfer SQL vacío es do_meta_command, por lo que .shell / .output / .read se ejecutan con el UID del operador.

--safe sigue bloqueando .shell. Ese control se mantiene. El sqlite3 predeterminado no activa --safe. No es libsqlite3. Oracle es un echo de una cadena testigo.

IDaún sin CVE
ClaseInyección de comandos (terminador go / / de la CLI y luego un dot-command posterior)
AlcanceLocal (la víctima ejecuta el sqlite3 predeterminado sobre SQL/script del atacante sin --safe; UI:R)
CWECWE-78
CVSSAlto: 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 entrega un script al sqlite3 predeterminado; sin --safe
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1:18920. Testigo SQLITE-CLI-GO-WITNESS.

Qué puede hacer un atacante

Tras SQL sin terminar en un script que el operador entrega a sqlite3 sin --safe, una línea go o / y luego .shell / .output / .read se ejecutan con el UID del operador.

Un punto y coma ya termina una sentencia. Lo que queda es SQL terminador que no tiene ;, de modo que un wrapper que creía que la sentencia seguía abierta aún ejecuta el siguiente dot-command. .shell es system(). El oráculo del laboratorio es un 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 después de OpenLiteSpeed. La última GA, no el borrador 3.54.0. Los extras de la CLI no son la biblioteca predeterminada. --safe es el mecanismo documentado para scripts no confiables (CVE-2022-46908). Sigue bloqueando .shell. El sqlite3 predeterminado no lo activa.

src/shell.c.in todavía tiene la ruta de compatibilidad con SQL Server / Oracle. El trunk ac6ac0c22d (2026-10-08) la desactiva salvo que se defina SQLITE_SHELL_LEGACY_COMMAND_TERMINATOR. Ese check-in es posterior a esta GA.

Falsos caminos ya registrados: tratar un punto y coma como el mismo resto; volver a reportar CVE-2022-46908; esperar que --safe sea predeterminado; llamar a esto RCE de libsqlite3; usar una reverse shell como oráculo; fijar la 3.54.0 (borrador).

Laboratorio

cd lab
./run.sh

Compila el sqlite-src-3530400 oficial en el sqlite3 de Unix predeterminado (--disable-readline). Compone sqlite-cli-go. TCP ficticio en 127.0.0.1:18920. La CLI predeterminada trató go y / como terminadores y luego ejecutó .shell echo SQLITE-CLI-GO-WITNESS. --safe imprimió cannot run .shell in safe mode. Vincula loopback.

SUCCESS sqlite-cli-go how=go-then-dot-shell slash=yes safe=blocked SQLITE-CLI-GO-WITNESS

La solución

Dejar de tratar go y / como terminadores, que es lo que hace el trunk ac6ac0c22d a menos que se use -DSQLITE_SHELL_LEGACY_COMMAND_TERMINATOR. Hasta entonces, ejecutar scripts no confiables con --safe. --safe es el control que sigue vigente.

Referencias

  • sqlite.org/src etiqueta version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • Zip oficial https://www.sqlite.org/2026/sqlite-src-3530400.zip
  • src/shell.c.in line_is_command_terminator, reescritura de process_input, do_meta_command, .shell system() después de failIfSafeMode
  • CVE-2022-46908 --safe
  • sqlite.org/cli.html CLI --safe
  • CWE-78
Descargar herramienta