Blog

Coders Conquer Security: Share & Learn Series - LDAP-Injektionen

Jaap Karan Singh
Veröffentlicht Jan 17, 2019

Die große Mehrheit der Computersysteme verwendet das Lightweight Directory Access Protocol (LDAP). Es wird verwendet, um verteilte Verzeichnisinformationsdienste über ein beliebiges Internet Protocol (IP)-Netzwerk zu verwalten. Es dient also im Wesentlichen dazu, den Überblick über die Benutzer zu behalten.

LDAP wird häufig als Authentifizierungsquelle von Anwendungen verwendet, um festzustellen, ob ein Benutzer die Berechtigung hat, verschiedene Aktionen durchzuführen, insbesondere in Bezug auf seine definierte Rolle innerhalb einer Organisation. So können beispielsweise nur Mitarbeiter der Buchhaltung die Buchhaltungssoftware des Unternehmens nutzen. Anwendungen werden oft so programmiert, dass sie eine LDAP-Tabelle überprüfen, um sicherzustellen, dass die Benutzer innerhalb ihrer festgelegten Berechtigungen handeln.

Probleme können auftreten, wenn böswillige Benutzer eine LDAP-Abfrage manipulieren können. Dadurch kann der empfangende Server dazu gebracht werden, ungültige Abfragen auszuführen, die normalerweise nicht erlaubt wären, oder sogar ungültigen oder unsicheren Benutzern ohne Kennwort Zugang auf hoher Ebene oder als Administrator zu gewähren.  

LDAP-Injektionen können knifflig sein, aber in dieser Folge lernen wir es:

  • Wie sie funktionieren
  • Warum sie so gefährlich sind
  • Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.

Wie nutzen Angreifer LDAP Injection?

Einer der Gründe, warum LDAP-basierte Angriffe seit Jahren beliebt sind, ist die Tatsache, dass fast jedes Computersystem es verwendet. LDAP ist quelloffen und funktioniert extrem gut, sodass nicht viele Alternativen geschaffen wurden.

Im Kern ist LDAP eine Datenbank, die gültige Benutzer innerhalb eines IP-basierten Computersystems oder Netzwerks verfolgt. Es kann Benutzern ermöglichen, Informationen über Systeme, Netzwerke, Server, Anwendungen und sogar andere Benutzer im selben Netzwerk auszutauschen.

Informationen werden von LDAP in dem Äquivalent einer Datenbankzeile oder eines Datensatzes gespeichert, der als Distinguished Name bezeichnet wird, oft abgekürzt als DN. Jeder DN ist eindeutig. So könnte zum Beispiel ein DN für einen Benutzer aussehen, der in der Buchhaltung eines großen Unternehmens in Chicago arbeitet.

cn=James Smith, ou=Corporate Accounts, dc=Chicago, do=Parkview  

Um sicherzustellen, dass jeder DN eindeutig ist, können dem Datensatz verschiedene Codes hinzugefügt werden, wie "+", "/", "=" und einige andere. Es können auch Leerzeichen vor oder nach einem Datensatz eingefügt werden, um sicherzustellen, dass selbst wenn es zwei James Smiths gibt, die im Chicago Parkview Office in der Abteilung Corporate Accounts arbeiten, sie jeweils individuelle DNs haben.

Anwendungen verwenden LDAP im Allgemeinen, um Benutzern die Möglichkeit zu geben, Abfragen über bestimmte DNs zu senden, wie z. B. beim Versuch, den richtigen Ansprechpartner in der Lohnbuchhaltung zu finden, um über einen Fehler auf dem Scheck zu sprechen. LDAP-Injektionen können auftreten, wenn keine Validierung der vom Benutzer bereitgestellten Parameter in Suchanfragen erfolgt. In diesem Fall können Hacker gutartige Suchanfragen manipulieren, um Authentifizierungsmechanismen zu umgehen oder zusätzliche beliebige Abfragen auszuführen. Dies kann den Server dazu bringen, Ergebnisse anzuzeigen, die nicht erlaubt sein sollten, wie z. B. Benutzerpasswörter, oder sogar eine Anwendung dazu veranlassen, Zugriff auf hochsichere Bereiche innerhalb des Netzwerks zu gewähren, mit oder ohne gültiges Passwort.

Warum sind LDAP-Injektionen so gefährlich?

