Las inclusiones del lado del servidor (SSI) son una tecnología que utilizan las aplicaciones web para crear contenido dinámico en páginas HTML. SSI es compatible con muchos servidores web populares, como Apache e IIS. El uso de SSI a menudo se puede deducir de la extensión del archivo. Las extensiones de archivo típicas incluyen .shtml, .shtm y .stm. Sin embargo, los servidores web se pueden configurar para admitir directivas SSI en extensiones de archivo arbitrarias. Por lo tanto, no podemos concluir de manera concluyente si SSI se utiliza solo a partir de la extensión del archivo.
SSI Directives
SSI utiliza directivas para añadir contenido generado dinámicamente a una página HTML estática. Estas directivas constan de los siguientes componentes:
name: el nombre de la directiva.parameter namedel parámetro: uno o más parámetros.value: uno o más valores de parámetro.
Una directiva SSI tiene la siguiente sintaxis:
<!--#name param1="value1" param2="value" -->printenv
<!--#printenv -->config
<!--#config errmsg="Error!" -->echo
Esta directiva imprime el valor de cualquier variable dada en el parámetro var. Se pueden imprimir varias variables especificando varios parámetros var. Por ejemplo, se admiten las siguientes variables:
DOCUMENT_NAME: el nombre del archivo actual.DOCUMENT_URI: el URI del archivo actual.LAST_MODIFIED: marca de tiempo de la última modificación del archivo actual.DATE_LOCAL: hora local del servidor.
<!--#echo var="DOCUMENT_NAME" var="DATE_LOCAL" -->exec
<!--#exec cmd="whoami" -->include
<!--#include virtual="index.html" -->SSI Injection
La inyección SSI se produce cuando un atacante puede inyectar directivas SSI en un archivo que posteriormente es servido por el servidor web, lo que da lugar a la ejecución de las directivas SSI inyectadas. Este escenario puede darse en diversas circunstancias. Por ejemplo, cuando la aplicación web contiene una vulnerabilidad en la carga de archivos que permite a un atacante cargar un archivo que contiene directivas SSI maliciosas en el directorio raíz web. Además, los atacantes podrían inyectar directivas SSI si una aplicación web escribe la entrada del usuario en un archivo del directorio raíz web.
Prevención:
Al igual que con cualquier vulnerabilidad de inyección, los desarrolladores deben validar y sanitizar cuidadosamente las entradas de los usuarios para evitar la inyección SSI. Esto es especialmente importante cuando las entradas de los usuarios se utilizan dentro de directivas SSI o se escriben en archivos que pueden contener directivas SSI según la configuración del servidor web. Además, es fundamental configurar el servidor web para restringir el uso de SSI a extensiones de archivo concretas e, incluso, a directorios concretos. Además, las capacidades de directivas SSI específicas pueden limitarse para ayudar a mitigar el impacto de las vulnerabilidades de inyección SSI. Por ejemplo, podría ser posible desactivar la directiva exec si no es necesaria de forma activa.