Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
sqlite-cli-go — SQLite 3.53.4 CLI - High - Local - Command injection - go and slash terminators then dot-command | Kitploit
Tools/GitHubGitHub/abraxas/sqlite-cli-go
Vulnerability AnalysisExploitationSecurity VirtualizationCryptographyPenetration TestingLabs & Practice
GitHubabraxas/sqlite-cli-go

sqlite-cli-go

SQLite 3.53.4 CLI - High - Local - Command injection - go and slash terminators then dot-command

View Repository
106 days agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Abraxas Labs - sqlite-cli-go

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

sqlite-cli-go

Class: Command injection Reach: Local

SQLite 3.53.4 (b09c88c) default sqlite3 CLI still treats SQL Server go and Oracle / as statement terminators. line_is_command_terminator rewrites that line to ;. The next line with an empty SQL buffer is do_meta_command, so .shell / .output / .read run as the operator UID.

--safe still blocks .shell. That control holds. Default sqlite3 does not turn --safe on. Not libsqlite3. Oracle is echo of a witness string.

IDno CVE yet
ClassCommand injection (CLI go / / terminator then a later dot-command)
ReachLocal (victim runs default sqlite3 on attacker SQL/script without --safe; 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
ProductSQLite (sqlite3 CLI)
Affected3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69) SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
Authvictim feeds a script to default sqlite3; no --safe
LicenseGNU Affero GPL v3.0
Lab127.0.0.1:18920 only. Witness SQLITE-CLI-GO-WITNESS.

What an attacker can do

After unterminated SQL in a script the operator feeds to sqlite3 without --safe, a go or / line then .shell / .output / .read runs as the operator UID.

A semicolon already ends a statement. The leftover is terminating SQL that has no ; so a wrapper that thought the statement was still open still runs the next dot-command. .shell is system(). The lab oracle is echo of a witness. Not a reverse shell.

How I found it

Twenty source hunts of 3.53.4 after OpenLiteSpeed. Latest GA, not the 3.54.0 draft. CLI extras are not the default library. --safe is the documented sink for untrusted scripts (CVE-2022-46908). It still blocks .shell. Default sqlite3 does not turn it on.

src/shell.c.in still has the SQL Server / Oracle compatibility path. Trunk ac6ac0c22d (2026-10-08) disables it unless SQLITE_SHELL_LEGACY_COMMAND_TERMINATOR. That check-in is after this GA.

Wrong turns already recorded: treating a semicolon as the same leftover; re-filing CVE-2022-46908; expecting --safe to be default; calling this libsqlite3 RCE; using a reverse shell as the oracle; pinning 3.54.0 (draft).

Lab

cd lab
./run.sh

Builds official sqlite-src-3530400 into default Unix sqlite3 (--disable-readline). Compose sqlite-cli-go. Dummy TCP on 127.0.0.1:18920. Default CLI treated go and / as terminators then ran .shell echo SQLITE-CLI-GO-WITNESS. --safe printed 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

The fix

Stop treating go and / as terminators, which is what trunk ac6ac0c22d does unless -DSQLITE_SHELL_LEGACY_COMMAND_TERMINATOR. Until then, run untrusted scripts with --safe. --safe is the control that still holds.

References

  • sqlite.org/src tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • Official zip https://www.sqlite.org/2026/sqlite-src-3530400.zip
  • src/shell.c.in line_is_command_terminator, process_input rewrite, do_meta_command, .shell system() after failIfSafeMode
  • CVE-2022-46908 --safe
  • sqlite.org/cli.html CLI --safe
  • CWE-78
Download Tool