Inhaltsverzeichnis
1. LDAP-Injection
3. Beispielcode
3.1 Fehlercode
3.2 修复代码
Heim Betrieb und Instandhaltung Sicherheit Wie man die LDAP-Injektion versteht

Wie man die LDAP-Injektion versteht

May 22, 2023 pm 09:47 PM
ldap

1. LDAP-Injection

LDAP (Light Directory Access Portocol) ist ein leichtes Verzeichniszugriffsprotokoll, das auf dem X.500-Standard basiert und eine Zugriffsmethode bietet Die Verzeichnisdatenbank Dienste und Protokolle, die häufig zur Bildung von Verzeichnisdiensten mit Verzeichnisdatenbanken verwendet werden. Das Verzeichnis ist eine professionelle verteilte Datenbank, die für Abfragen, Durchsuchen und Suchen optimiert ist. Es organisiert Daten in einer Baumstruktur, ähnlich dem Dateiverzeichnis in Linux/Unix-Systemen. Es eignet sich zum Speichern von Daten, die sich nicht häufig ändern, wie z. B. öffentliche Zertifikate, Sicherheitsschlüssel und Informationen zu physischen Unternehmensgeräten, im Verzeichnis. Ähnlich wie SQL ist LDAP ein Suchprotokoll mit Abfragesyntax und dem Risiko potenzieller Injektionsangriffe. LDAP-Injection bezieht sich auf eine Angriffsmethode, bei der die Eingabezeichenfolge, wenn der Client eine Abfrageanforderung sendet, einige Sonderzeichen enthält, wodurch die ursprüngliche Abfragestruktur von LDAP geändert wird und dadurch der Zugriff auf mehr nicht autorisierte Daten ermöglicht wird.

Dieser Artikel verwendet den JAVA-Sprachquellcode als Beispiel, um die Ursachen und Reparaturmethoden der LDAP-Injection-Schwachstelle in der CWE-ID 90 zu analysieren: Unsachgemäße Neutralisierung spezieller Elemente, die in einer LDAP-Abfrage verwendet werden („LDAP-Injection“) ') Probe . Einzelheiten finden Sie unter:

  • CWE ID 90: Unsachgemäße Neutralisierung spezieller Elemente, die in einer LDAP-Abfrage verwendet werden („LDAP-Injection“)

    #🎜 🎜#http://cwe.mitre.org/data/definitions/90.html

  • CWE ID 639: Autorisierungsumgehung durch benutzergesteuerten Schlüssel#🎜🎜 ## 🎜🎜#http://cwe.mitre.org/data/definitions/639.html

2. Gefahren von Bei der LDAP-Injection

Bei der LDAP-Injection werden vom Benutzer eingegebene Parameter verwendet, um bösartige LDAP-Abfragen zu generieren und LDAP-Filter zu erstellen, um die Zugriffskontrolle und die Eskalation von Benutzerrechten zu umgehen. Durch die Konstruktion normaler Filter wird die Injektion von UND- und ODER-Operationen implementiert, um vertrauliche Informationen zu erhalten.

Von Januar 2018 bis Januar 2019 gab es in CVE insgesamt 4 diesbezügliche Schwachstelleninformationen. Einige der Sicherheitslücken sind wie folgt:

Übersicht

CVE-2018-12689phpLDAPadmin 1.2.2 Erlaubt über cmd. PHP? LDAP-Injection mit einem manipulierten serverid-Parameter in der cmd=loginform-Anfrage oder einem manipulierten Benutzernamen und Passwort im Anmeldebereich. CVE-2018-5730MIT krb5 1.6 oder höher ermöglicht authentifiziertem kadmin das Hinzufügen von Principals zur LDAP-Kerberos-Datenbank. Dies ist möglich Umgehen Sie die DN-Containerprüfung, indem Sie die Datenbankparameter „linkdn“ und „containerdn“ oder die DN-Zeichenfolge als Erweiterung angeben. CVE-2016-8750 Apache Karaf verwendete vor 4.0.8 das LDAPLoginModule, um Benutzer über LDAP zu authentifizieren. Allerdings ist der Benutzername nicht korrekt codiert und daher anfällig für einen LDAP-Injection-Angriff, der zu einem Denial-of-Service führt. CVE-2011-4069PacketFence html/admin/login.php vor 3.0.2 ermöglicht entfernten Angreifern die Durchführung eines LDAP-Injection-Angriffs , wodurch die Authentifizierung über einen manipulierten Benutzernamen umgangen wird.

3. Beispielcode