Die größte Gefahr bei LDAP-Injektionen ist wahrscheinlich die weite Verbreitung des Protokolls in den meisten IP-Computernetzwerken weltweit. Es ist ein leichtes Sprungbrett für Hacker, die Informationen stehlen oder ihre Privilegien in einem Netzwerk erhöhen wollen. Kein geschulter Hacker wird es versäumen, zu prüfen, ob LDAP-Injections möglich sind, daher müssen Sicherheitsteams sicherstellen, dass diese Löcher immer geschlossen sind.

Konkret sind etliche Anwendungen so programmiert, dass sie gültigen Benutzern helfen, begrenzte Informationen über Benutzer und Gruppen innerhalb einer Organisation oder andere in den DNs enthaltene Informationen zu finden. Zum Beispiel könnte eine Anwendung jemandem erlauben, mit LDAP nach den Kontaktinformationen von Buchhaltern in Chicago zu suchen, was unseren Freund James Smith aus dem obigen Beispiel zurückbringen würde. Abhängig von den Berechtigungen ist dies wahrscheinlich eine vollkommen gültige Verwendung einer LDAP-Abfrage.

Die Gefahr entsteht, wenn ein böswilliger Benutzer der Abfrage ungefilterte Parameter hinzufügen kann, wodurch die Art der Suche verändert und der Server dazu gebracht wird, Informationen bereitzustellen, die normalerweise nicht gegeben werden sollten. Durch Hinzufügen einer user=*-Zeichenkette könnten Angreifer beispielsweise Informationen über jeden einzelnen Benutzer einer ganzen Organisation erhalten, was wahrscheinlich niemals erlaubt sein sollte.

Bei Anwendungen, die LDAP zur Authentifizierung verwenden, kann das Problem sogar noch größer sein. Angreifer können z. B. die Zeichenfolge (&) am Ende einer LDAP-Abfrage verwenden, um dem Server vorzugaukeln, dass das Argument wahr ist. Wenn eine Anwendung LDAP zur Überprüfung eines Kennworts verwendet, kann das Erzwingen eines "True"-Arguments durch eine LDAP-Injektion es einem nicht autorisierten Benutzer ermöglichen, sich als Administrator im Netzwerk anzumelden, auch ohne ein Kennwort.

Machen Sie LDAP-Injection zu einem L-DON'T in Ihrem Netzwerk

Eine der besten Möglichkeiten, LDAP-Injektionen zu verhindern, besteht darin, etwas wie LINQtoAD oder andere Frameworks zu implementieren, die speziell dafür entwickelt wurden. Dies ist möglicherweise nicht möglich, wenn es in einem Netzwerk bereits Anwendungen gibt, die LDAP-Abfragen nutzen. Aber selbst in diesem Fall ist es immer noch eine gute Idee, für jede neue Anwendung injektionsresistente Frameworks zu verwenden.

Vorhandene Anwendungen, die LDAP verwenden, können auch durch die Verwendung von Whitelist-Validierung und Eingabensanitisierung gegen Injektionen gehärtet werden. Beschränken Sie die Benutzereingabe nach Möglichkeit auf eine begrenzte Anzahl vertrauenswürdiger Werte. Andernfalls sollten Benutzereingaben, die Teil einer LDAP-Abfrage sind, zuerst bereinigt werden. Vergessen Sie nicht, GET- und POST-Parameter, Cookies und HTTP-Header mit einzubeziehen, da diese ebenfalls als Angriffsvektoren dienen können. Schreiben Sie keine eigenen Funktionen, um die Eingabensanitisierung durchzuführen; verwenden Sie stattdessen eine vertrauenswürdige, auf Sicherheit fokussierte Bibliothek eines Drittanbieters oder integrierte Framework-APIs.

Neben gezielten Korrekturen können auch gute Computerpraktiken helfen, wie z. B. die Zuweisung von LDAP-abfragenden Anwendungen mit den geringsten Berechtigungen, die in einem Netzwerk benötigt werden. Auf diese Weise kann im schlimmsten Fall, wenn eine LDAP-Injektion durchkommt, der Schaden gemindert werden.

Weitere Informationen über LDAP-Injektionen

Weitere Informationen finden Sie im OWASP-Artikel über LDAP-Injektionen oder im Spickzettel zur Vermeidung von Injektionen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Secure Code Warrior Plattform testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Wenn Sie mehr darüber erfahren möchten, wie Sie diese Sicherheitslücke und andere Bedrohungen abwehren können, besuchen Sie den BlogSecure Code Warrior .

Ressource anzeigen
Ressource anzeigen

Probleme können auftreten, wenn böswillige Benutzer eine LDAP-Abfrage manipulieren können. Dadurch kann der empfangende Server dazu gebracht werden, ungültige Abfragen auszuführen, die normalerweise nicht erlaubt wären, oder sogar ungültigen oder unsicheren Benutzern ohne Kennwort Zugang auf hoher Ebene oder als Administrator zu gewähren.

