Pular para o conteúdo

Web

SSRF cego

Agora o alvo é um validador de webhook (preview-service.js). Você manda uma URL, ele busca em segundo plano e responde sempre a mesma coisa: {"status":"queued"}. Você nunca vê o corpo, nem o código de status, nem o tempo. Isso é SSRF cego: a falha existe, mas a resposta não volta para você.

O jeito de confirmar e extrair dados é fazer o servidor chamar um host SEU e olhar o que chega lá. Você controla uma "canário" em 192.0.2.50 que registra todo pedido que recebe (veja collector-notes.txt). Quando o validador busca uma URL, ele acrescenta um cabeçalho de autenticação interno nos pedidos que faz. Faça-o chamar a sua canário e leia o que ele vaza.

O oracle.mjs mostra os dois lados: o que o validador devolve a você e o que a sua canário registrou. A flag é o valor que vaza no cabeçalho.

Formato: tocaia{...}. Exemplo com a mesma forma, que não é a resposta: tocaia{nada_voltou}.

Arquivos do desafio

  • preview-service.js

    918 B · SHA-256 9f2453abfe819d89…

    Baixar
  • collector-notes.txt

    459 B · SHA-256 6a748adbf6cfe6c5…

    Baixar
  • oracle.mjs

    2 KB · SHA-256 ff5b952099fba086…

    Baixar

Tudo se resolve com ferramentas gratuitas.