Insecure Deserialization Lab 1
Skills
- Modifying serialized objects
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio
utiliza un mecanismo de sesión basado en serialización
y es vulnerable
a una escalada de privilegios
como resultado. Para resolver
el laboratorio, debemos editar el objeto serializado
en la cookie de sesión
para explotar esta vulnerabilidad
y obtener privilegios de administrador
. Luego, debemos eliminar al usuario carlos
. Podemos iniciar sesión
en nuestra propia cuenta utilizando las credenciales wiener:peter
Resolución
Al acceder
a la web
nos sale esto
Pulsamos sobre My account
y nos logueamos
utilizando las credenciales wiener:peter
Si recargamos
la página web
y capturamos
la petición
con Burpsuite
veremos esta petición
Vemos que el parámetro session
contiene una cadena
en base64
Si intentamos acceder a https://0a00005a030ce63981dbf2dc00f30060.web-security-academy.net/admin
nos dice que no podemos debido a que no somos administradores
Este es el objeto serializado
, el cual tiene dos atributos, username
y admin
. Cada uno de estos atributos
tiene un valor
, el valor
de username
es wiener
y el valor
de admin
es 0
1
O:4:"User":2:{s:8:"username";s:6:"wiener";s:5:"admin";b:0;}
- O:4:”User”
- O:
Indica
que es unobjeto
- 4: La
longitud
delnombre
delobjeto
(en este caso “User”) - “User”: El
nombre
delobjeto
- O:
- 2
- Indica que el
objeto
tiene2 atributos
- Indica que el
- {s:8:”username”;s:6:”wiener”;s:5:”admin”;b:0;}
- Los atributos dentro del objeto están representados entre llaves {}
Primer atributo
- s:8:”username”
- s:
Indica
que elvalor
es unstring
- 8: La
longitud
delstring
es8 caracteres
- “username”: El
nombre
delatributo
- s:
- s:6:”wiener”
- s:
Indica
que elvalor
es unstring
- 6: La
longitud
delstring
es6 caracteres
- “wiener”: El
valor asignado
alatributo username
- s:
Segundo atributo
- s:5:”admin”
- s:
Indica
que elvalor
es unstring
- 5: La
longitud
delstring
es5 caracteres
- “admin”: El
nombre
delatributo
- s:
- b:0
- b:
Indica
que elvalor
es unbooleano
- 0: El
valor
delatributo admin
esfalse
, indicando que el usuario no es un administrador
- b:
Desde Burpsuite
cambiamos el valor de admin
de 0
a 1
Hacemos una petición
a /admin
transmitiendo el nuevo objeto modificado
y vemos que tenemos acceso
al panel administrativo
No copiamos session Tzo0OiJVc2VyIjoyOntzOjg6InVzZXJuYW1lIjtzOjY6IndpZW5lciI7czo1OiJhZG1pbiI7YjoxO30%3d
, nos vamos al navegador, pulsamos Ctrl + Shift + i
y sustituimos el valor
de session
por el modificado
Refrescamos
la página
con F5
y ya podemos eliminar
al usuario carlos