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
proftpd-rewrite-utf8trans — ProFTPD 1.3.9d – Hoch – Remote – Absturz – RewriteMap int:utf8trans BSS-Überlauf | Kitploit
Tools/GitHubGitHub/abraxas/proftpd-rewrite-utf8trans
SchwachstellenanalyseExploitationFuzzingNetzwerksicherheitPenetrationstestsBinäranalyseLabs & Praxis
GitHubabraxas/proftpd-rewrite-utf8trans

proftpd-rewrite-utf8trans

ProFTPD 1.3.9d – Hoch – Remote – Absturz – RewriteMap int:utf8trans BSS-Überlauf

Repository anzeigen
12vor 8 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 - proftpd-rewrite-utf8trans

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  proftpd-rewrite-utf8trans

Write-up: https://abraxaslabs.tech/research/proftpd-rewrite-utf8trans

proftpd-rewrite-utf8trans

Klasse: Crash Reichweite: Remote

ProFTPD 1.3.9d (f59f248) - ProFTPD (proftpd.org)

Das contrib-Modul mod_rewrite liefert RewriteMap int:utf8trans mit. Dieses Builtin kopiert ein FTP-Argument des Clients (bis zu CommandBufferSize, 512 KiB) in zwei BSS-Puffer mit jeweils 1024 Slots, ohne die Zielgröße zu begrenzen. Ein langer ASCII-STOR-Name führt zu einem ASan-global-buffer-overflow-WRITE der Größe 8. Der Session-Child-Prozess bricht ab. Der Daemon läuft weiter. Klasse Crash. Kein RCE.

IDnoch keine CVE
KlasseCrash
ReichweiteRemote (FTP-Argument, das an int:utf8trans übergeben wird)
CWECWE-120
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, falls die RewriteRule pre-auth ist. Das Lab verwendete STOR nach dem Login, daher ist PR:L für diesen Lauf ehrlich (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H).
ProduktProFTPD
Betroffen1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_rewrite
AuthDas Lab verwendet authentifiziertes STOR. Eine pre-auth RewriteRule auf USER oder ähnliches wäre PR:N.
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

RewriteEngine ist deaktiviert, bis es konfiguriert wird. Das dokumentierte Muster ist RewriteRule (.*) ${map:$1}. Sobald eine RewriteRule das Client-Argument durch int:utf8trans leitet, überläuft ein Schlüssel, der länger als 1024 Bytes ist, zwei statische Puffer im Session-Child-Prozess.

MethodeSinkPrivileg
FTP-Befehl, dessen Argument der utf8trans-Map-Schlüssel ist, Länge > 1024rewrite_utf8_to_ucs4, dann utf8_val[i] = ucs4_longs[i]Verfügbarkeit (im Lab nachgewiesen): Absturz des Session-Child-Prozesses. ASan: global-buffer-overflow WRITE of size 8, dann ABORTING. Prefork: Ein frischer Login funktionierte weiterhin; der Daemon blieb oben. Ein kurzes STOR von 200 ASCII-Bytes überstand dies. Die Integrität benachbarter Rewrite-BSS wird vermutet und hängt vom Compiler-Layout ab.
RIP / Codeausführungnichts beanspruchtAusgeschlossen. Kein Payload. Klasse Crash. Kein RCE.
.ftpaccess-Plant von RewriteMapCONF_DYNDIRAusgeschlossen. RewriteMap ist in .ftpaccess nicht erlaubt.
prg:-Shellkein solcher Map-TypAusgeschlossen. FIFO ist Zeilen-I/O.

Im Lab nachgewiesen vs. vermutet: ASan-WRITE der Größe 8, Abbruch des Session-Child-Prozesses, überlebende Kontrolle mit kurzem Argument und Login nach dem Auslösen sind im Lab nachgewiesen. RIP/RCE wird nicht beansprucht.

Issue 2173 hat auf diesem Pin den ein-Byte-OOB von int:unescape gepatcht. Dieser Rest ist int:utf8trans. Anderes Builtin. Anderer Bug.

Wie ich es gefunden habe

Ich habe proftpd/proftpd auf Tag v1.3.9d gepinnt. Die CVE-Ernte 2026 und die öffentlichen GitHub-Issues, die noch in diesem Tarball steckten (2170, 2173, 2175, 2180, 2095, 2256, 2286, 2319, 2330, 2301), bildeten die Skip-Liste. Der Standard-Core-FTP mit Beispiel-basic.conf lieferte mir kein unveröffentlichtes Crit/High. Contrib rewrite schon.

rewrite_map_int_utf8trans (contrib/mod_rewrite.c) hat:

static unsigned char utf8_val[PR_TUNABLE_BUFFER_SIZE];   /* 1024 */
static unsigned long ucs4_longs[PR_TUNABLE_BUFFER_SIZE]; /* 1024 */
ucs4strlen = rewrite_utf8_to_ucs4(ucs4_longs, strlen(key), (unsigned char *) key);

rewrite_utf8_to_ucs4 schreibt ein unsigned long pro ASCII-Byte mit keiner Obergrenze. PR_TUNABLE_CMD_BUFFER_SIZE beträgt 512 KiB. Issue 2173 hat bereits unescape behoben. Diese Map war nicht Teil dieses Fixes.

Irrwege: 2173 für diesen Bug zu halten; RIP zu behaupten, weil ASan WRITE der Größe 8 meldete; zu hoffen, dass .ftpaccess eine RewriteMap platzieren könnte. Das erste ist eine andere Funktion. Das zweite ist weiterhin Crash. Das dritte ist CONF_DYNDIR.

ASan plus Standard-libcrypt führt bei PASS zu SIGSEGV, bevor die Rewrite-Senke erreicht wird. Das Lab lädt einen winzigen crypt(3)-Stub vor, damit der Login funktioniert. Dieser Stub ist kein Exploit.

Lab

python3 proftpd-rewrite-utf8trans-Abraxas-Labs.py

oder:

cd lab
./run.sh

Loopback 127.0.0.1:18740 plus passiv 18741-18750. Compose-Projekt proftpd-rewrite-utf8trans. Witness PROFTPD-REWRITE-UTF8TRANS-WITNESS. Das Image ist ein ASan-Build von 1.3.9d mod_rewrite. Kontroll-STOR von 200 ASCII-Bytes ist erfolgreich. STOR von 2048 ASCII-Bytes ist ein ASan global-buffer-overflow WRITE der Größe 8 und der Session-Kindprozess bricht ab. Ein frischer Login nach dem Trigger funktioniert weiterhin.

SUCCESS PROFTPD-REWRITE-UTF8TRANS asan=global-buffer-overflow write=yes child-dead=yes PROFTPD-REWRITE-UTF8TRANS-WITNESS

Die Behebung

Begrenze die Ziel-Länge von rewrite_utf8_to_ucs4 auf PR_TUNABLE_BUFFER_SIZE-1. Beende das Schreiben über ucs4_longs / utf8_val hinaus. Lehne einen Map-Schlüssel, der nicht passt, ab oder kürze ihn.

Referenzen

  • github.com/proftpd/proftpd Tag v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • contrib/mod_rewrite.c rewrite_utf8_to_ucs4 / rewrite_map_int_utf8trans
  • In der Nähe gepatcht (nicht diese Map): Issue 2173 int:unescape
  • CWE-120

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.

Tool herunterladen