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)
(Introdução retirada da documentação do Apache)
SSI (Server Side Includes) são diretivas que são colocadas em páginas HTML e avaliadas no servidor enquanto as páginas estão sendo servidas. Elas permitem que você adicione conteúdo gerado dinamicamente a uma página HTML existente, sem precisar servir a página inteira através de um programa CGI ou outra tecnologia dinâmica. Por exemplo, você pode colocar uma diretiva em uma página HTML existente, como:
<!--#echo var="DATE_LOCAL" -->
E, quando a página é servida, esse fragmento será avaliado e substituído pelo seu valor:
Tuesday, 15-Jan-2013 19:28:54 EST
A decisão de quando usar SSI e quando ter sua página totalmente gerada por algum programa geralmente é uma questão de quão estática é a página e quanto precisa ser recalculado toda vez que a página é servida. SSI é uma ótima maneira de adicionar pequenos pedaços de informação, como a hora atual - mostrado acima. Mas se a maior parte da sua página está sendo gerada no momento em que é servida, você precisa procurar alguma outra solução.
Você pode inferir a presença de SSI se a aplicação web usar arquivos com a extensão .shtml
, .shtm
ou .stm
, mas não é apenas esse o caso.
Uma expressão SSI típica tem o seguinte formato:
Há um problema com o cache de informações ou aplicações dinâmicas, pois parte do conteúdo pode ter variado para a próxima vez que o conteúdo for recuperado. É para isso que o ESI é usado, para indicar usando tags ESI o conteúdo dinâmico que precisa ser gerado antes de enviar a versão em cache. Se um atacante conseguir injetar uma tag ESI dentro do conteúdo em cache, então, ele poderá injetar conteúdo arbitrário no documento antes que ele seja enviado aos usuários.
O seguinte cabeçalho em uma resposta do servidor significa que o servidor está usando ESI:
Se você não conseguir encontrar este cabeçalho, o servidor pode estar usando ESI de qualquer forma. Uma abordagem de exploração cega também pode ser usada já que uma solicitação deve chegar ao servidor dos atacantes:
GoSecure criou uma tabela para entender possíveis ataques que podemos tentar contra diferentes softwares compatíveis com ESI, dependendo da funcionalidade suportada:
Includes: Suporta a diretiva <esi:includes>
Vars: Suporta a diretiva <esi:vars>
. Útil para contornar Filtros XSS
Cookie: Cookies do documento são acessíveis ao mecanismo ESI
Cabeçalhos Upstream Necessários: Aplicações substitutas não processarão declarações ESI a menos que a aplicação upstream forneça os cabeçalhos
Lista de Permissão de Hosts: Neste caso, inclusões ESI só são possíveis a partir de hosts de servidor permitidos, tornando SSRF, por exemplo, apenas possível contra esses hosts
Software
Includes
Vars
Cookies
Cabeçalhos Upstream Necessários
Lista de Permissão de Hosts
Squid3
Sim
Sim
Sim
Sim
Não
Varnish Cache
Sim
Não
Não
Sim
Sim
Fastly
Sim
Não
Não
Não
Sim
Akamai ESI Test Server (ETS)
Sim
Sim
Sim
Não
Não
NodeJS esi
Sim
Sim
Sim
Não
Não
NodeJS nodesi
Sim
Não
Não
Não
Opcional
A seguinte diretiva ESI carregará um arquivo arbitrário dentro da resposta do servidor
Roubo remoto de cookie
Roubar cookie HTTP_ONLY com XSS refletindo-o na resposta:
Não confunda isso com uma "Inclusão de Arquivo Local":
O seguinte adicionará um cabeçalho Location
à resposta
Adicionar cabeçalho na solicitação forçada
Adicione cabeçalho na resposta (útil para contornar "Content-Type: text/json" em uma resposta com XSS)
Isso enviará informações de depuração incluídas na resposta:
É possível usar a sintaxe de eXtensible Stylesheet Language Transformations (XSLT)
no ESI apenas indicando o valor do parâmetro dca
como xslt
. O que pode permitir abusar do XSLT para criar e explorar uma vulnerabilidade de Entidade Externa XML (XXE):
Arquivo XSLT:
Verifique a página XSLT:
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)