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-2023-27216 — Enfoque de principiante para el hacking de firmware | Kitploit
Herramientas/GitHubGitHub/hoangrealer/cve-2023-27216
Seguridad de Sistemas EmbebidosSeguridad IoTAnálisis de VulnerabilidadesIngeniería InversaDepuradoresHacking de HardwareAprendizaje y EducaciónAnálisis de FirmwareExplotación de Binarios
GitHubhoangrealer/cve-2023-27216

CVE-2023-27216

Enfoque de principiante para el hacking de firmware

317hace 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
Ver Repositorio

CVE-2023-27216 - Router DLink

Este documento es mi experiencia personal como novato en la reversión y explotación de firmware. Firmwhere??

Alcance

Para la demostración, analizaremos y reproduciremos CVE-2023-27216.

  • Número CVE: CVE-2023-27216
  • Descripción de la vulnerabilidad: Un problema encontrado en D-Link DSL-3782 v.1.03 permite a usuarios autenticados remotos ejecutar código arbitrario como root a través de la página de configuración de red.
  • Modelo del equipo: D-Link DSL-3782
  • Versión de firmware: DSL-3782_A1_EU_1.01
  • Sitio web oficial del fabricante: http://www.dlink.com.cn/
  • Dirección del firmware: https://media.dlink.eu/support/products/dsl/dsl-3782/driver_software/dsl-3782_a1_eu_1.01_07282016.zip

Tareas

Para explotar cualquier firmware, se deben seguir los siguientes pasos:

  • Obtener los firmwares. Hay 2 formas: extraerlos directamente del hardware (cámara, router, impresora, etc.) o descargarlos del sitio web del fabricante. Esto se discutirá en otro documento.
  • Analizar el firmware y encontrar vulnerabilidades
  • Emular el firmware.
  • Compilar gdbserver de forma estática para depurar.

Análisis del firmware

Por lo general, un archivo binario de firmware contiene un bootloader (uBoot), un archivo de kernel, un encabezado de kernel para el bootloader (uImage), un sistema de archivos comprimido (generalmente en formato SquashFS), una tabla CRC/MD5 (para verificar la integridad del archivo) y otros archivos varios.

Busca una forma de analizar el firmware primero, investiga un poco, obtuve algunos recursos:

  • Binwalk para analizar y extraer el firmware
  • Cómo estimular: https://boschko.ca/qemu-emulating-firmware/ Binwalk check signature

Extraer archivos importantes

Extraer firmware usando binwalk: binwalk -Me DSL-3782_A1_EU_1.01_07282016.bin Binwalk extract

Obtuve la carpeta squashfs-root extraída y algunos archivos extraños. Extracted files

Bonificación: Si no ves la carpeta squashfs-root, usa unsquashfs en cualquier archivo ".squashfs" que veas. Son como archivos zip 😅.

Analizar cómo funciona el firmware

Verifica la arquitectura y el endianness del firmware. Esto se puede comprobar examinando algunos binarios extraídos del firmware. Verifica la arquitectura y el firmware: file <binary> Firmware Architecture

Aquí podemos confirmar casi con certeza que el firmware se ejecuta en arquitectura MIPS de 32 bits MSB. La razón de "casi" es que algunos firmwares pueden ejecutarse en una arquitectura diferente con MIPS Compatible, como Lexra.

Revisa la carpeta squashfs-root y encontré algunos archivos interesantes:

  • usr/etc/init.d/rcS => Este es el script que se ejecuta cuando el firmware arranca
  • usr/etc/passwd => Este es el archivo que contiene la información del usuario
  • userfs/romfile.cfg => Hay una credencial admin:admin

Revisa el archivo rcS y encontré un código interesante:

echo "admin:$1$$iC.dUsGpxNNJGeOm1dFio/:0:0:root:/:/bin/sh" > /usr/etc/passwd
  • Este código se utiliza para escribir la información del usuario en el archivo passwd
  • Ejecuta un servidor web llamado boa server. Boa es un servidor web antiguo, utilizado principalmente en dispositivos embebidos como routers en los años 2000. Sin embargo, el servidor Boa detuvo su desarrollo en 2005. Aunque el servidor Boa está muerto desde hace casi 20 años, aún vive hoy en día gracias a nuestros fabricantes. Boa boot

Emulación completa del sistema firmware

Recomiendo usar un sistema operativo basado en Debian para el proceso de emulación, como Ubuntu o Kali. Existe otro sistema operativo centrado en la manipulación de firmware llamado AttifyOS. En este documento, utilicé Kali Linux. Comienza con el proceso de estimulación, hay 2 herramientas:

  • QEMU => No reinventes la rueda 🙏 🛐
  • FAT- Firmware-analysis-toolkit => Funciona, puedes leer el código fuente para saber qué hace.

Stick with it

Veamos cómo usar FAT para emular completamente un firmware. Primero, clonamos el repositorio desde github a tu máquina Kali. Y pasamos por el proceso de configuración. También necesitas modificar el archivo fat.config, de lo contrario no funcionará.

git clone https://github.com/attify/firmware-analysis-toolkit.git

cd firmware-analysis-toolkit

./setup.sh

vi fat.config # Modificar a tu contraseña de sudo.

Luego copiamos el binario del firmware (el que descargamos del fabricante) a la carpeta de FAT en nuestra máquina Kali y lo ejecutamos.

./fat.py DSL-3782_A1_EU_1.01_07282016.bin

Nota: Durante el proceso de configuración de FAT, podemos encontrar errores. Puede decir que falta libmagic. Fat run fail

Simplemente ejecuta

pip unistall python-magic
pip install python-magic

Esto debería solucionar el problema, luego ejecutamos el comando de construcción nuevamente. Ahora debería funcionar perfectamente.

Fat run nice

Presiona Enter para ejecutar. El proceso de emulación debería funcionar correctamente, puedes navegar a http://192.168.1.1 (en la máquina Kali) para verificar si funciona o no.

Router main page

También puedes iniciar sesión en la consola si tienes las credenciales. Aquí está admin:admin.

Console login

Si decides apagar el firmware emulado, solo presiona Ctrl+A X. Cuando necesites ejecutarlo de nuevo, no vuelvas a ejecutar fat.py porque el firmware ya se ha compilado en una imagen. Solo necesitas ejecutar el script que ya se ha generado.

cd firmadyne/scratch/<Image-ID>
./run.sh

Rerun the image

Depurador

Compila gdbserver para fines de depuración. Hay muchas formas de compilar gdbserver. También puedes descargar un servidor compilado estáticamente. Hay un repositorio que almacena algunos compilados estáticamente. Sin embargo, prefiero compilar gdbserver yo mismo, ya que los del repositorio de github son bastante antiguos y pueden tener problemas de compatibilidad.

Descargar herramienta