Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sqlite-cli-go — SQLite 3.53.4 CLI - Alta - Locale - Command injection - go e terminatori slash poi dot-command | Kitploit
Strumenti/GitHubGitHub/abraxas/sqlite-cli-go
Analisi delle VulnerabilitàExploitVirtualizzazione per la SicurezzaCrittografiaPenetration TestingLab e Pratica
GitHubabraxas/sqlite-cli-go

sqlite-cli-go

SQLite 3.53.4 CLI - Alta - Locale - Command injection - go e terminatori slash poi dot-command

Vedi Repository
229 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Abraxas Labs - sqlite-cli-go

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

Write-up: https://abraxaslabs.tech/research/sqlite-cli-go

sqlite-cli-go

Classe: Command injection Portata: Locale

La CLI predefinita sqlite3 di SQLite 3.53.4 (b09c88c) tratta ancora go di SQL Server e / di Oracle come terminatori di istruzione. line_is_command_terminator riscrive quella riga in ;. La riga successiva con un buffer SQL vuoto è do_meta_command, quindi .shell / .output / .read vengono eseguiti con l'UID dell'operatore.

--safe blocca ancora .shell. Quel controllo regge. Il sqlite3 predefinito non attiva --safe. Non è libsqlite3. L'oracolo è un echo di una stringa witness.

IDnessuna CVE al momento
ClasseCommand injection (terminatore CLI go / / seguito da un successivo dot-command)
PortataLocale (la vittima esegue il sqlite3 predefinito su SQL/script dell'attaccante senza --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
ProdottoSQLite (CLI sqlite3)
Affetto3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69) SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
Authla vittima fornisce uno script al sqlite3 predefinito; nessun --safe
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:18920. Witness SQLITE-CLI-GO-WITNESS.

Cosa può fare un attaccante

Dopo SQL non terminato in uno script che l'operatore fornisce a sqlite3 senza --safe, una riga go o / seguita da .shell / .output / .read viene eseguita con l'UID dell'operatore.

Un punto e virgola termina già un'istruzione. Ciò che resta è SQL terminante privo di ;, quindi un wrapper che riteneva l'istruzione ancora aperta esegue comunque il dot-command successivo. .shell è system(). L'oracolo del lab è un echo di una witness. Non una reverse shell.

Come l'ho trovato

Venti ricerche nel sorgente di 3.53.4 dopo OpenLiteSpeed. Ultima GA, non la bozza 3.54.0. Le estensioni della CLI non sono la libreria predefinita. --safe è il sink documentato per gli script non attendibili (CVE-2022-46908). Blocca ancora .shell. Il sqlite3 predefinito non lo attiva.

src/shell.c.in contiene ancora il percorso di compatibilità SQL Server / Oracle. Il trunk ac6ac0c22d (2026-10-08) lo disabilita a meno che non sia impostato SQLITE_SHELL_LEGACY_COMMAND_TERMINATOR. Quel check-in è successivo a questa GA.

Vicoli ciechi già registrati: considerare un punto e virgola come lo stesso residuo; ri-segnalare CVE-2022-46908; aspettarsi che --safe sia predefinito; definire questa una RCE di libsqlite3; usare una reverse shell come oracolo; fissare la 3.54.0 (bozza).

Lab

cd lab
./run.sh

Compila sqlite-src-3530400 ufficiale nel sqlite3 Unix predefinito (--disable-readline). Compose sqlite-cli-go. TCP fittizio su 127.0.0.1:18920. La CLI predefinita ha trattato go e / come terminatori, quindi ha eseguito .shell echo SQLITE-CLI-GO-WITNESS. --safe ha stampato cannot run .shell in safe mode. Bind su loopback.

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

La correzione

Smettere di trattare go e / come terminatori, che è ciò che fa il trunk ac6ac0c22d a meno che non si usi -DSQLITE_SHELL_LEGACY_COMMAND_TERMINATOR. Fino ad allora, eseguire gli script non attendibili con --safe. --safe è il controllo che regge ancora.

Riferimenti

  • sqlite.org/src tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • Zip ufficiale https://www.sqlite.org/2026/sqlite-src-3530400.zip
  • src/shell.c.in line_is_command_terminator, riscrittura di process_input, do_meta_command, .shell system() dopo failIfSafeMode
  • CVE-2022-46908 --safe
  • sqlite.org/cli.html CLI --safe
  • CWE-78
Scarica lo strumento