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