Server-Side Includes Injection

SSI

Featured image

Server-Side Includes (SSI) es una técnica usada por servidores web para insertar contenido dinámico en páginas HTML estáticas mediante directivas especiales (por ejemplo <!--#include ...-->). Habitualmente aparece en archivos con extensiones como .shtml, .shtm o .stm, aunque el servidor puede configurarse para procesarlas en otras extensiones.

La inyección SSI ocurre cuando un atacante logra que directivas SSI controladas por él se escriban o sirvan desde el servidor (por ejemplo subiendo un archivo con directivas al directorio raíz web o haciendo que la app guarde entrada del usuario en un archivo servible). Si el servidor procesa esas directivas, el atacante puede ejecutar comandos, incluir archivos o filtrar variables de entorno, lo que implica riesgo de divulgación de información o ejecución remota.

Payloads

Printenv

Directiva que imprime variables de entorno.

<!--#printenv -->

Config

Esta directiva cambia la configuración de SSI especificando los parámetros correspondientes.

<!--#config errmsg="Error!" -->

Eco

Esta directiva imprime el valor de cualquier variable dada en el var parámetro.

<!--#echo var="DOCUMENT_NAME" var="DATE_LOCAL" -->

Exec

Esta directiva ejecuta comandos en el sistema.

<!--#exec cmd="whoami" -->

Include

Esta directiva permite la inclusión de archivos en el directorio raíz web.

<!--#include virtual="index.html" -->

Recomendaciones

Las principales medidas de prevención frente a la inyección SSI consisten en que los desarrolladores valíden y desinfecten rigurosamente toda entrada del usuario, especialmente aquella que pueda insertarse en archivos procesados por el servidor. También deben configurar el servidor web para limitar el uso de SSI únicamente a ciertas extensiones o directorios autorizados, reduciendo así la superficie de ataque. Además, es recomendable restringir o deshabilitar directivas peligrosas como exec cuando no sean estrictamente necesarias, y aplicar políticas de configuración seguras que impidan la ejecución o inclusión de código no autorizado dentro de las páginas servidas.