miércoles, 31 de diciembre de 2014

Resolviendo el primer reto de Amateria.smashthestack.org

Hacia mucho tiempo que no escribía, principalmente por falta de tiempo y porque no sabia sobre que hacerlo [...] bla, bla, bla...

Buscando wargames llegué, por recomendación de @TheXC3LL, a Smash The Stack Wargaming Network (donde también se encuentra el wargame IO analizado en anteriores post por el señor antes mentado). De las diversas opciones me decanté por Amateria.


El primer nivel es el 0 que nos proporcionará la contraseña de acceso al siguiente. Como pista para solucionarlo nos dan un enlace a un script en python:


A partir de aquí podemos dilucidar que el servidor tiene el puerto 54321 a la escucha y es donde estableceremos la conexión. La otra peculiaridad es la librería cPickle que desconocía.

Cuando abrimos su documentación nos encontramos con:
Warning: The pickle module is not intended to be secure against erroneous or maliciously constructed data. Never unpickle data received from an untrusted or unauthenticated source.
Picke nos permite serializar y de-serializar estructuras en python, pero no valida la información con la que trabaja lo que puede llegar a ser peligroso. Ejemplos de esto se encuentran en una entrada del creador del wargame llamada Python cPickle: Allows For Arbitrary Code Execution donde se ahonda mas en el tema.

Por tanto, si conectamos con el puerto 54321 y enviamos determinada "información" podremos ejecutar código en el servidor, por ejemplo, leer el archivo con la clave del siguiente nivel.


Puesto que sabemos que el servidor tiene las contraseñas en /home/<user>/password (no es magia, lo pone en la web de amateria), haremos que el servidor ejecute un cat de dicho archivo en el sistema mediante subprocess. Cuando el servidor responda, nos dará su contenido.


Estos códigos junto con los siguientes niveles y demás relacionado con wargames estarán recogidos en el repositorio GitHub de 0verl0ad:
https://github.com/0verl0ad/PornAetsuWarGames

Fuentes e información extra:

Feliz año y "nos leemos en breve"


5 0verl0ad Labs: Resolviendo el primer reto de Amateria.smashthestack.org Hacia mucho tiempo que no escribía, principalmente por falta de tiempo y porque no sabia sobre que hacerlo [...] bla, bla, bla... Buscando...
< >