Interessiert an mehr?

Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Demo buchen
Weitergeben:
Autor
Jaap Karan Singh
Veröffentlicht Jan 17, 2019

Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Weitergeben:

Die große Mehrheit der Computersysteme verwendet das Lightweight Directory Access Protocol (LDAP). Es wird verwendet, um verteilte Verzeichnisinformationsdienste über ein beliebiges Internet Protocol (IP)-Netzwerk zu verwalten. Es dient also im Wesentlichen dazu, den Überblick über die Benutzer zu behalten.

LDAP wird häufig als Authentifizierungsquelle von Anwendungen verwendet, um festzustellen, ob ein Benutzer die Berechtigung hat, verschiedene Aktionen durchzuführen, insbesondere in Bezug auf seine definierte Rolle innerhalb einer Organisation. So können beispielsweise nur Mitarbeiter der Buchhaltung die Buchhaltungssoftware des Unternehmens nutzen. Anwendungen werden oft so programmiert, dass sie eine LDAP-Tabelle überprüfen, um sicherzustellen, dass die Benutzer innerhalb ihrer festgelegten Berechtigungen handeln.

Probleme können auftreten, wenn böswillige Benutzer eine LDAP-Abfrage manipulieren können. Dadurch kann der empfangende Server dazu gebracht werden, ungültige Abfragen auszuführen, die normalerweise nicht erlaubt wären, oder sogar ungültigen oder unsicheren Benutzern ohne Kennwort Zugang auf hoher Ebene oder als Administrator zu gewähren.  

LDAP-Injektionen können knifflig sein, aber in dieser Folge lernen wir es:

  • Wie sie funktionieren
  • Warum sie so gefährlich sind
  • Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.

Wie nutzen Angreifer LDAP Injection?

Einer der Gründe, warum LDAP-basierte Angriffe seit Jahren beliebt sind, ist die Tatsache, dass fast jedes Computersystem es verwendet. LDAP ist quelloffen und funktioniert extrem gut, sodass nicht viele Alternativen geschaffen wurden.

Im Kern ist LDAP eine Datenbank, die gültige Benutzer innerhalb eines IP-basierten Computersystems oder Netzwerks verfolgt. Es kann Benutzern ermöglichen, Informationen über Systeme, Netzwerke, Server, Anwendungen und sogar andere Benutzer im selben Netzwerk auszutauschen.

Informationen werden von LDAP in dem Äquivalent einer Datenbankzeile oder eines Datensatzes gespeichert, der als Distinguished Name bezeichnet wird, oft abgekürzt als DN. Jeder DN ist eindeutig. So könnte zum Beispiel ein DN für einen Benutzer aussehen, der in der Buchhaltung eines großen Unternehmens in Chicago arbeitet.

cn=James Smith, ou=Corporate Accounts, dc=Chicago, do=Parkview  

Um sicherzustellen, dass jeder DN eindeutig ist, können dem Datensatz verschiedene Codes hinzugefügt werden, wie "+", "/", "=" und einige andere. Es können auch Leerzeichen vor oder nach einem Datensatz eingefügt werden, um sicherzustellen, dass selbst wenn es zwei James Smiths gibt, die im Chicago Parkview Office in der Abteilung Corporate Accounts arbeiten, sie jeweils individuelle DNs haben.

Anwendungen verwenden LDAP im Allgemeinen, um Benutzern die Möglichkeit zu geben, Abfragen über bestimmte DNs zu senden, wie z. B. beim Versuch, den richtigen Ansprechpartner in der Lohnbuchhaltung zu finden, um über einen Fehler auf dem Scheck zu sprechen. LDAP-Injektionen können auftreten, wenn keine Validierung der vom Benutzer bereitgestellten Parameter in Suchanfragen erfolgt. In diesem Fall können Hacker gutartige Suchanfragen manipulieren, um Authentifizierungsmechanismen zu umgehen oder zusätzliche beliebige Abfragen auszuführen. Dies kann den Server dazu bringen, Ergebnisse anzuzeigen, die nicht erlaubt sein sollten, wie z. B. Benutzerpasswörter, oder sogar eine Anwendung dazu veranlassen, Zugriff auf hochsichere Bereiche innerhalb des Netzwerks zu gewähren, mit oder ohne gültiges Passwort.

Warum sind LDAP-Injektionen so gefährlich?

