Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Inyección en plantillas del servidor

5 tareas · 35 min · Principiante

Un motor de plantillas es un intérprete más: lee una plantilla, la compila y la ejecuta con los datos que le pasan. Cuando lo que escribe una persona termina dentro de la plantilla en vez de dentro del contexto, el motor deja de distinguir el texto del código. Tinajal Servicios entrega el controlador de sus avisos, el de sus recordatorios, el formulario y el registro de errores del motor. Se lee como quien va a corregirlo.

0 de 5 · 0%

Objetivo de la sala

Un motor de plantillas es un intérprete más: lee una plantilla, la compila y la ejecuta con los datos que le pasan. Cuando lo que escribe una persona termina dentro de la plantilla en vez de dentro del contexto, el motor deja de distinguir el texto del código. Tinajal Servicios entrega el controlador de sus avisos, el de sus recordatorios, el formulario y el registro de errores del motor. Se lee como quien va a corregirlo.

Un motor de plantillas recibe dos cosas distintas. La plantilla es código: lleva marcas que el motor interpreta —poner aquí una variable, repetir este bloque, aplicar este filtro— y vive en el repositorio junto al resto del proyecto. El contexto son los datos: un arreglo de valores que el motor inserta donde la plantilla se lo indique, escapándolos según el formato de salida. La plantilla manda; el contexto obedece.

El fallo aparece cuando el programa arma la plantilla pegando texto que llega de fuera. A partir de ese momento el texto de la persona ya no es un dato que se inserta: es parte del programa que el motor va a compilar. El motor hará con él exactamente lo que hace con cualquier plantilla, porque no tiene forma de saber qué trozo de la cadena escribió un desarrollador y cuál llegó en una petición. MITRE recoge esta debilidad como CWE-1336, de nivel base, para los elementos especiales que un motor de plantillas interpreta.

La pista en el código es siempre la misma: una cadena de plantilla que se construye con concatenación, o una llamada que crea la plantilla «en memoria» a partir de una variable, en vez de cargar un archivo del repositorio.

Responde para continuar

¿Qué diferencia de verdad a un valor que viaja en el contexto de uno que se pega en la cadena de la plantilla?

Ver pista de ayuda

Piensa en qué llega al compilador del motor.

Abre el laboratorio. En tinajal-plantillas hay dos controladores que envían correos con el mismo motor. Uno carga una plantilla del repositorio y pasa los valores como contexto; el otro construye la cadena de la plantilla en cada petición. Léelos a la par y fíjate en qué recibe la llamada que crea la plantilla.

El registro del motor ayuda a confirmarlo: las plantillas que fallan no aparecen con un nombre de archivo.

Responde para continuar

¿Qué archivo del servicio construye la cadena de la plantilla en cada petición en vez de cargarla del repositorio? Escribe el nombre del archivo tal como aparece en la carpeta.

Ver pista de ayuda

Es el que no llama a una plantilla con extensión .twig.

El formulario de avisos tiene cuatro controles y el controlador valida tres campos. Uno de ellos no se inserta con una marca del motor: se pega directamente entre las líneas de la plantilla. Cruza formulario-aviso.html con la construcción de la cadena en el controlador.

Responde para continuar

¿Qué campo del formulario termina dentro de la cadena de la plantilla, y no en el contexto? Escribe el nombre del campo tal como aparece en el código.

Ver pista de ayuda

Es el único de los tres validados que no se pasa en el arreglo de datos del render.

Un fallo así no se prueba: se mide con lo que dejó escrito. Cuando el texto de una persona entra en la plantilla, basta un carácter que el motor interprete para que la compilación falle, y esos fallos quedan en el registro del motor. Cuenta cuántas líneas del registro vienen de la ruta de los avisos personalizados; las demás rutas tienen otros problemas, y no cuentan.

Responde para continuar

¿Cuántos errores del registro del motor de plantillas provienen de la ruta de los avisos personalizados? Escribe solo el número.

Ver pista de ayuda

Filtra el registro por la ruta y cuenta líneas, no días.

El área de atención necesita escribir el saludo, y eso no se discute: lo que hay que cambiar es por dónde entra ese texto. Un arreglo de raíz deja la plantilla fija en el repositorio y convierte el saludo en un valor más del contexto; si además el saludo admite algún formato, se procesa como texto enriquecido con una biblioteca que produce la salida ya escapada, nunca como plantilla.

Responde para continuar

¿Qué cambio quita la causa del hallazgo en el servicio de avisos de Tinajal?

Ver pista de ayuda

La plantilla la escribe el proyecto; el texto de la persona es un dato.

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