389, 636, 3268, 3269 - Pentesting LDAP
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Die Verwendung von LDAP (Lightweight Directory Access Protocol) dient hauptsächlich der Lokalisierung verschiedener Entitäten wie Organisationen, Einzelpersonen und Ressourcen wie Dateien und Geräte innerhalb von Netzwerken, sowohl öffentlich als auch privat. Es bietet einen optimierten Ansatz im Vergleich zu seinem Vorgänger, DAP, indem es einen kleineren Code-Footprint hat.
LDAP-Verzeichnisse sind so strukturiert, dass sie über mehrere Server verteilt werden können, wobei jeder Server eine replizierte und synchronisierte Version des Verzeichnisses beherbergt, die als Directory System Agent (DSA) bezeichnet wird. Die Verantwortung für die Bearbeitung von Anfragen liegt vollständig beim LDAP-Server, der bei Bedarf mit anderen DSAs kommunizieren kann, um eine einheitliche Antwort an den Anforderer zu liefern.
Die Organisation des LDAP-Verzeichnisses ähnelt einer Baumhierarchie, die mit dem Stammverzeichnis an der Spitze beginnt. Dies verzweigt sich zu Ländern, die weiter in Organisationen unterteilt werden, und dann in organisatorische Einheiten, die verschiedene Abteilungen oder Bereiche repräsentieren, bis hin zur Ebene der einzelnen Entitäten, einschließlich sowohl Personen als auch gemeinsam genutzten Ressourcen wie Dateien und Druckern.
Standardport: 389 und 636 (ldaps). Der Globale Katalog (LDAP in ActiveDirectory) ist standardmäßig auf den Ports 3268 und 3269 für LDAPS verfügbar.
LDAP-Daten-Austauschformat
LDIF (LDAP-Daten-Austauschformat) definiert den Verzeichnisinhalt als eine Menge von Datensätzen. Es kann auch Aktualisierungsanfragen (Hinzufügen, Ändern, Löschen, Umbenennen) darstellen.
Zeilen 1-3 definieren die Top-Level-Domain local
Zeilen 5-8 definieren die First-Level-Domain moneycorp (moneycorp.local)
Zeilen 10-16 definieren 2 organisatorische Einheiten: dev und sales
Zeilen 18-26 erstellen ein Objekt der Domain und weisen Attribute mit Werten zu
Daten schreiben
Beachten Sie, dass Sie, wenn Sie Werte ändern können, wirklich interessante Aktionen durchführen könnten. Stellen Sie sich zum Beispiel vor, dass Sie die "sshPublicKey"-Informationen Ihres Benutzers oder eines beliebigen Benutzers ändern können. Es ist sehr wahrscheinlich, dass, wenn dieses Attribut existiert, ssh die öffentlichen Schlüssel von LDAP liest. Wenn Sie den öffentlichen Schlüssel eines Benutzers ändern können, werden Sie sich als dieser Benutzer anmelden können, selbst wenn die Passwortauthentifizierung in ssh nicht aktiviert ist.
Sniff clear text credentials
Wenn LDAP ohne SSL verwendet wird, können Sie Anmeldeinformationen im Klartext im Netzwerk sniffen.
Außerdem können Sie einen MITM-Angriff im Netzwerk zwischen dem LDAP-Server und dem Client durchführen. Hier können Sie einen Downgrade-Angriff durchführen, sodass der Client die Anmeldeinformationen im Klartext zur Anmeldung verwendet.
Wenn SSL verwendet wird, können Sie versuchen, einen MITM-Angriff wie oben erwähnt durchzuführen, indem Sie ein falsches Zertifikat anbieten. Wenn der Benutzer es akzeptiert, können Sie die Authentifizierungsmethode herabstufen und die Anmeldeinformationen erneut sehen.
Anonymous Access
Bypass TLS SNI check
Laut diesem Bericht konnte er, nur durch den Zugriff auf den LDAP-Server mit einem beliebigen Domänennamen (wie company.com), den LDAP-Dienst kontaktieren und Informationen als anonymer Benutzer extrahieren:
LDAP anonyme Bindings
LDAP anonyme Bindings ermöglichen unauthentifizierten Angreifern, Informationen aus der Domäne abzurufen, wie z. B. eine vollständige Liste von Benutzern, Gruppen, Computern, Benutzerkontenattributen und der Domänenpasswortrichtlinie. Dies ist eine veraltete Konfiguration, und seit Windows Server 2003 dürfen nur authentifizierte Benutzer LDAP-Anfragen initiieren. Allerdings mussten Administratoren möglicherweise eine bestimmte Anwendung einrichten, um anonyme Bindings zuzulassen und haben mehr Zugriff gewährt als beabsichtigt, wodurch unauthentifizierte Benutzer Zugriff auf alle Objekte in AD erhalten.
Gültige Anmeldeinformationen
Wenn Sie gültige Anmeldeinformationen zum Anmelden am LDAP-Server haben, können Sie alle Informationen über den Domänenadministrator mit:
ldapdomaindump dumpen.
Enumeration
Automatisiert
Mit diesem können Sie die öffentlichen Informationen (wie den Domainnamen):
Python
windapsearch
Windapsearch ist ein Python-Skript, das nützlich ist, um Benutzer, Gruppen und Computer aus einer Windows-Domäne durch die Nutzung von LDAP-Abfragen aufzulisten.
ldapsearch
Überprüfen Sie null Anmeldeinformationen oder ob Ihre Anmeldeinformationen gültig sind:
Wenn Sie etwas finden, das besagt, dass der "bind abgeschlossen sein muss", bedeutet das, dass die Anmeldeinformationen falsch sind.
Sie können alles von einer Domäne extrahieren mit:
Extrahiere Benutzer:
Extrahiere Computer:
Extrahiere meine Informationen:
Extrahieren Domain Admins:
Extrahieren Domain Users:
Extrahieren Enterprise Admins:
Extrahieren Administratoren:
Extract Remote Desktop Group:
Um zu überprüfen, ob Sie Zugriff auf ein Passwort haben, können Sie grep verwenden, nachdem Sie eine der Abfragen ausgeführt haben:
Bitte beachten Sie, dass die Passwörter, die Sie hier finden können, möglicherweise nicht die echten sind...
pbis
Sie können pbis hier herunterladen: https://github.com/BeyondTrust/pbis-open/ und es wird normalerweise in /opt/pbis
installiert.
Pbis ermöglicht es Ihnen, grundlegende Informationen einfach zu erhalten:
Graphische Benutzeroberfläche
Apache Directory
Laden Sie Apache Directory hier herunter. Sie finden ein Beispiel, wie Sie dieses Tool verwenden können, hier.
jxplorer
Sie können eine grafische Benutzeroberfläche mit LDAP-Server hier herunterladen: http://www.jxplorer.org/downloads/users.html
Standardmäßig wird es installiert in: /opt/jxplorer
Godap
Sie können darauf zugreifen unter https://github.com/Macmod/godap
Authentifizierung über Kerberos
Mit ldapsearch
können Sie sich gegenüber Kerberos anstelle von NTLM authentifizieren, indem Sie den Parameter -Y GSSAPI
verwenden.
POST
Wenn Sie auf die Dateien zugreifen können, in denen die Datenbanken enthalten sind (könnten sich in /var/lib/ldap befinden). Sie können die Hashes mit folgendem Befehl extrahieren:
Du kannst john mit dem Passwort-Hash (von '{SSHA}' zu 'structural' ohne 'structural' hinzuzufügen) füttern.
Konfigurationsdateien
Allgemein
containers.ldif
ldap.cfg
ldap.conf
ldap.xml
ldap-config.xml
ldap-realm.xml
slapd.conf
IBM SecureWay V3-Server
V3.sas.oc
Microsoft Active Directory-Server
msadClassesAttrs.ldif
Netscape Directory Server 4
nsslapd.sas_at.conf
nsslapd.sas_oc.conf
OpenLDAP-Verzeichnisserver
slapd.sas_at.conf
slapd.sas_oc.conf
Sun ONE Directory Server 5.1
75sas.ldif
HackTricks Automatische Befehle
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Last updated