Das Beispiel stammt aus der Samate Juliet Test Suite für Java v1.3 (https://samate.nist.gov/SARD/testsuite.php), Quelldateiname: CWE90_LDAP_Injection__connect_tcp_01.java.

3.1 Fehlercode

Wie man die LDAP-Injektion verstehtWie man die LDAP-Injektion versteht

In den Zeilen 39-61 des obigen Beispielcodes stellt das Programm eine TCP-Verbindung her, liest die Socket-Daten und weist sie der Variablen data , erstellen Sie dynamisch eine LDAP-Abfrageanweisung in Zeile 118 und führen Sie sie in Zeile 119 aus. LDAP kapselt gängige Objektklassen für Personalorganisationen. Beispielsweise enthält eine Person Attribute wie Nachname (sn), Vorname (cn), Telefonnummer (telephoneNumber) und Passwort (userPassword). Mit dieser Abfrage soll überprüft werden, ob ein Mitarbeiter mit dem Namen Variable data vorhanden ist. Die Variable Führt eine beliebige Filterung nach Dateninhalten durch. Wenn bei Verwendung der einfachsten Injektionsmethode der Wert des eingehenden Parameters „*“ ist, lautet die erstellte dynamische Abfragebedingung „(cn=*)“, wodurch die Informationen aller Mitarbeiter abgefragt werden können, was zu Informationslecks führt. data,在118 行动态构造一个 LDAP 查询语句,119 行对其加以执行。LDAP 为人员组织机构封装了常见的对象类,比如人员(person)含有姓(sn)、名(cn)、电话(telephoneNumber)、密码 (userPassword) 等属性。该查询为了验证是否存在名为变量 data 的员工,但并未对变量 data 的内容做任何过滤。使用最简单的注入方式,令传入参数的值为“*”,则构造的动态查询条件为 "(cn=*)”,这样可以查询到所有员工的信息,导致信息泄露。

对上文中的样例代码进行360代码卫士检测后,发现存在“LDAP注入”漏洞,安全等级评定为高。数据污染源以及数据流向可以通过跟踪路径分析得出并在代码的第120行报告缺陷,图1亦如是


Wie man die LDAP-Injektion versteht

图1:LDAP 注入的检测示例

3.2 修复代码


Wie man die LDAP-Injektion versteht

在上述修复代码中,第119行使用 javax.naming.ldap 包下扩展类 BaseControl 接收需要被处理的参数,第120行 control 对象调用 getEncodedValue() 方法将接收的参数 data 进行编码,编码后的值为字符对应的 ASN.1BER

Nach dem Testen des obigen Beispielcodes mit 360 Code Guard wurde festgestellt, dass eine „LDAP-Injection“-Schwachstelle bestand und die Sicherheitsstufe als hoch eingestuft wurde. Die Quelle der Datenverschmutzung und die Datenflussrichtung können durch eine Trace-Pfad-Analyse ermittelt werden und der Fehler wird in Zeile 120 des Codes gemeldet, wie in Abbildung 1 dargestellt

Wie man die LDAP-Injektion versteht
Wie man die LDAP-Injektion verstehtAbbildung 1: Beispiel für die LDAP-Injection-Erkennung

3.2 Reparaturcode

So verstehen Sie die LDAP-Injektion

Im obigen Reparaturcode verwendet Zeile 119 javax.naming.ldap Die Erweiterungsklasse unter dem Paket BaseControl empfängt die Parameter, die benötigt werden verarbeitet werden soll, ruft Zeile 120 dasSteuerelement-Objekt die getEncodedValue()-Methode auf und Die Parameter Daten werden codiert, und der codierte Wert ist der ASN.1BER Codierungswert, der dem Zeichen entspricht. Das codierte Byte-Array enthält keine Sonderzeichen, die bei der Befehlsanalyse beteiligt sind, und es kann eine LDAP-Abfrageanweisung mit normaler Struktur und normalem Inhalt erstellt werden, wodurch das Auftreten einer LDAP-Injection vermieden wird. <blockquote> <ul class=" list-paddingleft-2">Verwenden Sie 360 ​​​​Code Guard, um den reparierten Code zu erkennen, und Sie können sehen, dass der Fehler „LDAP-Injection“ nicht mehr besteht. Wie in Abbildung 2 dargestellt: <li><p></p></li> <li><p>Abbildung 2: Erkennungsergebnisse nach der Reparatur </p></li> </ul>4. So vermeiden Sie die LDAP-Injektion</blockquote>🎜🎜Die Hauptursache der LDAP-Injektion besteht darin, dass Angreifer LDAP-Metazeichen verwenden, um die Bedeutung von LDAP zu ändern Abfragen. Beim Erstellen eines LDAP-Filters müssen Programmierer klären, welche Zeichen als Befehlsanalyse und welche als Datenanalyse behandelt werden sollen. Um zu verhindern, dass Angreifer die verschiedenen voreingestellten Situationen der Programmierer verletzen, sollte mithilfe einer Whitelist-Methode sichergestellt werden, dass die benutzergesteuerten Werte in LDAP-Abfragen vollständig aus einem vorgegebenen Zeichensatz stammen und keine LDAP-Metazeichen enthalten. Wenn benutzergesteuerte numerische Bereichsanforderungen LDAP-Metazeichen enthalten müssen, sollte der entsprechende Kodierungsmechanismus verwendet werden, um die Bedeutung dieser Metazeichen in LDAP-Abfragen zu umgehen. 🎜🎜🎜🎜🎜 So wie &,! , |, =, ,,, +, -, ", ',; Diese Zeichen werden unter normalen Umständen nicht verwendet. Wenn sie in der Benutzereingabe erscheinen, müssen sie mit Backslashes maskiert werden. 🎜 🎜🎜 🎜Es gibt auch Zeichen wie (,),,*,/,NUL, die nicht nur mit Backslashes verarbeitet werden müssen, sondern die Zeichen müssen auch in entsprechende ASCII-Codewerte umgewandelt werden 🎜🎜🎜🎜.

Das obige ist der detaillierte Inhalt vonWie man die LDAP-Injektion versteht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So führen Sie Range-Übungen mit Bee-Box-LDAP-Injektion durch So führen Sie Range-Übungen mit Bee-Box-LDAP-Injektion durch May 13, 2023 am 09:49 AM

Wenn die Essenz der SQL-Injektion darin besteht, Zeichenfolgen zu spleißen, ist die LDAP-Injektion als eine Art Injektion keine Ausnahme. Interessanter ist, dass es sich um das Spleißen von Klammern handelt (SQL-Injektion). verkettet auch Klammern, es ist jedoch konventioneller zu sagen, dass es Zeichenfolgen verkettet). Im Kapitel zur Umgebungskonfiguration wurde die Konfiguration der LDAP-Umgebung in Bee-Box ausführlich besprochen. Im Übungskapitel zum Schießstand geht es mehr um den Verbindungsprozess zwischen PHP und LDAP, die Einführung der in der Mitte verwendeten Sonderfunktionen einige Techniken zum Zusammenfügen von Klammern. Lassen Sie uns zunächst über den Anmeldevorgang des LDAP-Schießstands in bwapp sprechen: Erstens handelt es sich um eine LDAP-Anmeldeschnittstelle, die URL lautet http://192.168.3.184/bW

