Table of Contents
1. LDAP injection
3. Sample code
3.1 Defect Code
3.2 Fix code
4. How to avoid LDAP injection
Home Operation and Maintenance Safety How to understand LDAP injection

How to understand LDAP injection

May 22, 2023 pm 09:47 PM
ldap

1. LDAP injection

LDAP (Light Directory Access Portocol) is a lightweight directory access protocol based on the X.500 standard, providing services and protocols for accessing directory database methods. Commonly used to form directory services with directory databases. The directory is a professional distributed database optimized for query, browsing and search. It organizes data in a tree structure, similar to the file directory in Linux/Unix systems. It is suitable for storing data that does not change frequently, such as public certificates, security keys, and company physical device information, in the directory. Similar to SQL, LDAP is a search protocol with query syntax and the risk of potential injection attacks. LDAP injection refers to an attack method in which the input string when the client sends a query request contains some special characters, causing the original query structure of LDAP to be modified, thereby allowing access to more unauthorized data.

This article takes the JAVA language source code as an example to analyze the causes and repair methods of the LDAP injection vulnerability in the CWE ID 90: Improper Neutralization of Special Elementsused in an LDAP Query ('LDAP Injection') sample. For details, please see:

  • CWE ID 90: Improper Neutralization of Special Elements used in an LDAP Query ('LDAP Injection')

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

  • CWE ID 639: Authorization Bypass ThroughUser-Controlled Key

    http://cwe.mitre.org/ data/definitions/639.html

2. Dangers of LDAP injection

LDAP injection is introduced by using users Parameters generate malicious LDAP queries to bypass access control and user privilege escalation by constructing LDAP filters. Through the construction of normal filters, AND and OR operation injection is implemented to obtain sensitive information.

From January 2018 to January 2019, there were a total of 4 vulnerability information related to it in CVE. Some of the vulnerabilities are as follows:

##CVE NumberOverviewCVE-2018-12689phpLDAPadmin 1.2.2 allowed via cmd.php? LDAP injection with a crafted serverid parameter in the cmd=loginform request or a crafted username and password in the login panel. CVE-2018-5730MIT krb5 1.6 or later allows authenticated kadmin to add principals to the LDAP Kerberos database by providing "linkdn" and "containerdn" database parameters to bypass the DN container check, or by providing the DN string as an extension to the DN container check. CVE-2016-8750 Apache Karaf before 4.0.8 uses the LDAPLoginModule to authenticate users through LDAP. However, the username is not encoded correctly and is therefore vulnerable to an LDAP injection attack, resulting in a denial of service. CVE-2011-4069PacketFence html/admin/login.php before 3.0.2 allows remote attackers to conduct an LDAP injection attack via a crafted Username bypasses authentication.

3. Sample code

