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
proftpd-rewrite-utf8trans — ProFTPD 1.3.9d - Alto - Remoto - Crash - RewriteMap int:utf8trans overflow BSS | Kitploit
Strumenti/GitHubGitHub/abraxas/proftpd-rewrite-utf8trans
Analisi delle VulnerabilitàExploitFuzzingSicurezza di RetePenetration TestingAnalisi di BinariLab e Pratica
GitHubabraxas/proftpd-rewrite-utf8trans

proftpd-rewrite-utf8trans

ProFTPD 1.3.9d - Alto - Remoto - Crash - RewriteMap int:utf8trans overflow BSS

Vedi Repository
3 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 - proftpd-rewrite-utf8trans

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

proftpd-rewrite-utf8trans

Classe: Crash Portata: Remota

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

Il contrib mod_rewrite include RewriteMap int:utf8trans. Quel builtin copia un argomento FTP del client (fino a CommandBufferSize, 512 KiB) in due buffer BSS da 1024 slot senza alcun limite sulla destinazione. Un lungo nome STOR ASCII provoca un WRITE global-buffer-overflow di ASan di dimensione 8. Il processo figlio della sessione termina in modo anomalo. Il daemon resta attivo. Classe Crash. Non RCE.

IDnessuna CVE al momento
ClasseCrash
PortataRemota (argomento FTP passato a int:utf8trans)
CWECWE-120
CVSSAlto: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H se la RewriteRule è pre-auth. Il laboratorio ha usato STOR dopo il login, quindi PR:L è onesto per quella esecuzione (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H).
ProdottoProFTPD
Affetto1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_rewrite
Authil laboratorio è STOR autenticato. Una RewriteRule pre-auth su USER o simile sarebbe PR:N.
LicenzaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1

Cosa può fare un attaccante

RewriteEngine è disattivato finché non viene configurato. Il pattern documentato è RewriteRule (.*) ${map:$1}. Una volta che una RewriteRule passa l'argomento del client attraverso int:utf8trans, una chiave più lunga di 1024 byte causa un overflow di due buffer statici nel processo figlio della sessione.

MetodoSinkPrivilegio
Comando FTP il cui argomento è la chiave della mappa utf8trans, lunghezza > 1024rewrite_utf8_to_ucs4 poi utf8_val[i] = ucs4_longs[i]Disponibilità (dimostrata in laboratorio): crash del processo figlio della sessione. ASan: global-buffer-overflow WRITE of size 8, poi ABORTING. Prefork: un nuovo login ha comunque funzionato; il daemon è rimasto attivo. Uno STOR breve di 200 byte ASCII ha resistito. L'integrità delle BSS rewrite adiacenti è dedotta e dipende dal layout del compilatore.
RIP / esecuzione di codicenessuna rivendicataChiuso. Nessun payload. Classe Crash. Non RCE.
Impianto di RewriteMap in .ftpaccessCONF_DYNDIRChiuso. RewriteMap non è consentito in .ftpaccess.
shell prg:nessun tipo di mappa del genereChiuso. La FIFO è I/O per righe.

Dimostrato in laboratorio vs dedotto: il WRITE di ASan di dimensione 8, l'abort del processo figlio della sessione, il controllo con argomento breve che sopravvive e il login dopo il trigger sono dimostrati in laboratorio. RIP/RCE non è rivendicato.

Issue 2173 ha corretto l'OOB di un byte di int:unescape su questo pin. Questo residuo è int:utf8trans. Builtin diverso. Bug diverso.

Come l'ho trovato

Ho fissato il tag v1.3.9d di proftpd/proftpd. Il raccolto di CVE del 2026 e le issue pubbliche su GitHub ancora presenti in quel tarball (2170, 2173, 2175, 2180, 2095, 2256, 2286, 2319, 2330, 2301) erano la lista da saltare. Il core FTP predefinito con il basic.conf di esempio non mi ha dato una Crit/High non pubblicata. Il contrib rewrite sì.

rewrite_map_int_utf8trans (contrib/mod_rewrite.c) ha:

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 scrive un unsigned long per ogni byte ASCII senza alcun limite. PR_TUNABLE_CMD_BUFFER_SIZE è 512 KiB. La issue 2173 ha già corretto unescape. Questa mappa non era in quella correzione.

Vicoli ciechi: trattare la 2173 come questo bug; rivendicare RIP perché ASan diceva WRITE of size 8; sperare che .ftpaccess potesse impiantare RewriteMap. Il primo è una funzione diversa. Il secondo è comunque Crash. Il terzo è CONF_DYNDIR.

ASan più la libcrypt standard causano SIGSEGV su PASS prima del sink rewrite. Il laboratorio precarica un piccolo stub di crypt(3) così il login funziona. Quello stub non è un exploit.

Laboratorio

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

oppure:

cd lab
./run.sh

Loopback 127.0.0.1:18740 più passive 18741-18750. Progetto Compose proftpd-rewrite-utf8trans. Witness PROFTPD-REWRITE-UTF8TRANS-WITNESS. L'immagine è una build ASan di 1.3.9d mod_rewrite. Lo STOR di controllo di 200 byte ASCII riesce. Lo STOR di 2048 byte ASCII è un WRITE global-buffer-overflow di ASan di dimensione 8 e il processo figlio della sessione termina in modo anomalo. Un nuovo login dopo il trigger funziona ancora.

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

La correzione

Limitare la lunghezza di destinazione di rewrite_utf8_to_ucs4 a PR_TUNABLE_BUFFER_SIZE-1. Smettere di scrivere oltre ucs4_longs / utf8_val. Rifiutare o troncare una chiave di mappa che non entra.

Riferimenti

  • github.com/proftpd/proftpd tag v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • contrib/mod_rewrite.c rewrite_utf8_to_ucs4 / rewrite_map_int_utf8trans
  • Corretto nelle vicinanze (non questa mappa): Issue 2173 int:unescape
  • CWE-120

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo laboratorio loopback. Nessuna garanzia.

Scarica lo strumento