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
10hace 6 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

sqlite-cli-go

Clase: Inyección de comandos Alcance: Local

El CLI sqlite3 predeterminado 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 echo de una cadena testigo.

IDaún sin CVE
ClaseInyección de comandos (terminador go / / del 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
Authla víctima entrega un script al sqlite3 predeterminado; sin --safe
LicenciaGNU Affero GPL v3.0
Labsolo 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 terminado que no tiene ;, por lo 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 lab es 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. Última GA, no el borrador 3.54.0. Los extras del CLI no son la biblioteca predeterminada. --safe es el sink 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 a menos que se defina SQLITE_SHELL_LEGACY_COMMAND_TERMINATOR. Ese check-in es posterior a esta GA.

Caminos equivocados ya registrados: tratar un punto y coma como el mismo remanente; 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 3.54.0 (borrador).

Lab

cd lab
./run.sh

Compila el sqlite-src-3530400 oficial en el sqlite3 Unix predeterminado (--disable-readline). Compose sqlite-cli-go. TCP dummy en 127.0.0.1:18920. El CLI predeterminado trató go y / como terminadores y luego ejecutó .shell echo SQLITE-CLI-GO-WITNESS. --safe imprimió cannot run .shell in safe mode. Bind 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 aún se mantiene.

Referencias

  • sqlite.org/src tag 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