Vulnerabilidade XSS no jogo System Empires 5


Hoje venho mostrar-vos como é fácil encontrar vulnerabilidades em páginas web, para inaugurar esta nova “categoria” do blog o website escolhido foi o jogo web-based System Empires jogo este que tenho vindo a jogar e a falha nele explorada será o tipo de falha Cross-site scripting (XSS) esta falha, para os que não sabem, permite fazer injecção de código numa página, esta é uma vulnerabilidade client-side pois só se dá no browser da vítima e não afecta, directamente, o servidor.

Nota: esta falha é apenas vísivel a membros registados no jogo. Vulnerabilidade corrigida (mais informações)

Uma funcionalidade que o jogo tem é de verificar nas regiões visiveis ao nosso observatório se ele está online para poder executar o ataque com mais segurança.

SystemEmpires_Online

E como é o URL desta funcionalidade formado?

http://civ.sysemp.com/players.php?u=470&n=skin&pop

u – Unique_ID do membro

n – texto a mostrar na janela

Onde reside a falha neste URL?

No parâmetro n. Para não fazer mais uma query à base de dados os programadores optaram por passar o parâmetro anteriormente e esqueceram-se de fazer filtragem dos dados. Assim sem qualquer filtragem é possível passar qualquer tipo de dados incluindo elementos HTML.

Introduzindo então informações no lugar de skin, por exemplo:

http://civ.sysemp.com/players.php?u=470&n=<script>alert(“XSS?”);</script>&pop

Vamos obter o seguinte resultado:

SystemEmpires_Script_Alert

Agora se tentarmos colocar uma página para tentar enganar alguém que aceda através deste URL podemos utilizar iframes por exemplo:

http://civ.sysemp.com/players.php?u=470&n=</b></td></tr><iframe src =”http://joaopedropereira.com/” width=”110%” height=”3000px” scrolling=”no” frameborder=”0″></iframe></table>&pop

SystemEmpires_iframe

Neste caso a única coisa que acontece é a página do jogo ficar com a minha página pessoal a ocupar tudo, mas imaginemos que alguém queria fazer algo de mal, podia gerar uma página de login igual à do jogo e colocar num host privado guardando todas as passwords que os utilizadores introduzissem sem saberem que estavam fora do jogo… Claro que para isso era necessário alguma engenharia social e técnicas de phishing mas com isto era muitissimo fácil de realizar e era possível de realizar com poucos conhecimentos a esse nível.

A falha já foi reportada à administração, esperemos brevidade na resolução do problema.

Quem se quiser proteger contra este tipo de vulnerabilidades pode utilizar vários programas como o HTML Purifier (permite algumas tags HTML), ou então aconselho vivamente a utilização da Input Class da framework Code Igniter (quem não quiser utilizar a framework completa pode alterar o ficheiro e utilizar apenas o que lhe convém e até fazer modificações).

E vocês o que acham deste tipo de vulnerabilidades? E como as aproveitariam?


Leave a Reply

5 thoughts on “Vulnerabilidade XSS no jogo System Empires