Die größte Gefahr bei LDAP-Injektionen ist wahrscheinlich die weite Verbreitung des Protokolls in den meisten IP-Computernetzwerken weltweit. Es ist ein leichtes Sprungbrett für Hacker, die Informationen stehlen oder ihre Privilegien in einem Netzwerk erhöhen wollen. Kein geschulter Hacker wird es versäumen, zu prüfen, ob LDAP-Injections möglich sind, daher müssen Sicherheitsteams sicherstellen, dass diese Löcher immer geschlossen sind.

Konkret sind etliche Anwendungen so programmiert, dass sie gültigen Benutzern helfen, begrenzte Informationen über Benutzer und Gruppen innerhalb einer Organisation oder andere in den DNs enthaltene Informationen zu finden. Zum Beispiel könnte eine Anwendung jemandem erlauben, mit LDAP nach den Kontaktinformationen von Buchhaltern in Chicago zu suchen, was unseren Freund James Smith aus dem obigen Beispiel zurückbringen würde. Abhängig von den Berechtigungen ist dies wahrscheinlich eine vollkommen gültige Verwendung einer LDAP-Abfrage.

Die Gefahr entsteht, wenn ein böswilliger Benutzer der Abfrage ungefilterte Parameter hinzufügen kann, wodurch die Art der Suche verändert und der Server dazu gebracht wird, Informationen bereitzustellen, die normalerweise nicht gegeben werden sollten. Durch Hinzufügen einer user=*-Zeichenkette könnten Angreifer beispielsweise Informationen über jeden einzelnen Benutzer einer ganzen Organisation erhalten, was wahrscheinlich niemals erlaubt sein sollte.

Bei Anwendungen, die LDAP zur Authentifizierung verwenden, kann das Problem sogar noch größer sein. Angreifer können z. B. die Zeichenfolge (&) am Ende einer LDAP-Abfrage verwenden, um dem Server vorzugaukeln, dass das Argument wahr ist. Wenn eine Anwendung LDAP zur Überprüfung eines Kennworts verwendet, kann das Erzwingen eines "True"-Arguments durch eine LDAP-Injektion es einem nicht autorisierten Benutzer ermöglichen, sich als Administrator im Netzwerk anzumelden, auch ohne ein Kennwort.

Machen Sie LDAP-Injection zu einem L-DON'T in Ihrem Netzwerk

Eine der besten Möglichkeiten, LDAP-Injektionen zu verhindern, besteht darin, etwas wie LINQtoAD oder andere Frameworks zu implementieren, die speziell dafür entwickelt wurden. Dies ist möglicherweise nicht möglich, wenn es in einem Netzwerk bereits Anwendungen gibt, die LDAP-Abfragen nutzen. Aber selbst in diesem Fall ist es immer noch eine gute Idee, für jede neue Anwendung injektionsresistente Frameworks zu verwenden.

Vorhandene Anwendungen, die LDAP verwenden, können auch durch die Verwendung von Whitelist-Validierung und Eingabensanitisierung gegen Injektionen gehärtet werden. Beschränken Sie die Benutzereingabe nach Möglichkeit auf eine begrenzte Anzahl vertrauenswürdiger Werte. Andernfalls sollten Benutzereingaben, die Teil einer LDAP-Abfrage sind, zuerst bereinigt werden. Vergessen Sie nicht, GET- und POST-Parameter, Cookies und HTTP-Header mit einzubeziehen, da diese ebenfalls als Angriffsvektoren dienen können. Schreiben Sie keine eigenen Funktionen, um die Eingabensanitisierung durchzuführen; verwenden Sie stattdessen eine vertrauenswürdige, auf Sicherheit fokussierte Bibliothek eines Drittanbieters oder integrierte Framework-APIs.

Neben gezielten Korrekturen können auch gute Computerpraktiken helfen, wie z. B. die Zuweisung von LDAP-abfragenden Anwendungen mit den geringsten Berechtigungen, die in einem Netzwerk benötigt werden. Auf diese Weise kann im schlimmsten Fall, wenn eine LDAP-Injektion durchkommt, der Schaden gemindert werden.

Weitere Informationen über LDAP-Injektionen

Weitere Informationen finden Sie im OWASP-Artikel über LDAP-Injektionen oder im Spickzettel zur Vermeidung von Injektionen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Secure Code Warrior Plattform testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Wenn Sie mehr darüber erfahren möchten, wie Sie diese Sicherheitslücke und andere Bedrohungen abwehren können, besuchen Sie den BlogSecure Code Warrior .

Ressource anzeigen
Ressource anzeigen

