SSTI

Inyección de plantilla del lado del servidor

Un ataque de inyección de plantilla del lado del servidor ocurre cuando un actor de amenazas explota la sintaxis nativa de una plantilla e inyecta cargas útiles maliciosas en la plantilla. Luego, la plantilla comprometida se ejecuta en el lado del servidor.

Los atacantes utilizan la técnica de inyección de plantillas del lado del servidor para insertar directamente la entrada del usuario en las plantillas, lo que les permite introducir directivas arbitrarias que alteran el comportamiento del motor de plantillas.

Algunos de los motores de plantillas más populares se pueden enumerar de la siguiente manera:

  • PHP – Smarty, Twigs

  • Java – Velocity, Freemaker

  • Python – JINJA, Mako, Tornado

  • JavaScript – Jade, Rage

  • Ruby – Liquid

Detección de inyección de plantilla del lado del servidor

El enfoque para detectar SSTI es similar al de otros ataques de inyección. Necesitamos encontrar puntos de entrada, confusión y luego revisar los resultados.

  1. Identifique posibles puntos de entrada: comenzamos identificando dónde se reflejan las entradas del usuario en la respuesta del servidor. Por ejemplo, podrían ser cuadros de búsqueda, parámetros de URL, campos de formulario, etc.

  2. Confusión con la sintaxis de teamplting: use caracteres o sintaxis de plantilla común para la entrada, como `{{` o `{%%}`. Si el servidor responde de manera diferente a estas entradas (ya sea con un error, ejecutando el comando de plantilla o reflejando la entrada de manera diferente), puede ser vulnerable. Es crucial aquí prestar atención al comportamiento de la aplicación.

  3. Pruebe las funciones integradas: muchos motores de plantillas proporcionan funciones o filtros integrados. Por ejemplo, inyectando `{{ 'prueba' | length }}` podría devolver `4` si el servidor lo está evaluando como una plantilla.

  4. Esté atento a los mensajes de error: un error del servidor después de ingresar la sintaxis de la plantilla podría indicar un manejo inadecuado de la entrada del usuario y una posible vulnerabilidad SSTI. Sin embargo, no todos los errores significan que la aplicación es vulnerable y no todas las vulnerabilidades SSTI producirán errores, así que asegúrese de verificar sus hallazgos.

  5. Respuestas mostradas: simplemente alinee ataques SQLi ciegos, algunas cargas útiles SSTI pueden causar retrasos deliberados. Si la respuesta del servidor se retrasa después de enviar dicha carga útil, este es un buen indicador de vulnerabilidad.

Recursos

Última actualización