Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
proftpd-rewrite-utf8trans — ProFTPD 1.3.9d - Alta - Remoto - Crash - RewriteMap int:utf8trans desbordamiento BSS | Kitploit
Herramientas/GitHubGitHub/abraxas/proftpd-rewrite-utf8trans
Análisis de VulnerabilidadesExplotaciónFuzzingSeguridad de RedesPruebas de PenetraciónAnálisis de BinariosLabs y Práctica
GitHubabraxas/proftpd-rewrite-utf8trans

proftpd-rewrite-utf8trans

ProFTPD 1.3.9d - Alta - Remoto - Crash - RewriteMap int:utf8trans desbordamiento BSS

Ver Repositorio
hace 3 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Abraxas Labs - proftpd-rewrite-utf8trans

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

proftpd-rewrite-utf8trans

Clase: Crash Alcance: Remoto

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

El contrib mod_rewrite incluye RewriteMap int:utf8trans. Ese builtin copia un argumento FTP del cliente (hasta CommandBufferSize, 512 KiB) en dos buffers BSS de 1024 slots sin límite de destino. Un nombre STOR ASCII largo provoca un global-buffer-overflow de ASan, una ESCRITURA de tamaño 8. El proceso hijo de la sesión aborta. El daemon permanece activo. Clase Crash. No es RCE.

IDsin CVE todavía
ClaseCrash
AlcanceRemoto (argumento FTP alimentado 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 si la RewriteRule es pre-auth. El laboratorio usó STOR tras el login, por lo que PR:L es honesto para esa ejecución (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H).
ProductoProFTPD
Afectado1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_rewrite
Authel laboratorio es STOR autenticado. Una RewriteRule pre-auth sobre USER o similar sería PR:N.
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1

Qué puede hacer un atacante

RewriteEngine está desactivado hasta que se configura. El patrón documentado es RewriteRule (.*) ${map:$1}. Una vez que una RewriteRule alimenta el argumento del cliente a través de int:utf8trans, una clave de más de 1024 bytes desborda dos buffers estáticos en el proceso hijo de la sesión.

MétodoSinkPrivilegio
Comando FTP cuyo argumento es la clave del mapa utf8trans, longitud > 1024rewrite_utf8_to_ucs4 luego utf8_val[i] = ucs4_longs[i]Disponibilidad (probado en laboratorio): provoca el crash del proceso hijo de la sesión. ASan: global-buffer-overflow WRITE of size 8, luego ABORTING. Prefork: un nuevo login seguía funcionando; el daemon permaneció activo. Un STOR corto de 200 bytes ASCII sobrevivió. La integridad del BSS de rewrite cercano se infiere y depende del layout del compilador.
RIP / ejecución de códigoninguno reclamadoDescartado. Sin payload. Clase Crash. No es RCE.
Plantado de RewriteMap en .ftpaccessCONF_DYNDIRDescartado. RewriteMap no está permitido en .ftpaccess.
shell prg:no existe ese tipo de mapaDescartado. FIFO es E/S por líneas.

Probado en laboratorio vs inferido: la ESCRITURA de ASan de tamaño 8, el aborto del proceso hijo de la sesión, el control con argumento corto superviviente y el login posterior al trigger están probados en laboratorio. RIP/RCE no se reclama.

Issue 2173 parcheó el OOB de un byte de int:unescape en este pin. Este remanente es int:utf8trans. Builtin distinto. Bug distinto.

Cómo lo encontré

Fijé el tag v1.3.9d de proftpd/proftpd. La cosecha de CVEs de 2026 y los issues públicos de GitHub que aún quedaban en ese tarball (2170, 2173, 2175, 2180, 2095, 2256, 2286, 2319, 2330, 2301) eran la lista de omisión. El FTP core por defecto con el basic.conf de ejemplo no me dio un Crit/High no publicado. El contrib rewrite sí.

rewrite_map_int_utf8trans (contrib/mod_rewrite.c) tiene:

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 escribe un unsigned long por byte ASCII sin límite. PR_TUNABLE_CMD_BUFFER_SIZE es 512 KiB. El issue 2173 ya arregló unescape. Este mapa no estaba en ese fix.

Caminos equivocados: tratar el 2173 como este bug; reclamar RIP porque ASan dijo WRITE of size 8; esperar que .ftpaccess pudiera plantar RewriteMap. El primero es una función distinta. El segundo sigue siendo Crash. El tercero es CONF_DYNDIR.

ASan más la libcrypt estándar provocan SIGSEGV en PASS antes del sink de rewrite. El laboratorio precarga un pequeño stub de crypt(3) para que el login funcione. Ese stub no es un exploit.

Laboratorio

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

o:

cd lab
./run.sh

Loopback 127.0.0.1:18740 más pasivo 18741-18750. Proyecto Compose proftpd-rewrite-utf8trans. Testigo PROFTPD-REWRITE-UTF8TRANS-WITNESS. La imagen es un build ASan de 1.3.9d mod_rewrite. El STOR de control de 200 bytes ASCII tiene éxito. El STOR de 2048 bytes ASCII es un global-buffer-overflow de ASan, ESCRITURA de tamaño 8, y el proceso hijo de la sesión aborta. Un login nuevo tras el trigger sigue funcionando.

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

La solución

Limitar la longitud de destino de rewrite_utf8_to_ucs4 a PR_TUNABLE_BUFFER_SIZE-1. Dejar de escribir más allá de ucs4_longs / utf8_val. Rechazar o truncar una clave de mapa que no quepa.

Referencias

  • github.com/proftpd/proftpd tag v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • contrib/mod_rewrite.c rewrite_utf8_to_ucs4 / rewrite_map_int_utf8trans
  • Cercano parcheado (no este mapa): Issue 2173 int:unescape
  • CWE-120

Licencia

GNU Affero GPL v3.0. Ver LICENSE. Solo laboratorio en loopback. Sin garantía.

Descargar herramienta