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
vor 3 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

proftpd-rewrite-utf8trans

Klasse: Crash Reichweite: Remote

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

contrib mod_rewrite liefert RewriteMap int:utf8trans. Dieses Builtin kopiert ein Client-FTP-Argument (bis zu CommandBufferSize, 512 KiB) in zwei BSS-Puffer mit 1024 Slots ohne Zielbegrenzung. Ein langer ASCII-STOR-Name ist ein ASan global-buffer-overflow WRITE der Größe 8. Das Session-Kind bricht ab. Der Daemon bleibt oben. Klasse Crash. Kein RCE.

IDnoch keine CVE
KlasseCrash
ReichweiteRemote (FTP-Argument an int:utf8trans übergeben)
CWECWE-120
CVSSHoch: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, wenn die RewriteRule pre-auth ist. Das Lab verwendete STOR nach 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
AuthLab ist authentifiziertes STOR. Eine Pre-Auth-RewriteRule auf USER oder ähnlich wäre PR:N.
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

RewriteEngine ist aus, 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-Kind.

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 (lab-bewiesen): Absturz des Session-Kinds. 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 überlebte. Die Integrität benachbarter Rewrite-BSS wird vermutet und ist vom Compiler-Layout abhängig.
RIP / Codeausführungkeine behauptetGeschlossen. Keine Payload. Klasse Crash. Kein RCE.
.ftpaccess-Plant von RewriteMapCONF_DYNDIRGeschlossen. RewriteMap ist in .ftpaccess nicht erlaubt.
prg: Shellkein solcher Map-TypGeschlossen. FIFO ist Zeilen-I/O.

Lab-bewiesen vs. vermutet: ASan WRITE der Größe 8, Session-Kind-Abbruch, überlebende Kurzargument-Kontrolle und Login nach Auslösung sind lab-bewiesen. RIP/RCE wird nicht behauptet.

Issue 2173 patchte int:unescape Ein-Byte-OOB auf diesem Pin. Dieser Rest ist int:utf8trans. Anderes Builtin. Anderer Bug.

Wie ich es gefunden habe

Ich pinnte proftpd/proftpd Tag v1.3.9d. Die 2026er CVE-Ernte und die öffentlichen GitHub-Issues, die noch in diesem Tarball lagen (2170, 2173, 2175, 2180, 2095, 2256, 2286, 2319, 2330, 2301), waren die Skip-Liste. Standard-Core-FTP mit Beispiel-basic.conf gab 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 ohne Begrenzung. PR_TUNABLE_CMD_BUFFER_SIZE ist 512 KiB. Issue 2173 hat unescape bereits behoben. Diese Map war nicht in diesem Fix.

Irrwege: 2173 als diesen Bug behandeln; RIP behaupten, weil ASan WRITE of size 8 sagte; hoffen, dass .ftpaccess RewriteMap planten könnte. Das erste ist eine andere Funktion. Das zweite ist immer noch Crash. Das dritte ist CONF_DYNDIR.

ASan plus Stock-libcrypt SIGSEGVs bei PASS vor dem Rewrite-Sink. Das Lab lädt einen winzigen crypt(3)-Stub vor, damit 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. Image ist ein ASan-Build von 1.3.9d mod_rewrite. Kontroll-STOR von 200 ASCII-Bytes gelingt. STOR von 2048 ASCII-Bytes ist ASan global-buffer-overflow WRITE der Größe 8 und das Session-Kind bricht ab. Frischer Login nach dem Auslöser funktioniert weiterhin.

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

Der Fix

Begrenze die Ziel-Länge von rewrite_utf8_to_ucs4 auf PR_TUNABLE_BUFFER_SIZE-1. Höre auf, über ucs4_longs / utf8_val hinauszuschreiben. 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