Pular para o conteúdo

Intermediário 8 desafios

Cross-site scripting

Quando um site pega o que você escreveu e devolve dentro da página sem tratar, o navegador não distingue o texto do dono do texto do visitante: ele executa os dois. Isso é cross-site scripting, e é o seu JavaScript rodando na página, com acesso ao que a página tem. Aqui você começa pelo caso mais simples, uma entrada refletida de volta no corpo do HTML, e aprende que o lugar onde a entrada cai (o corpo, um atributo, dentro de um script) muda o que é preciso para escapar dele. Depois você guarda um payload que dispara para todo visitante, contorna um filtro que só apaga a etiqueta de script, rouba um cookie de sessão de brinquedo, e vê a falha nascer só no JavaScript do cliente, sem o servidor participar. No fim você lê um patch que quase fecha a falha e monta o conserto de verdade: codificar a saída conforme o contexto e usar uma política de conteúdo que não deixe script embutido rodar. Tudo se resolve com o navegador e as páginas de brinquedo que vêm no desafio, sem servidor nem internet.

O que você vai aprender

  • XSS refletido
  • O contexto da saída
  • XSS armazenado
  • Contornar um filtro ingênuo
  • Cookies
  • XSS baseado em DOM
  • A defesa contra XSS
  1. Web Com arquivo Exemplo resolvido

    Reflexo na página

    0% de acerto, 0 resolveram

    Disponível
  2. Web Com arquivo Exemplo resolvido

    Onde cai a entrada

    Disponível
  3. Web Com arquivo

    Recado que fica

    Disponível
  4. Web Com arquivo

    Filtro ingênuo

    Disponível
  5. Web Com arquivo

    Roubo do cookie

    Disponível
  6. Web Com arquivo

    Sink no cliente

    Disponível
  7. Web Com arquivo

    Lendo o patch

    Disponível
  8. Web Com arquivo

    Capstone: Pampa Notes

    Disponível