Entrada

Business Logic Vulnerabilities Lab 6

Business Logic Vulnerabilities Lab 6

Skills

  • Inconsistent handling of exceptional input

Certificaciones

  • eWPT
  • eWPTXv2
  • OSWE
  • BSCP

Descripción

Este laboratorio no valida adecuadamente la entrada de usuario. Podemos explotar un fallo lógico en su proceso de registro de cuentas para obtener acceso a la funcionalidad administrativa. Para resolver el laboratorio, debemos acceder al panel de administración y eliminar al usuario carlos


Resolución

Al acceder a la web vemos esto

Fuzzeamos rutas y encontramos /admin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# ffuf -t 10 -w /usr/share/seclists/Discovery/Web-Content/common.txt -u https://0a68006503d0c9338187b62000b9000c.web-security-academy.net/FUZZ

        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : https://0a68006503d0c9338187b62000b9000c.web-security-academy.net/FUZZ
 :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/Web-Content/common.txt
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 10
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
________________________________________________

ADMIN                   [Status: 401, Size: 2857, Words: 1110, Lines: 56, Duration: 56ms]
Admin                   [Status: 401, Size: 2857, Words: 1110, Lines: 56, Duration: 57ms]

Si accedemos a /admin vemos que solo podemos acceder si nuestra dirección de correo electrónico es @dontwannacry.com

Si pulsamos sobre Email client vemos nuestra dirección de correo, en este caso no es una dirección de correo convencional si no que es un catch-all. El catch-all es una configuración de un servidor de correo electrónico que permite capturar todos los correos enviados a un dominio, independientemente de la dirección específica a la que se envíen

Pulsamos en Register y nos registramos con este correo electrónico. Estoy usando un correo electrónico con 200 caracteres para ver si puedo llevar a cabo un truncation attack. Esta vulnerabilidad se produce si el input del usuario tiene un límite de caracteres superior al límite de caracteres de la columna de la base de datos. Por ejemplo, si en la columna de la base de datos tiene un límite de 10 caracteres VARCHAR(10) pero nosotros proporcionamos un input de 13 caracteres se almacenarán solo los 10 primeros caracteres, con esto podemos llegar a acceder a cuentas de usuarios dependiendo de como esté configurada la base de datos

1
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@exploit-0acf0050035bc9738177b516015d00d0.exploit-server.net

Recibimos un correo de confirmación en nuestro email, vemos que aquí no se ha truncado nuestra dirección de correo electrónico. Debemos hacer click sobre el enlace para confirmar la creación de la cuenta

Pulsamos sobre My account y nos logueamos utilizando las credenciales test:test

Vemos que si que se ha truncado el correo electrónico

He usado este web https://www.contadordecaracteres.com/ para contar el número de caracteres y he modificado el payload para que sean 255 caracteres los que se en la base de datos. Como contamos con un servidor de correo catch-all también podemos usar subdominos como @dontwannacry.com.exploit-0acf0050035bc9738177b516015d00d0.exploit-server.net. Lo que ocurre en la web es que hay un fallo, a la hora de crearnos la cuenta nos acepta un cierto número de caracteres y por lo tanto podemos crearla y verificar nuestro correo electrónico, pero a la hora de iniciar sesión de produce un truncamiento en la base de datos porque solo admite 255 caracteres

1
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@dontwannacry.com

Pulsamos sobre Register y nos creamos una nueva cuenta con este email

1
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@dontwannacry.com.exploit-0acf0050035bc9738177b516015d00d0.exploit-server.net

Accedemos a Email client y hacemos click sobre el link recibido para confirmar la creación de la cuenta

Pulsamos en My account y nos logueamos con las credenciales hacked:hacked

Vemos que el truncamiento ha funcionado perfectamente y el email almacenado en la base de datos es este

1
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@dontwannacry.com

Como nuestro email almacenado en la base de datos es @dontwannacry.com podemos acceder a /admin y eliminar al usuario carlos

Esta entrada está licenciada bajo CC BY 4.0 por el autor.