Descripción

This lab uses a serialization-based session mechanism and loads the Apache Commons Collections library. Although you don’t have source code access, you can still exploit this lab using pre-built gadget chains.

To solve the lab, use a third-party tool to generate a malicious serialized object containing a remote code execution payload. Then, pass this object into the website to delete the morale.txt file from Carlos’s home directory.

You can log in to your own account using the following credentials: wiener:peter

Exploiting Java deserialization with Apache Commons writeup

Iniciamos sesión en ‘My account’ con el usuario ‘wiener’ y la contraseña ‘peter’. Capturamos la petición al recargar la página y examinamos la cookie de sesión:

Sabemos que la cookie posee objetos en Java por dos potivos:

  1. Comienza con ‘rO0ABXNy’.
  2. Si en el ‘Repeater’ borramos parte de ella y forzamos un error nos saldrá ‘java.io.EOFException’:

Para generar una nueva cookie que borre el archivo usaremos ysoserial en una máquina virtual Linux. Nos la descargaremos del siguiente enlace.

El principal problema que tendremos con esta herramienta es que no funciona a partir de Java 17, puesto que fue creada para Java 1.8. Tendremos entonces 2 opciones:

  1. Hacer funcionar ysoserial en Java 17 (o superior).
  2. Instalar Java 1.8 y correr ysoserial en él.

Después de intentar varias veces la primera opción, opté por la segunda.

Cómo instalar Java 1.8 en Debian 10 o superior

Usaremos para ello ‘SDKMAN’:

curl -s "https://get.sdkman.io" | bash

Lo añadiremos al path:

source "$HOME/.sdkman/bin/sdkman-init.sh"

E instalaremos Java 8:

sdk install java 8.0.275.hs-adpt

Formatear la salida de ysoserial

Ahora, si ejecutamos ysoserial, nos dará una salido con saltos de línea, para ello emplearemos el siguiente comando:

java -jar ysoserial-all.jar CommonsCollections4 'rm /home/carlos/morale.txt' | base64 | tr -d '\n'

ysoserial se ejecutará predefinidamente con Java 8, con lo cual nos dará una salida correcta. El resultado nos lo llevaremos a una petición del ‘Repeater’ y allí lo codificaremos como URL con Click derecho -> Convert selection -> URL -> URL-encode all characters:

Al enviar la petición y volver al laboratorio lo habremos completado:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *