HTML Injection no site Portal Da Queixa
Necessitei infelizmente de publicar uma queixa no "famoso" portal da Queixa. Fiquei desconfiado da segurança do site, pois reparei que o site não tem configurado HTTPS, sendo que para submeter uma queixa temos de preencher um formulário de registo e fazer login, custa-me a acreditar que hoje em dia um site com autenticação não tenha configurado o HTTPS! Não custa nada -> Let's Encrypt).
Resolvi então dar uma olhada mais profunda no site...
Experimentei a caixa de pesquisa, e verifiquei que é retornado o valor pesquisado na página HTML. Tentei então injectar código javascript mas reparei que o site faz algum tipo de validação e elimina os eventos de javascript como "onmouseover", "onfocus", "onclick", etc... Tentei algumas substituições mas não obtive sucesso.
Verifiquei também que as tags "<script>" estavam a ser substituidas pela string "[removed]".
Fiz ainda alguns testes com a tool OWASP ZAP para verificar se estavam a usar algum header HTML de prevenção de execução de javascript tal como o "X-XSS-PROTECTION 1 mode=block" mas reparei que não estava configurado... O que me leva a pensar que talvez com mais algum tempo poderia conseguir injetar javascript.
Finalmente verifiquei que a injeção de HTML é simples, basta para isso fechar o parâmetro "value" e fechar também a "input" box para depois podermos inserir o HTML desejado... Escrevi na caixa de pesquisa o seguinte texto:
"/> <h1>THIS IS A FAKE COMPLAINT</h1> <img src="https://bellard.org/bpg/2.png" /><imgE obtive a seguinte página:
Este tipo de ataque pode ser utilizado, por exemplo, para enganar a vítima com uma falsa queixa, bastando para isso passar-lhe o URL alterado.
Neste caso, para o exemplo acima o URL seria:
A correção para este tipo de problemas é simples:http://portaldaqueixa.com/pesquisa?q=%22%2F%3E+%3Ch1%3ETHIS+IS+A+FAKE+COMPLAINT%3C%2Fh1%3E+%3Cimg+src%3D%22https%3A%2F%2Fbellard.org%2Fbpg%2F2.png%22++%2F%3E%3Cimg&sort_by=date
- Adicionar os HTTP headers de prevenção, tal como o mostrado acima:
- Fazer escape client and server side de código HTML nas input boxes.
- 03/05/2017 - encontrado o problema no site portaldaqueixa.com
- 03/05/2017 - email enviado aos administradores do portal a dar o conhecimento da vulnerabilidade
- 04/05/2017 - recebi email de resposta à reclamação e a vulnerabilidade já foi corrigida. Well done!