Füllen Sie das folgende Formular aus, um den Bericht herunterzuladen

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Senden
Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.

Die große Mehrheit der Computersysteme verwendet das Lightweight Directory Access Protocol (LDAP). Es wird verwendet, um verteilte Verzeichnisinformationsdienste über ein beliebiges Internet Protocol (IP)-Netzwerk zu verwalten. Es dient also im Wesentlichen dazu, den Überblick über die Benutzer zu behalten.

LDAP wird häufig als Authentifizierungsquelle von Anwendungen verwendet, um festzustellen, ob ein Benutzer die Berechtigung hat, verschiedene Aktionen durchzuführen, insbesondere in Bezug auf seine definierte Rolle innerhalb einer Organisation. So können beispielsweise nur Mitarbeiter der Buchhaltung die Buchhaltungssoftware des Unternehmens nutzen. Anwendungen werden oft so programmiert, dass sie eine LDAP-Tabelle überprüfen, um sicherzustellen, dass die Benutzer innerhalb ihrer festgelegten Berechtigungen handeln.

Probleme können auftreten, wenn böswillige Benutzer eine LDAP-Abfrage manipulieren können. Dadurch kann der empfangende Server dazu gebracht werden, ungültige Abfragen auszuführen, die normalerweise nicht erlaubt wären, oder sogar ungültigen oder unsicheren Benutzern ohne Kennwort Zugang auf hoher Ebene oder als Administrator zu gewähren.  

LDAP-Injektionen können knifflig sein, aber in dieser Folge lernen wir es:

  • Wie sie funktionieren
  • Warum sie so gefährlich sind
  • Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.

Wie nutzen Angreifer LDAP Injection?

Einer der Gründe, warum LDAP-basierte Angriffe seit Jahren beliebt sind, ist die Tatsache, dass fast jedes Computersystem es verwendet. LDAP ist quelloffen und funktioniert extrem gut, sodass nicht viele Alternativen geschaffen wurden.

Im Kern ist LDAP eine Datenbank, die gültige Benutzer innerhalb eines IP-basierten Computersystems oder Netzwerks verfolgt. Es kann Benutzern ermöglichen, Informationen über Systeme, Netzwerke, Server, Anwendungen und sogar andere Benutzer im selben Netzwerk auszutauschen.

Informationen werden von LDAP in dem Äquivalent einer Datenbankzeile oder eines Datensatzes gespeichert, der als Distinguished Name bezeichnet wird, oft abgekürzt als DN. Jeder DN ist eindeutig. So könnte zum Beispiel ein DN für einen Benutzer aussehen, der in der Buchhaltung eines großen Unternehmens in Chicago arbeitet.

cn=James Smith, ou=Corporate Accounts, dc=Chicago, do=Parkview  

Um sicherzustellen, dass jeder DN eindeutig ist, können dem Datensatz verschiedene Codes hinzugefügt werden, wie "+", "/", "=" und einige andere. Es können auch Leerzeichen vor oder nach einem Datensatz eingefügt werden, um sicherzustellen, dass selbst wenn es zwei James Smiths gibt, die im Chicago Parkview Office in der Abteilung Corporate Accounts arbeiten, sie jeweils individuelle DNs haben.

Anwendungen verwenden LDAP im Allgemeinen, um Benutzern die Möglichkeit zu geben, Abfragen über bestimmte DNs zu senden, wie z. B. beim Versuch, den richtigen Ansprechpartner in der Lohnbuchhaltung zu finden, um über einen Fehler auf dem Scheck zu sprechen. LDAP-Injektionen können auftreten, wenn keine Validierung der vom Benutzer bereitgestellten Parameter in Suchanfragen erfolgt. In diesem Fall können Hacker gutartige Suchanfragen manipulieren, um Authentifizierungsmechanismen zu umgehen oder zusätzliche beliebige Abfragen auszuführen. Dies kann den Server dazu bringen, Ergebnisse anzuzeigen, die nicht erlaubt sein sollten, wie z. B. Benutzerpasswörter, oder sogar eine Anwendung dazu veranlassen, Zugriff auf hochsichere Bereiche innerhalb des Netzwerks zu gewähren, mit oder ohne gültiges Passwort.

Warum sind LDAP-Injektionen so gefährlich?

Die größte Gefahr bei LDAP-Injektionen ist wahrscheinlich die weite Verbreitung des Protokolls in den meisten IP-Computernetzwerken weltweit. Es ist ein leichtes Sprungbrett für Hacker, die Informationen stehlen oder ihre Privilegien in einem Netzwerk erhöhen wollen. Kein geschulter Hacker wird es versäumen, zu prüfen, ob LDAP-Injections möglich sind, daher müssen Sicherheitsteams sicherstellen, dass diese Löcher immer geschlossen sind.

