LDAP

🧠 ¿Qué es LDAP? LDAP (Lightweight Directory Access Protocol) es un protocolo que se usa para acceder, consultar y modificar servicios de directorio, como Active Directory en entornos Windows.

🎯 ¿Por qué es relevante en pentesting?

Ver si 389 o 636 están abiertos

En muchas organizaciones, los controladores de dominio (Domain Controllers) exponen el servicio LDAP en el puerto 389 (sin cifrar) o 636 (LDAPS cifrado). Si no se configura adecuadamente, LDAP puede permitir enumeración sin autenticación (bind anónimo), lo cual representa una vulnerabilidad.

🔍 ¿Qué se puede enumerar con LDAP?

  • Usuarios del dominio

  • Grupos y sus miembros

  • SPNs (Service Principal Names)

  • Descripciones (que pueden contener contraseñas)

  • Políticas de dominio

  • SIDs y RIDs

  • Controladores de dominio


🛠️ Herramienta: ldapsearch

ldapsearch es una utilidad de línea de comandos incluida en los paquetes de OpenLDAP, y permite realizar consultas LDAP desde sistemas Unix/Linux.


📌 Comando básico

🔓 Bind anónimo (sin credenciales)

ldapsearch -x -H ldap://<IP> -D '' -w '' -b "DC=subdominio,DC=tld"

Ejemplo:

ldapsearch -x -H ldap://10.10.11.174 -D '' -w '' -b "DC=corp,DC=htb"

Esto intenta consultar el directorio sin autenticación. Si devuelve resultados, el servidor permite enumeración anónima, lo cual es una mala práctica y puede ser explotada.


🔐 Con credenciales

ldapsearch -x -H ldap://10.10.11.174 -D 'corp\ldap' -w 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' -b "DC=corp,DC=htb"

Esto es útil si tienes un usuario válido, incluso de bajo privilegio.


⚠️ ¿Cómo detectar la vulnerabilidad?

  • Si el comando de bind anónimo devuelve resultados, el servidor es vulnerable.

  • Si puedes enumerar atributos sensibles como servicePrincipalName, description, userPassword, etc., hay un riesgo de exposición de datos.

  • Si se filtran SPNs, puede ser vulnerable a Kerberoasting.


✅ Ejemplos de búsquedas útiles

  • Todos los usuarios:

    ldapsearch ... "(objectClass=user)"
  • SPNs (para Kerberoasting):

    ldapsearch ... "(servicePrincipalName=*)"
  • Descripciones (pueden contener datos sensibles):

    ldapsearch ... "(description=*)"

Last updated