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
Tudo se resolve com ferramentas gratuitas.
Entre para ver o assunto deste desafio.
A solução comentada aparece depois que você resolve.