SSTI
Ataques SSTI (Server Side Template Injection), tem como alvo, aplicativos Web que usam modelos (arquivos TPL) para tornar as páginas da Web mais dinâmicas. A injeção de modelo no servidor ocorre quando a entrada do usuário é incorporada a um modelo de maneira insegura.
Podemos testar se o alvo é vulnerável a SSTI, enviando comando no formato {{}}
. Supondo que determinado sistema irá pegar o valor do parâmetro GET para inserir um template, podemos passar o seguinte payload como parâmetro:
Caso tenho a execução do mesmo, ou seja, escrever 7 vezes
a palavra test
, significa que o alvo está vulnerável. Então podemos fazer algo mais interessante, retornar uma lista de funções disponíveis que podemos acessar. Repare que abaixo estamos passando o índice 1, mas as vezes é preciso alterar esse número para conseguir buscar a lista de funções.
O retorno deverá ser uma lista (array) de classes separadas por espaço, então quebre-o com espaços para descobrir qual o index da classe. Depois de descobrir isso, acesse o alvo com o seguinte payload.
Supondo que queiramos acessar fopen
, podemos inserir comandos no sistema operacional dos seguintes modos (altere os valores dos indexes):
Twig
A versão do 1.9.0 do Twig está vulnerável a SSTI e, consequentemente conseguimos um RCE.
Para verificarmos se o Twig apresenta erro no eval
, podemos utilizar o payload {{_self}}
TPLMap
Ferramenta que busca por vulnerabilidades de SSTI. Sua sintaxe e usabilidade é bem semelhante ao SQLMap
.
Note que no final do URL tem um *
, indicando ao TPLMap que ali será o ponto de injection.
Sites
Last updated