Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Cuando 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.

0 de 5 · 0%

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?

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

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