Pular para o conteúdo

Intermediário 8 desafios

Injeção de template no servidor

Muitos sites montam a página com um motor de template: um texto com buracos como {{ nome }} que o servidor preenche. O perigo nasce quando o site cola o que o visitante escreve dentro do próprio template, em vez de passar como dado. Aí {{7*7}} não aparece na tela: aparece 49, porque o motor avaliou o seu texto. Aqui você segue a injeção de template no servidor (SSTI) em pedaços: primeiro reconhece que o template avalia a sua entrada, depois identifica o motor pelo comportamento, lê um segredo do contexto, escapa do contexto até a execução, contorna um filtro ingênuo, lê o patch que fecha a falha, arranca um segredo às cegas quando a página só devolve um status e, no fim, junta tudo. Cada desafio termina no mesmo conserto: nunca colocar a entrada do usuário na linguagem do template, passar como dado e usar um motor em modo seguro. Tudo se resolve lendo o código e rodando um motor de brinquedo (o Pinefold) que vem nos arquivos, com o Node. Nada mira sistema real nem roda comando de verdade: o alvo é sempre uma loja de brinquedo, a AgroPampa, e o Pinefold só consulta uma tabela fixa.

O que você vai aprender

  • Entrada que vira comando
  • Injeção de template
  • Identificar o motor
  • O contexto do template
  • Escapar para a execução
  • Contornar o filtro
  • A defesa contra SSTI
  • Injeção cega
  1. Web Com arquivo Exemplo resolvido

    O template avalia

    Disponível
  2. Web Com arquivo Exemplo resolvido

    Que motor é esse

    Disponível
  3. Web Com arquivo

    Lendo o contexto

    Disponível
  4. Web Com arquivo

    Saindo do template

    Disponível
  5. Web Com arquivo

    Driblando o filtro

    Disponível
  6. Web Com arquivo

    Lendo o patch

    Disponível
  7. Web Com arquivo

    SSTI às cegas

    Disponível
  8. Web Com arquivo

    Capstone de SSTI

    Disponível