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-2021-4045 — Exploit de inyección de comandos para la cámara TP-Link Tapo C200 (CVE-2021-4045) que proporciona acceso a shell root a través de UART y análisis del binario uhttpd con ingeniería inversa. | Kitploit
Herramientas/GitHubGitHub/kaleth4/cve-2021-4045
Seguridad de Sistemas EmbebidosSeguridad IoTAnálisis de VulnerabilidadesExplotaciónIngeniería InversaHacking de HardwarePruebas de PenetraciónComando y ControlAnálisis de Firmware
GitHubkaleth4/cve-2021-4045

CVE-2021-4045

Exploit de inyección de comandos para la cámara TP-Link Tapo C200 (CVE-2021-4045) que proporciona acceso a shell root a través de UART y análisis del binario uhttpd con ingeniería inversa.

22hace 3 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
Ver Repositorio

🔍 CVE-2021-4045: Vulnerabilidad de Inyección de Comandos en TP-Link Tapo C200

image

CVE-2021-4045


📌 Resumen

CVE-2021-4045 es una vulnerabilidad de inyección de comandos descubierta en la cámara TP-Link Tapo C200, que permite a un atacante tomar el control total del dispositivo con privilegios de root. Esta vulnerabilidad afecta a todas las versiones de firmware anteriores a la 1.1.16 Build 211209 Rel. 37726N.

🔗 Aviso oficial de INCIBE: https://www.incibe.es/incibe-cert/alerta-temprana/vulnerabilidades/cve-2021-4045 (Reemplazar con el enlace real)

🔧 Solución recomendada: Actualizar el firmware a la versión 1.1.16 o superior.



🛠 Reconocimiento Inicial

Configuración y características del dispositivo

  • Cámara IP económica (~30€) con funciones avanzadas:
    • Grabación en tarjeta SD.
    • Rotación horizontal de 360° y vertical de 90°.
    • Reproducción de audio en tiempo real desde la app móvil.

Escaneo de puertos

$ nmap -sV -p- 192.168.1.81

Resultado:

PORT     STATE SERVICE
443/tcp  open  https
554/tcp  open  rtsp
2020/tcp open  xinupageserver
8800/tcp open  sunwebadmin
image Como pueden ver, el dispositivo tiene algunos puertos abiertos interesantes. Lo primero que probé fue el puerto 443. Aunque nmap indica claramente que usa https, cuando hice el escaneo inicial, lo pasé por alto y pasé bastante tiempo pensando que el puerto 443 estaba usando http. Debido a esto, solo probé http://192.168.1.81:443 en lugar de https://192.168.1.81:443, por lo que solo obtuve respuestas 400. Como dije en la introducción, este proceso estuvo lleno de fallos. En cuanto a los demás puertos, los servicios que se ejecutaban en ellos me eran totalmente desconocidos y no encontré ninguna información clara al respecto. En ese momento, me quedé sin opciones conocidas, así que era hora de investigar más a fondo.

----[ Obtener una shell ]-------------------------------

Antes de comprar la cámara, busqué en internet investigaciones previas sobre el dispositivo y, por suerte, encontré este repositorio de GitHub donde la gente colaboraba para realizar ingeniería inversa. Uno de los problemas explicaba cómo obtener acceso a la consola a través del puerto UART , algo que desconocía por completo en ese momento. Así que aprendí lo básico y compré un convertidor de USB a TTL para conectarme. image Con la ayuda del problema mencionado , pude abrir el dispositivo con un cuchillo y un destornillador y localizar rápidamente el UART. Después de un par de intentos y mucha paciencia, finalmente logré soldar algunos cables a las almohadillas.

image

Luego, llegó el momento de comprobar si la soldadura era lo suficientemente buena para la transmisión de datos. Conecté los cables al adaptador USB, teniendo en cuenta que Rx de la UART va a Tx del adaptador y viceversa, y conecté el adaptador a mi ordenador. De nuevo, gracias al problema mencionado , sabía que la velocidad de transmisión para la conexión serie era de 57600, así que ejecuté:

$ sudo screen /dev/tty.usbserial-0001 57600

Donde '/dev/tty.usbserial-0001' es el puerto USB al que está conectado el adaptador y que alimenta el dispositivo. Inmediatamente comencé a recibir datos, genial.

Sin embargo, aún no tenía acceso a la consola. Lo que recibía era simplemente la secuencia de arranque del dispositivo, que en realidad era el gestor de arranque U-Boot. Tenía un aspecto similar a este:

U-Boot 2014.01-v1.2 (Jul 16 2021 - 18:41:10)

Board: IPCAM RTS3903 CPU: 500M :rx5281 prid=0xdc02 force spi nor mode DRAM: 64 MiB @ 1066 MHz Skipping flash_init Flash: 0 Bytes flash status is 0, 0, 0 SF: Detected XM25QH64A with page size 256 Bytes, erase size 64 KiB, total 8 MiB Using default environment

Autobooting in 1 seconds copying flash to 0x81500000 flash status is 0, 0, 0 SF: Detected XM25QH64A with page size 256 Bytes, erase size 64 KiB, total 8 MiB SF: 8388608 bytes @ 0x0 Read: OK

[...]

Al pulsar Enter, se nos pide que introduzcamos un nombre de usuario y una contraseña. Gracias a ese problema de GitHub , conocemos las credenciales, así que podemos iniciar sesión correctamente con el usuario 'root' y la contraseña 'slprealtek' y, finalmente, obtener acceso a la consola.

Una vez que comprobé que la conexión funcionaba, necesitaba reforzar la soldadura, ya que se había roto dos veces durante el proceso de montaje de la carcasa. Apliqué silicona termofusible para asegurar todos los cables y cerré el dispositivo, desconectando todos los motores. Ahora, mi unidad de prueba estaba lista.

image

----[ Explorando el dispositivo ]--------------------------

Ahora que tenemos una carcasa, exploremos el dispositivo:

root@SLP:~# uname -a Linux SLP 3.10.27 #1 PREEMPT Wed Nov 11 20:42:05 CST 2020 rlx GNU/Linux

root@SLP:~# cat /etc/openwrt_version 12.09-rc1

Como podemos ver, se trata de una máquina OpenWRT que ejecuta Linux 3.10.27. Ahora vamos a comprobar los procesos activos y los puertos abiertos:

Descargar herramienta