Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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-2019-17147 | Kitploit
Herramientas/GitHubGitHub/imnot-ye/cve-2019-17147
Seguridad de Sistemas EmbebidosSeguridad IoTAnálisis de VulnerabilidadesExplotaciónIngeniería InversaShellcodeHacking de HardwareSeguridad de HardwarePapers e InvestigaciónAprendizaje y EducaciónAnálisis de FirmwareExplotación de Binarios
4hace 6 mesesAú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
GitHubimnot-ye/cve-2019-17147

CVE-2019-17147

Ver Repositorio

CVE-2019-17147: Explotación del TP-Link TL-WR841N

Banner

Resumen

Este repositorio documenta la ingeniería inversa exhaustiva y la explotación de CVE-2019-17147, una vulnerabilidad crítica de ejecución remota de código (RCE) en el router TP-Link TL-WR841N (arquitectura MIPSEL). La vulnerabilidad reside en el demonio del servidor web httpd, donde una validación de entrada incorrecta permite un desbordamiento de búfer en la pila a través de una función personalizada cstr_strncpy, lo que conduce a la ejecución de código arbitrario sin autenticación.

VulnerabilidadCVE-2019-17147
CVSS v3.18.8 (Alto)
VectorAV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
TipoDesbordamiento de búfer basado en pila
Componente/usr/bin/httpd

Infraestructura y herramientas

El entorno de análisis se estableció utilizando los siguientes componentes:

  • Hardware: Router TP-Link TL-WR841N.
  • Herramientas de hardware: Programador CH341A (Volcado de memoria SPI Flash), Convertidor USB-TTL (Consola UART), Pinza SOIC8.
  • Herramientas de software: flashrom (Volcado de memoria), binwalk (Extracción de firmware), IDA Pro (Análisis estático), GDB-Multiarch (Depuración remota), QEMU (Emulación MIPSEL).
  • Versión de firmware: TL-WR841N(US)_V14_180319.

Análisis técnico

1. Análisis estático

La vulnerabilidad fue identificada en el binario /usr/bin/httpd. El análisis estático mediante IDA Pro reveló una función personalizada de copia de cadenas, cstr_strncpy, utilizada durante el análisis de las cabeceras HTTP (específicamente la cabecera Host).

Grafo IDA

La función cstr_strncpy acepta un parámetro copy_len derivado de la longitud de la cadena origen en lugar del tamaño del búfer destino. Esto permite un clásico desbordamiento de búfer en la pila cuando se suministra una cabecera excesivamente larga. Además, la función http_parserArgStrToList, que manipula una estructura de lista enlazada, se ve afectada por este desbordamiento, otorgando control sobre los punteros next y prev.

2. Análisis dinámico

La depuración en tiempo de ejecución con gdbserver confirmó el fallo y el control sobre el flujo de ejecución. El análisis del mapa de memoria (vmmap) reveló una falta crítica de endurecimiento:

  • Heap: Permisos RWX (Lectura, Escritura, Ejecución).
  • ASLR: Limitado/Ineficaz para este binario.
  • NX: Deshabilitado.

VMMap

Esta configuración permite la ejecución directa de shellcode colocado en el Heap, evitando la necesidad de cadenas ROP complejas.

Estrategia de explotación

La cadena de explotación utiliza una primitiva Write-What-Where derivada de los punteros corruptos de la lista enlazada para lograr RCE.

  1. Heap Spraying: El shellcode se inyecta en el Heap. Debido a la persistencia del heap entre peticiones, esto puede realizarse por etapas.
  2. Inyección por etapas: Para evitar las restricciones de bytes nulos en strcpy, el payload se envía en múltiples peticiones:
    • Etapa 1: Escribir la dirección del shellcode en un área de preparación.
    • Etapa 2: Escribir la dirección GOT objetivo en el área de preparación.
  3. Sobrescritura de GOT: La entrada de la función atol en la Tabla de Offset Global (GOT) se sobrescribe con la dirección del shellcode.
  4. Disparador de ejecución: El exploit fuerza una llamada a atol (a través de la cabecera Content-Length), redirigiendo la ejecución al shellcode inyectado.

Diagrama del Exploit

Verificación del exploit

El script final en Python automatiza con éxito el ataque, lanzando una shell de root en el puerto 31337.

Shell de root

Mitigación

La vulnerabilidad se origina en prácticas de codificación inseguras en la gestión de búferes.

  • Corrección del código fuente: Reemplazar el uso de cstr_strncpy por alternativas seguras que apliquen estrictamente los límites del búfer de destino (p. ej., strncpy con verificación explícita de límites basada en sizeof(dest)).
  • Endurecimiento del binario: Habilitar NX (No-Execute) para evitar la ejecución de código en la pila y el heap. Habilitar ASLR completo y PIE (Position Independent Executable) para aleatorizar el diseño de la memoria.

Documentación completa

Para obtener una guía detallada paso a paso de todo el proceso, incluidos el análisis del código y la configuración del entorno, consulte las guías completas incluidas en este repositorio:

  • 🇮🇹 Guía Completa (Italiano)
  • 🇬🇧 Guía Completa (Inglés)

Autores

  • Angelo Zullo
  • Simone Vitto
  • Vincenzo Cantatore

Descargo de responsabilidad

Este proyecto es solo para fines educativos y de investigación. La información proporcionada tiene como objetivo mejorar la seguridad de los dispositivos IoT. Los autores no son responsables de ningún uso indebido de la información o el código contenido en este documento.


Basado en investigación y análisis originales.

Descargar herramienta