Konkret sind etliche Anwendungen so programmiert, dass sie gültigen Benutzern helfen, begrenzte Informationen über Benutzer und Gruppen innerhalb einer Organisation oder andere in den DNs enthaltene Informationen zu finden. Zum Beispiel könnte eine Anwendung jemandem erlauben, mit LDAP nach den Kontaktinformationen von Buchhaltern in Chicago zu suchen, was unseren Freund James Smith aus dem obigen Beispiel zurückbringen würde. Abhängig von den Berechtigungen ist dies wahrscheinlich eine vollkommen gültige Verwendung einer LDAP-Abfrage.

Die Gefahr entsteht, wenn ein böswilliger Benutzer der Abfrage ungefilterte Parameter hinzufügen kann, wodurch die Art der Suche verändert und der Server dazu gebracht wird, Informationen bereitzustellen, die normalerweise nicht gegeben werden sollten. Durch Hinzufügen einer user=*-Zeichenkette könnten Angreifer beispielsweise Informationen über jeden einzelnen Benutzer einer ganzen Organisation erhalten, was wahrscheinlich niemals erlaubt sein sollte.

Bei Anwendungen, die LDAP zur Authentifizierung verwenden, kann das Problem sogar noch größer sein. Angreifer können z. B. die Zeichenfolge (&) am Ende einer LDAP-Abfrage verwenden, um dem Server vorzugaukeln, dass das Argument wahr ist. Wenn eine Anwendung LDAP zur Überprüfung eines Kennworts verwendet, kann das Erzwingen eines "True"-Arguments durch eine LDAP-Injektion es einem nicht autorisierten Benutzer ermöglichen, sich als Administrator im Netzwerk anzumelden, auch ohne ein Kennwort.

Machen Sie LDAP-Injection zu einem L-DON'T in Ihrem Netzwerk

Eine der besten Möglichkeiten, LDAP-Injektionen zu verhindern, besteht darin, etwas wie LINQtoAD oder andere Frameworks zu implementieren, die speziell dafür entwickelt wurden. Dies ist möglicherweise nicht möglich, wenn es in einem Netzwerk bereits Anwendungen gibt, die LDAP-Abfragen nutzen. Aber selbst in diesem Fall ist es immer noch eine gute Idee, für jede neue Anwendung injektionsresistente Frameworks zu verwenden.

Vorhandene Anwendungen, die LDAP verwenden, können auch durch die Verwendung von Whitelist-Validierung und Eingabensanitisierung gegen Injektionen gehärtet werden. Beschränken Sie die Benutzereingabe nach Möglichkeit auf eine begrenzte Anzahl vertrauenswürdiger Werte. Andernfalls sollten Benutzereingaben, die Teil einer LDAP-Abfrage sind, zuerst bereinigt werden. Vergessen Sie nicht, GET- und POST-Parameter, Cookies und HTTP-Header mit einzubeziehen, da diese ebenfalls als Angriffsvektoren dienen können. Schreiben Sie keine eigenen Funktionen, um die Eingabensanitisierung durchzuführen; verwenden Sie stattdessen eine vertrauenswürdige, auf Sicherheit fokussierte Bibliothek eines Drittanbieters oder integrierte Framework-APIs.

Neben gezielten Korrekturen können auch gute Computerpraktiken helfen, wie z. B. die Zuweisung von LDAP-abfragenden Anwendungen mit den geringsten Berechtigungen, die in einem Netzwerk benötigt werden. Auf diese Weise kann im schlimmsten Fall, wenn eine LDAP-Injektion durchkommt, der Schaden gemindert werden.

Weitere Informationen über LDAP-Injektionen

Weitere Informationen finden Sie im OWASP-Artikel über LDAP-Injektionen oder im Spickzettel zur Vermeidung von Injektionen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Secure Code Warrior Plattform testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Wenn Sie mehr darüber erfahren möchten, wie Sie diese Sicherheitslücke und andere Bedrohungen abwehren können, besuchen Sie den BlogSecure Code Warrior .

Starten

Klicken Sie auf den unten stehenden Link und laden Sie die PDF-Datei dieser Ressource herunter.

Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Bericht ansehenDemo buchen
Ressource anzeigen
Weitergeben:
Interessiert an mehr?

