XSS e HTML Injection em site do Governo(base.gov.pt)

Recentemente visitei a página http://www.base.gov.pt/ que é usada para gestão dos contratos públicos. O portal contém toda a informação sobre todos os contratos celebrados ao abrigo do Código dos Contratos Públicos.

Experimentei a caixa de pesquisa, e verifiquei que é retornado o valor pesquisado na página HTML. Tentei então injectar código HTML e obtive sucesso, conforme podemos verificar abaixo.
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...
Verifiquei que a injeção de HTML é simples, basta para isso escrever na caixa de pesquisa o seguinte texto:
"<img src="https://i2.wp.com/upload.wikimedia.org/wikipedia/commons/2/26/You_Have_Been_Hacked!.jpg"  />"
E obtive a seguinte página:
 

Verifiquei também que era possível injetar Javascript na página o que torna a página vulneravel a XSS injection. Adicionando o seguinte código ao elemento <img> recebi o alerta da página:

De notar que as versões mais recentes do Google Chrome já protegem contra este tipo de ataques:



Para o Firefox também existem add-ons que evitam os ataques XSS, um bom exemplo disso é o "NoScript" - https://addons.mozilla.org/pt-pt/firefox/addon/noscript/

Este tipo de ataque é explorado passando um URL específico para a vítima e permite:
  • induzir em erro a vítima com falsas publicações, pois podemos manipular toda a página;
  • roubar credenciais, cookies, etc. utilizado para isso o javascript injection e engenharia social;
  • perda de confiança dos utilizadores na segurança da estrutura governamental.

A correção para este tipo de problemas é simples:
  • Adicionar os HTTP headers de prevenção, tal como o mostrado acima:
  • Fazer escape client and server side de código HTML e Javascript nas input boxes. 

Timeline:
  • 01/06/2017 - encontrado o problema no site base.gov.pt
  • 01/06/2017 - email enviado aos administradores do portal a dar o conhecimento da vulnerabilidade
  • 08/06/2017 - recebi email de resposta à reclamação e a vulnerabilidade já foi corrigida!

Comentários