Server Side Inclusion/Edge Side Inclusion Injection
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
(Introducción tomada de Apache docs)
SSI (Server Side Includes) son directivas que se colocan en páginas HTML y se evalúan en el servidor mientras se sirven las páginas. Te permiten agregar contenido generado dinámicamente a una página HTML existente, sin tener que servir toda la página a través de un programa CGI u otra tecnología dinámica. Por ejemplo, podrías colocar una directiva en una página HTML existente, como:
<!--#echo var="DATE_LOCAL" -->
Y, cuando se sirve la página, este fragmento será evaluado y reemplazado por su valor:
Tuesday, 15-Jan-2013 19:28:54 EST
La decisión de cuándo usar SSI y cuándo hacer que tu página sea generada completamente por algún programa, generalmente es una cuestión de cuánto de la página es estático y cuánto necesita ser recalculado cada vez que se sirve la página. SSI es una excelente manera de agregar pequeñas piezas de información, como la hora actual - mostrada arriba. Pero si la mayoría de tu página se está generando en el momento en que se sirve, necesitas buscar alguna otra solución.
Puedes inferir la presencia de SSI si la aplicación web utiliza archivos con la extensións.shtml
, .shtm
o .stm
, pero no es solo el caso.
Una expresión típica de SSI tiene el siguiente formato:
Hay un problema con el almacenamiento en caché de información o aplicaciones dinámicas ya que parte del contenido puede haber variado para la próxima vez que se recupere el contenido. Esto es para lo que se utiliza ESI, para indicar utilizando etiquetas ESI el contenido dinámico que necesita ser generado antes de enviar la versión en caché. Si un atacante es capaz de inyectar una etiqueta ESI dentro del contenido en caché, entonces, podría ser capaz de inyectar contenido arbitrario en el documento antes de que se envíe a los usuarios.
El siguiente encabezado en una respuesta del servidor significa que el servidor está utilizando ESI:
Si no puedes encontrar este encabezado, el servidor podría estar utilizando ESI de todos modos. Un enfoque de explotación ciega también se puede utilizar ya que una solicitud debería llegar al servidor del atacante:
GoSecure creó una tabla para entender los posibles ataques que podemos intentar contra diferentes software compatibles con ESI, dependiendo de la funcionalidad soportada:
Includes: Soporta la directiva <esi:includes>
Vars: Soporta la directiva <esi:vars>
. Útil para eludir filtros XSS
Cookie: Las cookies del documento son accesibles para el motor ESI
Encabezados de upstream requeridos: Las aplicaciones sustitutas no procesarán las declaraciones ESI a menos que la aplicación upstream proporcione los encabezados
Lista blanca de hosts: En este caso, los includes ESI solo son posibles desde hosts de servidor permitidos, haciendo que SSRF, por ejemplo, solo sea posible contra esos hosts
Software
Includes
Vars
Cookies
Encabezados de upstream requeridos
Lista blanca de hosts
Squid3
Sí
Sí
Sí
Sí
No
Varnish Cache
Sí
No
No
Sí
Sí
Fastly
Sí
No
No
No
Sí
Akamai ESI Test Server (ETS)
Sí
Sí
Sí
No
No
NodeJS esi
Sí
Sí
Sí
No
No
NodeJS nodesi
Sí
No
No
No
Opcional
La siguiente directiva ESI cargará un archivo arbitrario dentro de la respuesta del servidor
Robo de cookie remoto
Robar cookie HTTP_ONLY con XSS reflejándolo en la respuesta:
No confunda esto con una "Inclusión de Archivo Local":
Lo siguiente añadirá un encabezado Location
a la respuesta
Agregar encabezado en la solicitud forzada
Agregar encabezado en la respuesta (útil para eludir "Content-Type: text/json" en una respuesta con XSS)
Esto enviará información de depuración incluida en la respuesta:
Es posible usar la sintaxis de eXtensible Stylesheet Language Transformations (XSLT)
en ESI simplemente indicando el valor del parámetro dca
como xslt
. Lo que podría permitir abusar de XSLT para crear y explotar una vulnerabilidad de Entidad Externa XML (XXE):
Archivo XSLT:
Check the XSLT page:
XSLT Server Side Injection (Extensible Stylesheet Language Transformations)Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)