🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónSubida 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.
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.
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.
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.
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.
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.
Preparando el escritorio…
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
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.