Wie man die LDAP-Injektion versteht Wie man die LDAP-Injektion versteht May 22, 2023 pm 09:47 PM

1. LDAP-Injection LDAP (Light Directory Access Portocol) ist ein leichtes Verzeichniszugriffsprotokoll, das auf dem X.500-Standard basiert. Es stellt Dienste und Protokolle für den Zugriff auf Verzeichnisdatenbanken bereit. Es wird häufig zur Bildung von Verzeichnisdiensten mit Verzeichnisdatenbanken verwendet. Das Verzeichnis ist eine professionelle verteilte Datenbank, die für Abfragen, Durchsuchen und Suchen optimiert ist. Es organisiert Daten in einer Baumstruktur, ähnlich dem Dateiverzeichnis in Linux/Unix-Systemen. Daten, die nicht häufig geändert werden, wie z. B. öffentliche Zertifikate, Sicherheitsschlüssel und Informationen zu physischen Unternehmensgeräten, eignen sich für die Speicherung im Verzeichnis. LDAP kann als Suchprotokoll verstanden werden, das SQL ähnelt und über eine Abfragesyntax verfügt, jedoch auch das Risiko von Injektionsangriffen birgt. Die LDAP-Injection bezieht sich auf den Client

So konfigurieren Sie die Umgebung für die Bee-Box-LDAP-Injektion So konfigurieren Sie die Umgebung für die Bee-Box-LDAP-Injektion May 12, 2023 pm 08:37 PM

1. Überblick Nach meinem Lernprozess muss ich das Modell und die Schwachstelle meines Webangriffs kennen. Jetzt bin ich auf eine unerwartete Situation gestoßen. Das erste Mal, dass ich LDAP gesehen habe Ich habe ein unbeliebtes (autorisiertes) gefunden und mein Interesse daran geweckt. Das Konzept von LDAP: Vollständiger Name: Lightweight Directory Access Protocol (Lightweight Directory Access Protocol), Merkmale: Ich werde nicht über das Protokoll sprechen, es ist zu esoterisch, es kann als Datenbank zum Speichern von Daten verstanden werden, seine Besonderheit ist das Es handelt sich um einen Baum in Form einer Datenbank

Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion ldap_bind() Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion ldap_bind() Jun 22, 2023 pm 11:37 PM