Weitergeben:
Autor
Jaap Karan Singh
Veröffentlicht Jan 17, 2019

Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Weitergeben:

Die große Mehrheit der Computersysteme verwendet das Lightweight Directory Access Protocol (LDAP). Es wird verwendet, um verteilte Verzeichnisinformationsdienste über ein beliebiges Internet Protocol (IP)-Netzwerk zu verwalten. Es dient also im Wesentlichen dazu, den Überblick über die Benutzer zu behalten.

LDAP wird häufig als Authentifizierungsquelle von Anwendungen verwendet, um festzustellen, ob ein Benutzer die Berechtigung hat, verschiedene Aktionen durchzuführen, insbesondere in Bezug auf seine definierte Rolle innerhalb einer Organisation. So können beispielsweise nur Mitarbeiter der Buchhaltung die Buchhaltungssoftware des Unternehmens nutzen. Anwendungen werden oft so programmiert, dass sie eine LDAP-Tabelle überprüfen, um sicherzustellen, dass die Benutzer innerhalb ihrer festgelegten Berechtigungen handeln.

Probleme können auftreten, wenn böswillige Benutzer eine LDAP-Abfrage manipulieren können. Dadurch kann der empfangende Server dazu gebracht werden, ungültige Abfragen auszuführen, die normalerweise nicht erlaubt wären, oder sogar ungültigen oder unsicheren Benutzern ohne Kennwort Zugang auf hoher Ebene oder als Administrator zu gewähren.  

LDAP-Injektionen können knifflig sein, aber in dieser Folge lernen wir es:

  • Wie sie funktionieren
  • Warum sie so gefährlich sind
  • Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.

Wie nutzen Angreifer LDAP Injection?

Einer der Gründe, warum LDAP-basierte Angriffe seit Jahren beliebt sind, ist die Tatsache, dass fast jedes Computersystem es verwendet. LDAP ist quelloffen und funktioniert extrem gut, sodass nicht viele Alternativen geschaffen wurden.

Im Kern ist LDAP eine Datenbank, die gültige Benutzer innerhalb eines IP-basierten Computersystems oder Netzwerks verfolgt. Es kann Benutzern ermöglichen, Informationen über Systeme, Netzwerke, Server, Anwendungen und sogar andere Benutzer im selben Netzwerk auszutauschen.

Informationen werden von LDAP in dem Äquivalent einer Datenbankzeile oder eines Datensatzes gespeichert, der als Distinguished Name bezeichnet wird, oft abgekürzt als DN. Jeder DN ist eindeutig. So könnte zum Beispiel ein DN für einen Benutzer aussehen, der in der Buchhaltung eines großen Unternehmens in Chicago arbeitet.

cn=James Smith, ou=Corporate Accounts, dc=Chicago, do=Parkview  

Um sicherzustellen, dass jeder DN eindeutig ist, können dem Datensatz verschiedene Codes hinzugefügt werden, wie "+", "/", "=" und einige andere. Es können auch Leerzeichen vor oder nach einem Datensatz eingefügt werden, um sicherzustellen, dass selbst wenn es zwei James Smiths gibt, die im Chicago Parkview Office in der Abteilung Corporate Accounts arbeiten, sie jeweils individuelle DNs haben.

Anwendungen verwenden LDAP im Allgemeinen, um Benutzern die Möglichkeit zu geben, Abfragen über bestimmte DNs zu senden, wie z. B. beim Versuch, den richtigen Ansprechpartner in der Lohnbuchhaltung zu finden, um über einen Fehler auf dem Scheck zu sprechen. LDAP-Injektionen können auftreten, wenn keine Validierung der vom Benutzer bereitgestellten Parameter in Suchanfragen erfolgt. In diesem Fall können Hacker gutartige Suchanfragen manipulieren, um Authentifizierungsmechanismen zu umgehen oder zusätzliche beliebige Abfragen auszuführen. Dies kann den Server dazu bringen, Ergebnisse anzuzeigen, die nicht erlaubt sein sollten, wie z. B. Benutzerpasswörter, oder sogar eine Anwendung dazu veranlassen, Zugriff auf hochsichere Bereiche innerhalb des Netzwerks zu gewähren, mit oder ohne gültiges Passwort.

Warum sind LDAP-Injektionen so gefährlich?

Die größte Gefahr bei LDAP-Injektionen ist wahrscheinlich die weite Verbreitung des Protokolls in den meisten IP-Computernetzwerken weltweit. Es ist ein leichtes Sprungbrett für Hacker, die Informationen stehlen oder ihre Privilegien in einem Netzwerk erhöhen wollen. Kein geschulter Hacker wird es versäumen, zu prüfen, ob LDAP-Injections möglich sind, daher müssen Sicherheitsteams sicherstellen, dass diese Löcher immer geschlossen sind.

