🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónCuando el parámetro elige qué archivo se carga
5 tareas · 40 min · Principiante
El sitio público de Editorial Quinchama se migró en 2023 y quedó funcionando, que es la forma educada de decir que nadie volvió a mirarlo. Elige la plantilla de cada página con un parámetro de la dirección. En noviembre apareció en el registro una página de exportación que la editorial retiró hace dos años. Tienes el controlador, la lista de plantillas del proyecto, el registro del servidor y la configuración del intérprete.
Objetivo de la sala
El sitio público de Editorial Quinchama se migró en 2023 y quedó funcionando, que es la forma educada de decir que nadie volvió a mirarlo. Elige la plantilla de cada página con un parámetro de la dirección. En noviembre apareció en el registro una página de exportación que la editorial retiró hace dos años. Tienes el controlador, la lista de plantillas del proyecto, el registro del servidor y la configuración del intérprete.Entregar un archivo y cargarlo como código son dos cosas distintas, y la segunda es más grave. Cuando un lenguaje de plantillas incluye un archivo, no lo copia: lo interpreta. Lo que haya dentro se ejecuta con los permisos del proceso del servidor.
Por eso la debilidad tiene entrada propia. MITRE la recoge como CWE-98, control indebido del nombre de archivo de una sentencia de inclusión en un programa en PHP, con la inclusión de archivos locales listada como término alternativo; es una variante, es decir, una debilidad atada a una tecnología concreta. Su pariente general es el mismo de la sala anterior: si el nombre lo pone quien pide la página, el directorio de plantillas no es una frontera.
Conviene distinguir dos variantes. La local carga un archivo que ya está en el disco del servidor: una plantilla retirada, un archivo subido por alguien, un registro. La remota carga una dirección de internet; en PHP depende de una directiva de configuración que viene apagada de fábrica y que la documentación oficial marca como obsoleta desde la versión 7.4. En la práctica, la local es la que se encuentra, porque no necesita que nadie cambie la configuración.
Responde para continuar
¿Por qué una inclusión dinámica es más grave que una descarga con el mismo fallo de ruta?
Ver pista de ayuda
Piensa en qué hace el intérprete con el archivo.
Abre el laboratorio y lee VistaController.php: verás de dónde sale el nombre de la plantilla. Después cruza vistas.txt, que lista lo que el proyecto declara hoy, con registro-vistas.txt, que dice qué archivo se cargó en cada petición.
Responde para continuar
¿Qué plantilla retirada del sitio volvió a cargarse en noviembre? Escribe el nombre del archivo tal como aparece en el registro.
Ver pista de ayuda
La cargó dos veces la misma cuenta, de madrugada.
Una de las líneas del registro no carga una plantilla del proyecto ni una retirada: carga un archivo de la carpeta donde el portal guarda lo que suben los autores. Esa combinación —una carpeta que acepta cualquier archivo y un código que incluye cualquier ruta— es la que convierte un fallo de ruta en ejecución de código ajeno.
Cuenta todas las peticiones del registro cuyo archivo cargado quedó fuera de la carpeta de plantillas del proyecto.
Responde para continuar
¿Cuántas peticiones del registro cargaron un archivo fuera de la carpeta de plantillas? Escribe solo el número.
Ver pista de ayuda
Compara la carpeta de cada línea con la que lista el archivo de plantillas declaradas.
Lee php-ini.txt. El extracto trae cuatro directivas y el comentario de infraestructura explica para qué sirve cada una de las tres primeras. Una decide si una sentencia de inclusión puede tomar una dirección de internet en vez de un archivo del disco; otra, que está sin configurar, limitaría las carpetas que el proceso puede abrir.
Responde para continuar
¿Qué directiva del extracto queda en «Off» y decide si una inclusión puede traer contenido de internet? Escríbela tal como aparece en el archivo.
Ver pista de ayuda
Es la segunda línea del extracto.
Hay arreglos que hacen más difícil el fallo y arreglos que lo quitan. Limitar las carpetas que el proceso puede abrir reduce el daño, pero el parámetro sigue eligiendo qué se ejecuta.
Responde para continuar
¿Qué cambio quita la causa del hallazgo en el sitio público?
Ver pista de ayuda
¿Quién debería decidir el conjunto de páginas que existen?
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.