The example comes from Samate Juliet Test Suite for Java v1.3 (https://samate.nist.gov/SARD/testsuite.php), source File name: CWE90_LDAP_Injection__connect_tcp_01.java.

3.1 Defect Code

How to understand LDAP injectionHow to understand LDAP injection

In the above example code lines 39-61, the program makes a TCP connection and reads the Socket The data is assigned to the variable data, an LDAP query statement is dynamically constructed on line 118, and executed on line 119. LDAP encapsulates common object classes for personnel organizations. For example, a person contains attributes such as last name (sn), first name (cn), phone number (telephoneNumber), and password (userPassword). This query is to verify whether there is an employee named variable data, but it does not perform any filtering on the content of variable data. Using the simplest injection method, if the value of the incoming parameter is "*", then the constructed dynamic query condition is "(cn=*)", which can query the information of all employees, leading to information leakage.

After testing the sample code above with 360 Code Guard, it was found that there was an "LDAP injection" vulnerability, and the security level was rated as high. The source of data pollution and data flow direction can be obtained through trace path analysis and the defect is reported at line 120 of the code, as shown in Figure 1


How to understand LDAP injection

Figure 1: LDAP injection Detection example

3.2 Fix code


How to understand LDAP injection

In the above fix code, line 119 uses javax. naming.ldap Extension class under the package BaseControl receives the parameters that need to be processed, line 120 control The object calls the getEncodedValue() method to receive the parameters data is encoded, and the encoded value is the ASN.1BER encoding value corresponding to the character. The encoded byte array does not contain special characters involved in command parsing, and an LDAP query statement with normal structure and content can be constructed, thus avoiding the occurrence of LDAP injection.

Use 360 ​​Code Guard to detect the repaired code, and you can see that there is no "LDAP injection" defect. As shown in Figure 2:


How to understand LDAP injection

Figure 2: Detection results after repair

4. How to avoid LDAP injection

The root cause of LDAP injection is that attackers use LDAP metacharacters to modify the meaning of LDAP queries. When constructing an LDAP filter, programmers need to clarify which characters should be treated as command parsing and which characters should be treated as data parsing. In order to prevent attackers from invading programmers' various preset situations, a whitelist method should be used to ensure that the user-controlled values ​​in LDAP queries come entirely from a predetermined character set and should not contain any LDAP metacharacters. If user-controlled numerical range requirements must contain LDAP metacharacters, the corresponding encoding mechanism should be used to escape the meaning of these metacharacters in LDAP queries.

  • like&,! ,|,=,,,,,-,",',; these characters are not used under normal circumstances. If they appear in the user's input, they need to be escaped with backslashes.

  • There are also some characters such as (,), \, *, /, NUL. These characters not only need to be processed with backslashes, but also the characters must be converted into corresponding ASCII code values.

The above is the detailed content of How to understand LDAP injection. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to understand LDAP injection How to understand LDAP injection May 22, 2023 pm 09:47 PM

1. LDAP injection LDAP (Light Directory Access Portocol) is a lightweight directory access protocol based on the X.500 standard. It provides services and protocols for accessing directory databases. It is often used to form directory services with directory databases. The directory is a professional distributed database optimized for query, browsing and search. It organizes data in a tree structure, similar to the file directory in Linux/Unix systems. Data that is not modified frequently, such as public certificates, security keys, and company physical device information, is suitable for storage in the directory. LDAP can be understood as a search protocol, which is similar to SQL and has query syntax, but also has the risk of injection attacks. LDAP injection refers to the client

How to conduct range practice with bee-box LDAP injection How to conduct range practice with bee-box LDAP injection May 13, 2023 am 09:49 AM

If the essence of sql injection is to splice strings, then the essence of everything that can be injected is to splice strings. LDAP injection is no exception as a kind of injection. What is more interesting is that it is splicing parentheses (sql injection is also concatenates parentheses, but it is more conventional to say that it concatenates strings). In the environment configuration chapter, the configuration of the ldap environment in bee-box has been discussed in great detail. The shooting range practice chapter is more about the connection process between php and ldap, the introduction of the special functions used in the middle, and some techniques for splicing parentheses. Let’s first talk about the login process of the ldap shooting range in bwapp: First, this is an LDAP login interface, the URL is http://192.168.3.184/bW

How to configure the environment for bee-box LDAP injection How to configure the environment for bee-box LDAP injection May 12, 2023 pm 08:37 PM

1. Overview According to my learning process, I must know what the model and vulnerability of my web attack are. Now I have encountered an unexpected situation. The first time I saw LDAP was during a penetration test in a state-owned enterprise. I found an unpopular one (authorized) and piqued my interest in it. The concept of LDAP: Full name: Lightweight Directory Access Protocol (Lightweight Directory Access Protocol), features: I won’t talk about the protocol, it’s too esoteric, it can be understood as a database for storing data, its special feature is that it is a tree A database in the form of a database. First, the name of the database is equivalent to the root of the tree (i.e. DB=dc), and then the process from the root to a leaf node is

Solution to PHP Fatal error: Call to undefined function ldap_bind() Solution to PHP Fatal error: Call to undefined function ldap_bind() Jun 22, 2023 pm 11:37 PM

When developing web applications using PHP, we often need to use LDAP authentication to protect application access. However, in some cases, when we try to use PHP's LDAP functionality to implement authentication, we may encounter the following error message: "PHPFatalerror:Calltoundefinedfunctionldap_bind()". This error message usually occurs when an application calls the ldap_bind() function

Using LDAP for user authentication in PHP Using LDAP for user authentication in PHP Jun 20, 2023 pm 10:25 PM

LDAP (LightweightDirectoryAccessProtocol) is a protocol for accessing distributed directory services. It can be used for tasks such as user authentication, authorization, account maintenance, and data storage. In PHP applications, LDAP can be used as a powerful authentication mechanism to provide powerful authentication and authorization functions for applications. This article will introduce how to use LDAP for user authentication in PHP. The specific content includes: Installation and configuration L

How to use Nginx to protect against LDAP injection attacks How to use Nginx to protect against LDAP injection attacks Jun 10, 2023 pm 08:19 PM

With the increase in network security vulnerabilities, LDAP injection attacks have become a security risk faced by many websites. In order to protect website security and prevent LDAP injection attacks, some security measures need to be used. Among them, Nginx, as a high-performance web server and reverse proxy server, can provide us with a lot of convenience and protection. This article will introduce how to use Nginx to prevent LDAP injection attacks. LDAP injection attack LDAP injection attack is an attack method targeting the LDAP database. The attacker

How to protect against LDAP injection vulnerabilities using PHP How to protect against LDAP injection vulnerabilities using PHP Jun 24, 2023 am 10:40 AM

As network security issues receive more and more attention, more and more programmers are beginning to pay attention and learn how to prevent code from being attacked. Among them, common attack methods include SQL injection, XSS, CSRF, etc. However, there is another common attack method that is underestimated: LDAP injection vulnerabilities. This article will introduce the principle of this attack method and how to use PHP to prevent LDAP injection vulnerabilities. LDAP introduction LDAP (LightweightDirectoryAccessProtocol)

How to use PHP and LDAP to implement user group management and authorization How to use PHP and LDAP to implement user group management and authorization Jun 25, 2023 am 08:22 AM

As the scale of enterprises and business needs continue to expand, user group management and authorization have become an essential part. LDAP (Lightweight Directory Access Protocol), as a directory service protocol widely used in enterprise networks, provides an efficient way to achieve user group management and authorization. This article will introduce how to use PHP and LDAP to implement user group management and authorization. 1. What is LDAP LDAP is a lightweight directory access protocol that is widely used as a directory service protocol in enterprise networks. LDAP is client/server based

See all articles