Vulnerabilidade em roteadores Asus e TP-Link ( CSRF)

23 de mar de 2014 - Paulo Dias


Oi, tudo bem? Nesse artigo vou escrever sobre uma vulnerabilidade encontrada em roteadores Asus e TP-Link. Essa vulnerabilidade permite que esses aparelhos sejam atacados por uma técnica conhecida por cross-site request forgery (CSRF).

O CSRF é um tipo de ataque onde comandos são executados em um sistema web vulnerável por um usuário legitimo sem que ele perceba, ou seja, de forma não autorizada. Essa técnica geralmente faz uso de requisições do tipo GET, onde o usuário clica em um link que dispara um comando não desejado. Por isso, esse ataque também é conhecido como one-click attack.

Fiquei sabendo que alguns roteadores estariam vulneráveis a esse tipo de ataque através do artigo publicado por Bogdan Calin no site https://www.acunetix.com. Apesar desse artigo ter sido publicado no final do ano de 2012, essa vulnerabilidade provavelmente não foi corrigida, tendo em vista que raramente é feita a atualização do firmware desses aparelhos (eu não me lembro de ter atualizado o roteador da minha casa, e você?).

A vulnerabilidade que Bogdan demonstrou no seu artigo permite realizar um ataque que pode alterar os servidores DNS utilizados pelo roteador da rede interna de uma vítima. O ataque ocorre através da interface de controle web do roteador vulnerável, que permite que os servidores de DNS sejam alterados através de uma requisição do tipo GET.

Obviamente, essa interface de controle exige dados de autenticação para que a requisição seja bem sucedida, mas infelizmente a maioria dos usuários não alteram os dados de login e senha fornecidos pelos fabricantes desses aparelhos. Isso permite que seja montada uma URL de ataque parecida com essa:

http://admin:admin@192.168.0.1/start_apply.htm?wan_dns1_x=6.6.6.6&wan_dns2_x=6.6.6.6

Obs.: A URL pode ser diferente dependendo do modelo do roteador.

Dessa forma, é necessário apenas que a vítima clique em um link contendo a URL de ataque para que tenha seu servidor de DNS alterado para um que esteja sobre o controle do atacante. Entre outras possibilidades, isso permitiria redirecionar os clientes do roteador afetado para páginas falsas( fakes ) e, apartir dessas, coletar dados de autenticação das vítimas.

É claro que dependendo da vítima, o link de ataque poderia ser reconhecido como algo malicioso e portanto talvez não fosse clicado, mas Bogdan utilizou os princípios do CSRF para tornar a requisição da URL de ataque independente do acionamento(clique) da vítima. Basicamente, ele inseriu a URL de ataque na propriedade src de uma imagem, dessa forma, o próprio navegador faz a requisição sem que a vítima perceba.

Isso além de aumentar as chances de que a requisição seja realizada, também permitiu aumentar as chances de sucesso do ataque, pois foi possível realizar várias requisições diferentes quase que simultaneamente, podendo assim, fornecer diversos dados de login, na esperança de que algum esteja correto e altere o roteador da vítima. Segue um exemplo do que Bogdan poderia ter feito:

 
img src="http://admin:admin@192.168.0.1/start_apply.htm?wan_dns1_x=6.6.6.6&wan_dns2_x=6.6.6.6" /
img src="http://admin:qwerty@192.168.0.1/start_apply.htm?wan_dns1_x=6.6.6.6&wan_dns2_x=6.6.6.6" /
img src="http://admin:123123@192.168.0.1/start_apply.htm?wan_dns1_x=6.6.6.6&wan_dns2_x=6.6.6.6" /
img src="http://admin:12345678@192.168.0.1/start_apply.htm?wan_dns1_x=6.6.6.6&wan_dns2_x=6.6.6.6" /
img src="http://admin:master@192.168.0.1/start_apply.htm?wan_dns1_x=6.6.6.6&wan_dns2_x=6.6.6.6" /
img src="http://admin:password@192.168.0.1/start_apply.htm?wan_dns1_x=6.6.6.6&wan_dns2_x=6.6.6.6" /

Bom pessoal, vou terminar por aqui, espero que esse artigo seja um alerta aos desavisados, e que todos percebam a necessidade uma senha forte, afinal esse ataque pode ser evitado apenas mudando a senha do roteador para algo mais dficil de advinhar... segue alguns links sobre esse tipo de ataque:

https://www.acunetix.com/blog/web-security-zone/the-email-that-hacks-you/
http://java.sapao.net/Home/evitar-ataques-de-csrf
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/

Paulo Dias

Graduado no curso tecnólogo em análise e desenvolvimento de sistemas. Defensor do Software Livre e da democratização da informação. Possui as certificações Linux LPIC-1 e Java OCA. Atualmente exerce a função de coordenador técnico na área de telecomunicações.

Siga-me no Twitter