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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-35333 — Reproducción y análisis de causa raíz de CVE-2024-35333, un desbordamiento de búfer en la pila en html2xhtml 1.3, con salida de fallo de ASan y guía de mitigación a nivel de código. | Kitploit
Herramientas/GitHubGitHub/momo1239/cve-2024-35333
Análisis EstáticoAnálisis de VulnerabilidadesExplotaciónFuzzingAprendizaje y EducaciónExplotación de Binarios
GitHubmomo1239/cve-2024-35333

CVE-2024-35333

Reproducción y análisis de causa raíz de CVE-2024-35333, un desbordamiento de búfer en la pila en html2xhtml 1.3, con salida de fallo de ASan y guía de mitigación a nivel de código.

Ver Repositorio
12hace 2 añosAú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

CVE-2024-35333

Existe una vulnerabilidad de desbordamiento de búfer en la pila en la funcionalidad de manejo de charset de html2xhtml versión 1.3. Un atacante puede explotar esta vulnerabilidad proporcionando una entrada especialmente diseñada, lo que provocaría el desbordamiento de la variable 'buf', ubicada en la pila. La explotación exitosa de esta vulnerabilidad podría permitir a un atacante ejecutar código arbitrario o provocar el bloqueo de la aplicación, lo que llevaría a una denegación de servicio.

Fase del crash

Para reproducir el crash, vayamos al sitio web del proyecto y descarguemos la última versión 1.3.

Una vez que tengamos el archivo tar, podemos ejecutar tar xvf XYZ.tar

Ejecuta:

./configure
make
./html2xhtml poc.html

Deberías recibir un fallo de segmentación. Analicemos esto con Address Sanitizer.

Ejecuta:

make clean
make CFLAGS=-fsanitize=address
./html2xhtml poc.html

Recibe la salida:

=================================================================
==3468537==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fffffffde70 at pc 0x7ffff7493fc4 bp 0x7fffffffdc00 sp 0x7fffffffd3a8
READ of size 86 at 0x7fffffffde70 thread T0
    #0 0x7ffff7493fc3 in __interceptor_memmem ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:686
    #1 0x5555555f5f35 in read_charset_decl /home/kenny/Downloads/html2xhtml-1.3/src/charset.c:680
    #2 0x5555555f7d89 in guess_charset /home/kenny/Downloads/html2xhtml-1.3/src/charset.c:508
    #3 0x5555555f7d89 in charset_auto_detect /home/kenny/Downloads/html2xhtml-1.3/src/charset.c:343
    #4 0x555555568d49 in main /home/kenny/Downloads/html2xhtml-1.3/src/html2xhtml.c:100
    #5 0x7ffff7029d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #6 0x7ffff7029e3f in __libc_start_main_impl ../csu/libc-start.c:392
    #7 0x55555556b914 in _start (/home/kenny/Downloads/html2xhtml-1.3/src/html2xhtml+0x17914)

Address 0x7fffffffde70 is located in stack of thread T0 at offset 544 in frame
    #0 0x5555555e86bf in read_charset_decl /home/kenny/Downloads/html2xhtml-1.3/src/charset.c:536

  This frame has 1 object(s):
    [32, 544) 'buf' (line 537) <== Memory access at offset 544 overflows this variable
HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork
      (longjmp and C++ exceptions *are* supported)
SUMMARY: AddressSanitizer: stack-buffer-overflow ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:686 in __interceptor_memmem
Shadow bytes around the buggy address:
  0x10007fff7b70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10007fff7b80: 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00 00
  0x10007fff7b90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10007fff7ba0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10007fff7bb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x10007fff7bc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00[f3]f3
  0x10007fff7bd0: f3 f3 f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00
  0x10007fff7be0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1
  0x10007fff7bf0: f1 f1 00 f3 f3 f3 00 00 00 00 00 00 00 00 00 00
  0x10007fff7c00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10007fff7c10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==3468537==ABORTING

Análisis de la causa raíz

Echemos un vistazo al código fuente y revisemos la función vulnerable: read_charset_decl(). La función tiene más de 100 líneas de código. Vamos a simplificarla y echar un vistazo a este bucle en particular.

  for (i = ini, len = 0; i < avail && len < SCAN_LEN; i += step, len++) {
    buf[len] = tolower(buffer[i]);
  }

Este bucle copia datos del array buffer a buf, convirtiendo los caracteres a minúsculas a medida que avanza. El problema se da cuando avail es mayor que SCAN_LEN y el bucle no comprueba que no se excedan los límites superiores de buf.

Para mitigarlo, debería realizarse una comprobación de límites para asegurarse de que len no exceda SCAN_LEN.

Descargar herramienta