Konkret sind etliche Anwendungen so programmiert, dass sie gültigen Benutzern helfen, begrenzte Informationen über Benutzer und Gruppen innerhalb einer Organisation oder andere in den DNs enthaltene Informationen zu finden. Zum Beispiel könnte eine Anwendung jemandem erlauben, mit LDAP nach den Kontaktinformationen von Buchhaltern in Chicago zu suchen, was unseren Freund James Smith aus dem obigen Beispiel zurückbringen würde. Abhängig von den Berechtigungen ist dies wahrscheinlich eine vollkommen gültige Verwendung einer LDAP-Abfrage.

Die Gefahr entsteht, wenn ein böswilliger Benutzer der Abfrage ungefilterte Parameter hinzufügen kann, wodurch die Art der Suche verändert und der Server dazu gebracht wird, Informationen bereitzustellen, die normalerweise nicht gegeben werden sollten. Durch Hinzufügen einer user=*-Zeichenkette könnten Angreifer beispielsweise Informationen über jeden einzelnen Benutzer einer ganzen Organisation erhalten, was wahrscheinlich niemals erlaubt sein sollte.

Bei Anwendungen, die LDAP zur Authentifizierung verwenden, kann das Problem sogar noch größer sein. Angreifer können z. B. die Zeichenfolge (&) am Ende einer LDAP-Abfrage verwenden, um dem Server vorzugaukeln, dass das Argument wahr ist. Wenn eine Anwendung LDAP zur Überprüfung eines Kennworts verwendet, kann das Erzwingen eines "True"-Arguments durch eine LDAP-Injektion es einem nicht autorisierten Benutzer ermöglichen, sich als Administrator im Netzwerk anzumelden, auch ohne ein Kennwort.

Machen Sie LDAP-Injection zu einem L-DON'T in Ihrem Netzwerk

Eine der besten Möglichkeiten, LDAP-Injektionen zu verhindern, besteht darin, etwas wie LINQtoAD oder andere Frameworks zu implementieren, die speziell dafür entwickelt wurden. Dies ist möglicherweise nicht möglich, wenn es in einem Netzwerk bereits Anwendungen gibt, die LDAP-Abfragen nutzen. Aber selbst in diesem Fall ist es immer noch eine gute Idee, für jede neue Anwendung injektionsresistente Frameworks zu verwenden.

Vorhandene Anwendungen, die LDAP verwenden, können auch durch die Verwendung von Whitelist-Validierung und Eingabensanitisierung gegen Injektionen gehärtet werden. Beschränken Sie die Benutzereingabe nach Möglichkeit auf eine begrenzte Anzahl vertrauenswürdiger Werte. Andernfalls sollten Benutzereingaben, die Teil einer LDAP-Abfrage sind, zuerst bereinigt werden. Vergessen Sie nicht, GET- und POST-Parameter, Cookies und HTTP-Header mit einzubeziehen, da diese ebenfalls als Angriffsvektoren dienen können. Schreiben Sie keine eigenen Funktionen, um die Eingabensanitisierung durchzuführen; verwenden Sie stattdessen eine vertrauenswürdige, auf Sicherheit fokussierte Bibliothek eines Drittanbieters oder integrierte Framework-APIs.

Neben gezielten Korrekturen können auch gute Computerpraktiken helfen, wie z. B. die Zuweisung von LDAP-abfragenden Anwendungen mit den geringsten Berechtigungen, die in einem Netzwerk benötigt werden. Auf diese Weise kann im schlimmsten Fall, wenn eine LDAP-Injektion durchkommt, der Schaden gemindert werden.

Weitere Informationen über LDAP-Injektionen

Weitere Informationen finden Sie im OWASP-Artikel über LDAP-Injektionen oder im Spickzettel zur Vermeidung von Injektionen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Secure Code Warrior Plattform testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Wenn Sie mehr darüber erfahren möchten, wie Sie diese Sicherheitslücke und andere Bedrohungen abwehren können, besuchen Sie den BlogSecure Code Warrior .

Inhaltsübersicht

PDF herunterladen
Ressource anzeigen
Interessiert an mehr?

Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Demo buchenHerunterladen
Weitergeben:
Ressourcendrehscheibe

Ressourcen für den Einstieg

Mehr Beiträge
Ressourcendrehscheibe

Ressourcen für den Einstieg

Mehr Beiträge