Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Subida de archivos y deserializacion

4 tareas · 25 min · Principiante

Dos fallos de confianza mal puesta. Una subida de archivos que acepta lo que le den y lo guarda donde el servidor ejecuta codigo. Y un dato del usuario que la aplicacion reconstruye como objeto sin validar. En Depostock estan los dos en el codigo. El auditor los localiza, los clasifica y recomienda el arreglo; no sube nada ni fabrica ningun objeto.

0 de 4 · 0%

Objetivo de la sala

Dos fallos de confianza mal puesta. Una subida de archivos que acepta lo que le den y lo guarda donde el servidor ejecuta codigo. Y un dato del usuario que la aplicacion reconstruye como objeto sin validar. En Depostock estan los dos en el codigo. El auditor los localiza, los clasifica y recomienda el arreglo; no sube nada ni fabrica ningun objeto.

Una subida segura decide por lo que el archivo ES, no por como se llama, y lo guarda donde el servidor no ejecuta nada. En subir.php de Depostock pasa lo contrario: comprueba el final del nombre —y ademas con un || true que anula la comprobacion— y mueve el archivo a publico/subidas, una carpeta dentro de la raiz que ejecuta PHP. El auditor ve el fallo en esos dos detalles: se fia del nombre y guarda en zona ejecutable.

La extension del nombre la pone quien sube: fiarse de ella es fiarse del que podria estar abusando.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Por que es peligrosa la subida de subir.php?

Ver pista de ayuda

Mira de que se fia para aceptar y donde deja el archivo.

El arreglo de una subida insegura tiene varias piezas, y una es la que corta el peligro de raiz: guardar los archivos FUERA de la raiz publica, en un sitio desde el que el servidor no ejecuta nada, y servirlos de forma controlada. Encima, validar el tipo real con una lista blanca y renombrar el archivo. Asi, aunque alguien suba algo que no es una imagen, el servidor nunca lo ejecuta. El auditor lo clasifica como subida de fichero peligroso sin restriccion (CWE-434).

Comprobar mejor la extension ayuda, pero la pieza que de verdad cierra el fallo es que lo guardado no viva donde se ejecuta codigo.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Cual es el arreglo que corta de raiz el riesgo de la subida?

Ver pista de ayuda

Aunque el filtro falle, el dano se evita si el archivo no puede ejecutarse donde queda.

El segundo fallo de Depostock esta en sesion.php: una cookie del usuario, $_COOKIE['pref'], se pasa a unserialize, que reconstruye un objeto a partir de ese texto. El problema es que el texto lo controla el usuario, y reconstruir un objeto desde datos no confiables permite forzar comportamientos que el programa no previo. El auditor lo clasifica como deserializacion insegura (CWE-502) y recomienda no deserializar datos del usuario: usar un formato de datos como JSON y, si hace falta integridad, firmarlo.

Es la misma leccion de toda la sala: lo que viene de fuera es dato, no instruccion ni objeto, hasta que se valida.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Como clasificas y arreglas el unserialize de la cookie en sesion.php?

Ver pista de ayuda

El dato que se reconstruye como objeto lo controla quien manda la cookie.

La nota de triaje de Depostock recoge el hallazgo principal de la subida, su clasificacion y el arreglo, y menciona el segundo. Abrela en el laboratorio y lee el codigo del hallazgo con el que cierra.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Abre la nota de triaje de Depostock (carpeta auditoria) y escribe el codigo del hallazgo que la cierra.

Ver pista de ayuda

Ultima linea de auditoria/hallazgo.txt, despues de los dos hallazgos.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Preparando el escritorio…

16:24
Terminal (user@whoami)
user@whoami:~$
Tab Autocompletar ↑/↓ Historial
bash 5.2.21
Whoami-Labs OS v3.0.1 LTS · build bcc89e

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad