30 de out de 2014

Vulnerabilidade no Wget. Demonstração e bugfix.

E aí galera, beleza? Hoje vou falar sobre uma falha crítica presente no wget. Pra quem não sabe, o Wget é uma ferramenta open-source que vem instalada por padrão na maioria das distribuições Linux. Essa ferramenta tem como objetivo fazer o download de arquivos da web usando HTTP, HTTPS e FTP. O desenvolvedor Vasyl Kaigorodov escreveu o seguinte comentário na Red Hat Bugzilla:

"It was found that wget was susceptible to a symlink attack which could create arbitrary files, directories or symbolic links and set their permissions when retrieving a directory recursively through FTP."

O bug report pode ser encontrado no seguinte link:
https://bugzilla.redhat.com/show_bug.cgi?id=1139181


Fiz um vídeo para demonstrar uma forma de explorar a falha. Vou explicar como fiz, e em seguida coloco o vídeo. 

O exploit está disponível no github do Metasploit. Segue o link:


Primeiramente eu baixei o exploit no diretório /opt/metasploit/apps/pro/msf3/modules/auxiliary/server e salvei com o nome wget_symlink_file_write.rb

Depois eu iniciei o msfconsole, selecionei o exploit e defini as configurações necessárias.
O ataque consiste em reescrever o arquivo .bashrc do usuário root. Esse arquivo será executado sempre que um usuário comum fizer login como root, utilizando o comando sudo su por exemplo.
O arquivo foi reescrito com o comando necessário para fazer o reverse shell. Depois disso, basta deixar o netcat escutando na porta desejada e esperar o usuário logar como root novamente. Isso nos dará a shell que queremos. 

Segue o vídeo com a demonstração.




A vulnerabilidade foi corrigida. Basta instalar a versão mais nova do wget.
Seguem os passos:

1 - Baixe o seguinte arquivo:
http://ftp.gnu.org/gnu/wget/wget-1.16.tar.xz

2 - Execute os seguintes comandos como root:


tar -xf wget-1.16.tar.xz 
cd wget-1.16
./configure --prefix=/usr
make
make install


Terminada a instalação você pode verificar a versão nova com o comando:
wget --version | head -n 1 -

A saída deve ser algo como "GNU Wget 1.16 construído em linux-gnu."



Espero que vocês tenham gostado. Até a próxima

Nenhum comentário:

Postar um comentário