Caríssimos leitores, o artigo que se segue é fruto de uma análise de segurança ao sistema Wareztuga, um sistema de partilha de filmes e séries online.
Antecipadamente, reuniram-se todos os esforços de modo a contactar a administração do sistema, mas os mesmos, não partilham qualquer contacto na sua página. Portanto, o conteúdo apresentado no artigo é meramente informativo e apenas expõe as falhas desta plataforma.
– Página Inicial
Na imagem acima é apresentada uma página exemplo do primeiro contacto que um utilizador tem com o sistema (website). Uma página bastante cativante e funcional, que disponibiliza à partida, todas as secções para que um utilizador navegue no sistema de uma forma intuitiva.
No topo da página é apresentada uma hiperligação, que permite aos utilizadores registados efetuar a autenticação, e consequentemente, o estabelecimento de sessão para acesso aos conteúdos.
Seguidamente são apresentados os devidos menus de navegação, assim como, os filmes mais recentes ou em destaque. Existe também a possibilidade do utilizador realizar pesquisas de filmes, na caixa de pesquisa ou no separador disponibilizado (Filmes, Séries, etc).
Neste artigo não será feita uma análise a todos os procedimentos e funções do sistema. Somente serão discutidos aqueles que foram classificados como perigosos e expostos a furto de informação, que prejudicam sériamente o bom funcionamento do sistema.
– Página de Login
Na página login.php podem ser analisados alguns pormenores interessantes. Segue em seguida o efetivo conteúdo da página.
Dando uma vista de olhos à formatação da página HyperText Markup Language (HTML), pode afirmar-se que está impecável, mas derivado da observação do código-fonte da mesma, foram detectadas algumas curiosidades. Em seguida, é apresentado um trecho do código-fonte.
Logo no início da inclusão de ficheiros Javascript, saltou à vista um ficheiro convidativo a analisar:
-View/templates/default/includes/js/newfunctions.js
O nome do ficheiro fala por si, será maioritáriamente a ferramenta de trabalho do artigo.
Um pouco mais abaixo desta inclusão, é possível observar que a plataforma faz uso da
API Flowplayer (
http://flowplayer.org), esta é usada na visualização dos filmes no sistema. Um assunto a abordar no final do artigo é de “
como tirar partido desta funcionalidade“.
A título de curiosidade, entre as linhas 175 e 179 existe uma <div> marcada como escondida, que contém a informação de contacto do Wareztuga. Visto não ser disponibilizada qualquer informação de contacto da página (pelo menos visível), foi possível constatar um endereço de contacto escondido. A seguinte imagem apresenta a informação referente ao endereço de e-mail.
Não deixa de ser interessante esta curiosidade. No entanto, e como compromisso do bem, os administradores do sistema foram notificados através do endereço de e-mail oculto na página. No conteúdo do e-mail, foi explicito que no presente blog iria ser publicado dentro de duas semanas uma análise em detalhe do sistema Wareztuga. Nenhum feedback foi recebido por parte da administração do sistema.
Em seguimento, outros links com um alto nível de suspeita foram detetados umas linhas de código abaixo.
Os links para a página movie.php carecem de alguma atenção. É sabido que nos dias de hoje as aplicações web-based sofrem ataques sucessivos de XSS (Cross-site scripting) e SQLi (SQL Injection). Foi realizada uma análise a este tema, através dos links referidos na imagem anterior.
1. Análise SQLi e XSS
Como conhecidos, os ataques de injeção de SQL (SQLi) e injeção de Javascript (XSS) são dos mais usuais na Internet. Como tal, o presente sistema não é excepção! Foi conseguido obter os seguintes links através do código-fonte da página, para uma posterior análise de laboratório, de forma a comprovar a afirmação.
Links de teste:
A página movies.php é uma das páginas do sistema. Esta tem parametrização, isto é, recebe argumentos via GET. (Consultar o seguinte link no blog para maior informação:
Através da parametrização é possível observar que o sistema é vulnerável a injecção, neste caso, apenas de XSS. Explorando as vulnerabilidades, é possível tirar o máximo proveito e efetuar uma intrusão, em último caso, no sistema. Na sua maioria, e o mais comum, é sem dúvida o furto de dados pessoais (dados de autenticação) e desfiguração da página.
Em seguida segue uma listagem dos tipos de processos usados na investigação.
– Exibição de uma imagem na página.
– Inclusão de iframes.
– Redirecionar para links externos ao sistema.
Muito resumidamente, é possível observar como é que um sistema pode ser derrubado através deste tipo de ataques, e por consequência fazer, com que o utilizador caía inocentemente numa armadilha.
Em seguida, é apresentada uma string de dados, de modo a comprovar uma das falhas de segurança do sistema.
movies.php?p=1&btn=moviesfeatured=”></a><img src=””>
O trecho de código anterior, permite a injeção de código relativo a uma imagem na página movies.php. É possível verificar seu o resultado.
Através desta vulnerabilidade é podem-se elaborar pequenos trechos de código, por forma a enganar um utilizador, por exemplo, formulários falsos de login, links para download de malware alojados externamente ao sistema entre outras variantes.
A execução externa de páginas é também uma realidade. Foram mencionados neste artigo o uso de formulários de login, porém o uso de iframes é ideal para esses atos. A seguinte imagem comprova o uso de iframes para importação de código externo ao sistema.
Um procedimento muito usado através desta vulnerabilidade é a hiperligação. Por norma, um indivíduo mal intencionado, tenta sempre que o utilizador descarregue da página uma aplicação (malware). Uma das medidas adotadas é o uso de hiperligações externas ao sistema.
De tal forma, um utilizador ao clicar na imagem apresentada é redirecionado para uma página destino (vulneravel.php). Assim que esta página seja acedida no browser da vítima (utilizador), o download automático para o computador é iniciado, e provavelmente enviará o utilizador para a página inicial do sistema. Este é um dos métodos mais perigoso, visto que é possível tomar posse e controlar o computador da vítima por meio de trojans ou ser informado das suas ações através de spywares. Segue abaixo um exemplo de uma string maliciosa por forma a manipular as ações do utilizador.
series.php?p=1&mediaType=series&order=views”></a><a href=http://google.pt><img src=””</a>
Perante isto, cabe ao programador ser cuidadoso aquando da implementação de qualquer sistema, visto estas serem uma das vulnerabilidades mais comuns em sistemas web-based. Lembrar que, todo o input de dados externo (oriundo do utilizador) deve ser sempre verificado de modo a evitar o furto de dados pessoais. Na maior parte, este tipo de vulnerabilidades passa ao lado de qualquer projetista de sistemas, parecendo uma vulnerabilidade inofensiva. Por vezes, existe mesmo a falta de verificação por puro esquecimento. Como foi possível comprovar, é extremamente fácil a injeção de código malicioso e as consequências estão à vista.
2. Ficheiro newfunctions.js
Este é o ficheiro mais crítico do sistema, como chamado na gíria “uma mina de ouro“. Nele é possível encontrar todos os requests ao sistema, e de igual forma, o sistema responde ao pedido. A este tipo de funções chamamos “funções oráculo“. Estas têm como principal caraterística informar e responder sobre as funcionalidades do sistema, para o qual não existe permissão.
Um aspeto curioso no sistema, é que, foi possível executar e efetuar uma análise sem autenticação prévia, o que não deixa de ser preocupante, visto que, como observado acima, é possível através de phishing induzir em erro os utilizadores. (Ver um artigo relacionado no blog:
Continuando, este ficheiro contém informação de quais as páginas que o sistema chama aquando um request. Por exemplo, como foi visto na página inicial, existe um feed e a possibilidade de pesquisar por um determinado filme. Aquando da pesquisa, o sistema chama a função: moviesGenres deste ficheiro. Esta função retorna os dados em forma de listagem, numa outra página externa ao sistema, consequentemente esta página, é incluída na página inicial. Observando a seguinte função:
.
O resultado apresentado nesta página através do link citado acima é o seguinte.
Toda a informação relativa à pesquisa é listada, posteriormente quando a página for incluída na página principal é formatada via CSS (Cascading Style Sheets).
-Listagem dos últimos comentários no sistema
A primeira função oráculo do sistema em análise é a updateComments. Através desta função é possível visualizar todos os comentários às diferentes séries efetuados pelos utilizadores. Desta maneira, é possível obter total controlo de quais os filmes que determinado utilizador visualiza e comenta.
Como é possivel observar, esta função foi comentada, mas deixada no ficheiro. Olhando para a linha “url” é possível a injeção de código e obter a informação relativa ao comentário dos utilizadores. O pior, é não existir a necessidade de autenticação prévia no sistema. Segue uma imagem que apresenta o relativo feed de comentários.
Uma simples solução para precaução seria a implementação de verificação de sessão ativa. Este é um dos grandes problemas dos requests via Javascript, como mostra a seguinte instrução.
updateComments.ajax.php?mediaType=series&mode=1&lcID=1
-Verificar dados de autenticação
Uma das funções mais graves e que expõem a segurança do sistema é a função oráculo apresentada em baixo.
/login.ajax.php?username=teste&pasword=123
A função apresentada tem um retorno esperado de quatro diferentes valores inteiros.
– 0: Para redirecionamento.
– 1: Utilizador não existente na base de dados.
– 2: A password para o seguinte utilizador está incorrecta.
– 3: Indefinido..
Para o exemplo acima, foi verificado que o retorno foi como o apresentado em seguida.
Neste caso, a password para o seguinte utilizador está errada. Esta é uma falha gravíssima do sistema, pois é possível tirar o máximo proveito dela. A possível criação de um bot com o intuito de enviar vários requests ao servidor através de um dicionário de palavras é uma solução mais que natural para derrubar a password de qualquer utilizador. Este tipo de vulnerabilidades é bastante comum e é um indicio para o furto de contas de utilizadores, e também subverter os privilégios do sistema. Por norma, nos sistemas web-based os back-offices sofrem imenso com este tipo de ataques dicionário (/admin/login.php).
-Registo de conta
Uma outra função problemática é a validateRegister(). Esta função está atualmente desativada, mas permite o registo de um novo utilizador na base de dados. A composição do link é o seguinte:
register.ajax.php?username=””&email=””&password=””&rePassword=”” .
No entanto, os administradores do sistema por sua vez, já desativaram esta função. Como curiosidade seu retorno é bastante esclarecedor e encantador. Em seguida é possível observá-lo.
É possivel através do link registar utilizadores, apesar do sistema ter essa opção de registo bloqueada para a comunidade.
Neste ficheiro existem mais umas quantas funções, mas contudo são operações que apenas o utilizador com sessão iniciada poderá consumar. Não são vistas com tanto risco como as mencionadas anteriormente no artigo.
Visualização de Filmes
Como sabido, este sistema permite a visualização dos filmes e séries na sua própria página. Na maioria das vezes, existem queixas dos utilizadores, derivado a interrupções no vídeo. Quando tentam reverter o problema e revê-lo novamente, têm de esperar até que o loading chegue ao sitio onde tinha interrompido.
Uma das soluções que o utilizador pode adotar é o download direto do vídeo e da legenda. Em seguida é apresentada uma imagem representativa da página de visualização de um filme no sistema.
Para proceder a esta operação, apenas é necessário abrir a página relativa às informações do filme. Como é perceptível, o sistema disponibiliza três servidores de download. Independentemente da escolha, a seguinte janela aparecerá no brownser.
Para prosseguir com o download do filme e da respectiva legenda apenas será necessário cumprir dois passos básicos:
No caso da legenda, existe a necessidade de copiar o argumento associado ao elemento m= do URL, neste caso , The_Warriors. Consequentemente, concatená-lo com “SD.str” para que seja possível obter um nome semelhante a <The_WarriorsSD.str>. Por fim, basta aceder ao seguinte link:
subs/The_WarriorsSD.srt .
Finalmente, é possível visualizar o filme num vulgar software para o devido efeito, como por exemplo o BSPlayer. Permanece apenas a necessidade de arrastar o ficheiro (em download) do filme e a legenda para cima do reprodutor para que a reprodução inicie.
Relativamente ao artigo, estes foram os tópicos de análise. Esta última parte serviu sobretudo para auxiliar o utilizador comum aquando a visualização de filmes.
A respeito do conteúdo do artigo, como mencionado, o Wareztuga não contém qualquer informação de contacto visível no sistema. Derivado da análise do sistema, foi-nos possível enviar um e-mail de forma a notificar os administradores do sistema sobre a publicação deste artigo no presente blog.
É necessário deixar claro que, o presente artigo visa esclarecer e expor as falhas de segurança do sistema e não incentivar à prática de maus hábitos.
Boa Continuação!
Um excelente artigo. Parabéns!
Olá, obrigado!
muito bom.
Podes-me so esclarecer uma duvida, que é como é possivel por uma imagem e redimensionar para outra pagina. Consegues acesso ao código e editas ?
Excelente Artigo! Muito bem escrito!
A falha de registo de conta já foi corrigida?
Caro Artur Mendes, obrigado pela sua opinião.
Ao que aparenta, essa falha de registo já foi corrigida.