Bei der Entwicklung von Webanwendungen mit PHP müssen wir häufig die LDAP-Authentifizierung verwenden, um den Anwendungszugriff zu schützen. Wenn wir jedoch versuchen, die LDAP-Funktionalität von PHP zur Implementierung der Authentifizierung zu verwenden, kann es in einigen Fällen zu der folgenden Fehlermeldung kommen: „PHPFatalerror:Calltoundefinedfunctionldap_bind()“. Diese Fehlermeldung tritt normalerweise auf, wenn eine Anwendung die Funktion ldap_bind() aufruft

So verwenden Sie Nginx zum Schutz vor LDAP-Injection-Angriffen So verwenden Sie Nginx zum Schutz vor LDAP-Injection-Angriffen Jun 10, 2023 pm 08:19 PM

Mit der Zunahme von Sicherheitslücken in Netzwerken sind LDAP-Injection-Angriffe zu einem Sicherheitsrisiko für viele Websites geworden. Um die Sicherheit der Website zu schützen und LDAP-Injection-Angriffe zu verhindern, müssen einige Sicherheitsmaßnahmen eingesetzt werden. Unter anderem kann uns Nginx als leistungsstarker Webserver und Reverse-Proxy-Server viel Komfort und Schutz bieten. In diesem Artikel wird erläutert, wie Sie Nginx verwenden, um LDAP-Injection-Angriffe zu verhindern. LDAP-Injection-Angriff Der LDAP-Injection-Angriff ist eine Angriffsmethode, die auf die LDAP-Datenbank abzielt

Verwendung von LDAP zur Benutzerauthentifizierung in PHP Verwendung von LDAP zur Benutzerauthentifizierung in PHP Jun 20, 2023 pm 10:25 PM

LDAP (LightweightDirectoryAccessProtocol) ist ein Protokoll für den Zugriff auf verteilte Verzeichnisdienste. Es kann für Aufgaben wie Benutzerauthentifizierung, Autorisierung, Kontopflege und Datenspeicherung verwendet werden. In PHP-Anwendungen kann LDAP als leistungsstarker Authentifizierungsmechanismus verwendet werden, um leistungsstarke Authentifizierungs- und Autorisierungsfunktionen für Anwendungen bereitzustellen. In diesem Artikel wird die Verwendung von LDAP zur Benutzerauthentifizierung in PHP vorgestellt. Der spezifische Inhalt umfasst: Installation und Konfiguration L

So schützen Sie sich mit PHP vor LDAP-Injection-Schwachstellen So schützen Sie sich mit PHP vor LDAP-Injection-Schwachstellen Jun 24, 2023 am 10:40 AM

Da Fragen der Netzwerksicherheit immer mehr Aufmerksamkeit erhalten, beginnen immer mehr Programmierer, aufmerksam zu werden und zu lernen, wie sie verhindern können, dass Code angegriffen wird. Zu den gängigen Angriffsmethoden gehören unter anderem SQL-Injection, XSS, CSRF usw. Allerdings gibt es noch eine weitere häufige Angriffsmethode, die unterschätzt wird: LDAP-Injection-Schwachstellen. In diesem Artikel werden das Prinzip dieser Angriffsmethode und die Verwendung von PHP zur Verhinderung von LDAP-Injection-Schwachstellen vorgestellt. LDAP-Einführung LDAP (LightweightDirectoryAccessProtocol)

Verwendung von PHP und LDAP zur Implementierung der Benutzergruppenverwaltung und -autorisierung Verwendung von PHP und LDAP zur Implementierung der Benutzergruppenverwaltung und -autorisierung Jun 25, 2023 am 08:22 AM

Da die Unternehmensgröße und die Geschäftsanforderungen immer größer werden, sind die Verwaltung und Autorisierung von Benutzergruppen zu einem wesentlichen Bestandteil geworden. LDAP (Lightweight Directory Access Protocol) ist ein in Unternehmensnetzwerken weit verbreitetes Verzeichnisdienstprotokoll und bietet eine effiziente Möglichkeit zur Implementierung der Benutzergruppenverwaltung und -autorisierung. In diesem Artikel wird erläutert, wie Sie PHP und LDAP zur Implementierung der Benutzergruppenverwaltung und -autorisierung verwenden. 1. Was ist LDAP LDAP ist ein leichtes Verzeichniszugriffsprotokoll, das häufig als Verzeichnisdienstprotokoll in Unternehmensnetzwerken verwendet wird. LDAP ist Client/Server-basiert

See all articles