Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
sqlite-rsync-ssh — SQLite 3.53.4 sqlite3_rsync – Hoch – Remote – RCE – SSH-Dateinamen-Befehlsinjektion | Kitploit
Tools/GitHubGitHub/abraxas/sqlite-rsync-ssh
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsCommand and ControlRed TeamingLabs & Praxis
GitHubabraxas/sqlite-rsync-ssh

sqlite-rsync-ssh

SQLite 3.53.4 sqlite3_rsync – Hoch – Remote – RCE – SSH-Dateinamen-Befehlsinjektion

Repository anzeigen
216vor 7 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Abraxas Labs - sqlite-rsync-ssh

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

Write-up: https://abraxaslabs.tech/research/sqlite-rsync-ssh

sqlite-rsync-ssh

Klasse: RCE (Command Injection) Reichweite: Remote (UI:R)

SQLite 3.53.4 (b09c88c) sqlite3_rsync setzt USER@HOST:PATH für lokales /bin/sh -c in Anführungszeichen. OpenSSH fügt dann die entfernten argv für die Login-Shell per Leerzeichen zusammen – ohne diese Anführungszeichen. Ein Semikolon, $(), Backtick oder | in PATH wird als SSH-Remote-UID ausgeführt. Util, nicht libsqlite3. Der Ada-Logics-readPow2-x>16-Stack-Smash ist bei diesem Pin geschlossen.

IDnoch keine CVE
KlasseRCE (Command Injection als SSH-Remote-UID)
ReichweiteRemote (Opfer führt sqlite3_rsync aus; UI:R)
CWECWE-78
CVSSHoch: 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
ProduktSQLite sqlite3_rsync-Util
Betroffen3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc)
AuthOpfer führt sqlite3_rsync mit einem feindlichen USER@HOST:PATH aus
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1:18910. Echo-Witness. Keine Reverse Shell.

Was ein Angreifer tun kann

Setze ;, $(), Backticks oder | in den entfernten Pfad von sqlite3_rsync USER@HOST:PATH. Das Opfer muss das Util ausführen (UI:R). Der zusätzliche Befehl läuft als SSH-Remote-UID.

append_escaped_arg(..., 1) setzt einfache Anführungszeichen für lokales /bin/sh -c. Diese Anführungszeichen werden lokal verbraucht. OpenSSH verkettet die verbleibenden argv zu einem einzigen entfernten Befehlsstring. Die Login-Shell sieht die Metazeichen ohne Anführungszeichen.

Dies ist nicht libsqlite3. Das Standard-sqlite3.c liefert dieses Protokoll nicht mit. Der Ada-Logics-Replica-Stack-Smash (Exponenten-Cap in readPow2) ist bei 3.53.4 bereits geschlossen.

Wie ich es gefunden habe

Zwanzig Quellcode-Durchsuchungen des SQLite-Tags version-3.53.4 nach der 3.53.2-FTS5-/Session-Welle. Die Standardbibliothek enthält noch andere Überbleibsel (dieses Paket ist das rsync-Util). tool/sqlite3_rsync.c popen2 führt /bin/sh -c aus. hostSeparator trennt am ersten Doppelpunkt. Der Rückgabewert von append_escaped_arg wird nie geprüft.

Irrwege: den Ada-Logics-Stack-Smash als noch offen zu behandeln; eine Reverse Shell im Lab zu testen; mit einem echten sshd zu kommunizieren; den Entwurf 3.54.0 zu pinnen; dies als Library-RCE zu bezeichnen.

Lab

cd lab
./run.sh

Baut sqlite3_rsync aus dem offiziellen 3.53.4-Quellcode-Zip. Fake-OpenSSH fügt argv nach dest zusammen. Origin lab@host:;echo SQLITE-RSYNC-SSH-WITNESS>/work/sandbox/pwned.txt. Der entfernte Befehl enthielt ein nicht in Anführungszeichen gesetztes ;echo. Bind auf Loopback.

SUCCESS sqlite-rsync-ssh how=openssh-argv-join dest=lab@host remote-has-semicolon=yes SQLITE-RSYNC-SSH-WITNESS

Der Fix

Dateinamen, die an den Peer gesendet werden (isFilename==2 / --encoded-filenames), hex-kodieren, so wie es Trunk b0db2db (2026-10-07, ANT-2026-31X9HVRR) nach diesem GA tut. USER@HOST und --ssh bleiben bei lokaler sh-Quotierung. Verlasse dich nicht darauf, dass lokale einfache Anführungszeichen das OpenSSH-argv-Join überstehen.

Referenzen

  • https://sqlite.org/src Pin https://github.com/sqlite/sqlite/tree/version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite/blob/version-3.53.4/tool/sqlite3_rsync.c append_escaped_arg, popen2, entfernte ORIGIN/REPLICA-SSH-argv
  • https://sqlite.org/rsync.html
  • Trunk-Hex-Kodierung b0db2db / Fossil eaec2f7f (2026-10-07)
Tool herunterladen