Shocker
Uma ferramenta para encontrar e explorar servidores vulneráveis ao Shellshock
Ref: https://en.wikipedia.org/wiki/Shellshock_(software_bug)
Lançado como código aberto pela NCC Group Plc - https://www.nccgroup.trust/
Desenvolvido por:
- Tom Watson, tom [dot] watson [at] nccgroup [dot] trust
https://github.com/nccgroup/shocker
Lançado sob AGPL, veja LICENSE para mais informações
Texto de Ajuda
uso:
shocker.py
-h, --help mostra esta mensagem de ajuda e sai
--Host HOST, -H HOST
Um nome de host ou endereço IP alvo
--file FILE, -f FILE Arquivo contendo uma lista de alvos
--port PORT, -p PORT A porta alvo (padrão=80)
--command COMMAND Comando a executar (padrão=/bin/uname -a)
--cgi CGI, -c CGI CGI único para verificar (ex.: /cgi-bin/test.cgi)
--proxy PROXY UM POUCO QUEBRADO AGORA Proxy a ser usado no formato
'ip:porta'
--ssl, -s Usar SSL (padrão=False)
--threads THREADS, -t THREADS
Número máximo de threads (padrão=10, max=100)
--verbose, -v Ser verboso na saída
Exemplos de Uso
./shocker.py -H 127.0.0.1 --command "/bin/cat /etc/passwd" -c /cgi-bin/test.cgi
Escaneia http://127.0.0.1/cgi-bin/test.cgi e, se encontrado, tenta executar cat
/etc/passwd
./shocker.py -H www.example.com -p 8001 -s
Escaneia www.example.com na porta 8001 usando SSL para todos os scripts em cgi_list e
tenta o exploit padrão para qualquer um encontrado
./shocker.py -f ./hostlist
Escaneia todos os hosts listados no arquivo ./hostlist com as opções padrão
Dependências
Python 2.7+
Histórico de Alterações
Alterações na versão 1.1 (Junho de 2018)
- Adicionada alguma funcionalidade adicional de depuração e texto de ajuda corrigido
Alterações na versão 1.0 (Março de 2016)
- Alguns scripts adicionais contribuídos e atualizações em alguns comentários, URLs e detalhes de contato
Alterações na versão 0.72 (Dezembro de 2014)
- Pequenas correções na lógica e erros de digitação
Alterações na versão 0.71 (Dezembro de 2014)
- Adicionado timeout a requisições urllib2.urlopen usando um 'TIMEOUT' global
Alterações na versão 0.7 (Novembro de 2014)
- Adicionado 'pseudo console' interativo para exploração adicional de um servidor vulnerável escolhido
- Tentado corrigir problemas de buffer de saída encapsulando sys.stdout em uma classe que limpa a cada chamada a write
- Adicionado um indicador de progresso para uso em tarefas demoradas para tranquilizar usuários não verbosos
Alterações na versão 0.6 (Outubro de 2014)
- Impedindo que códigos de retorno diferentes de 200 sejam considerados sucessos
- Adicionada capacidade de especificar múltiplos alvos em um arquivo
- Movida a lista 'cgi_list' de scripts a tentar explorar para um arquivo
- Corrigidos alguns problemas de formatação da saída
- Corrigida a regex de hostname/IP válido para permitir hostnames de uma única palavra
Alterações na versão 0.5 (Outubro de 2014)
- Adicionada capacidade de especificar um único script para mirar em vez de usar cgi_list
- Introduzido um timeout em operações de socket para host_check
- Adicionados alguns exemplos de uso no cabeçalho do script
- Adicionado um epílogo ao texto de ajuda indicando a presença de exemplos
Alterações na versão 0.4 (Outubro de 2014)
- Introduzido um limite de contagem de threads padrão de 10
- Removido suporte a cores até que eu possa descobrir como fazer funcionar igualmente bem no Windows e *nix
- Correções ortográficas
- cgi_list mais abrangente
- Remove success_flag da saída
Pré 0.4 (Outubro de 2014)
A FAZER
- Identificar e responder corretamente a resposta HTTP/200 - falsos positivos - Baixa prioridade/trabalhoso
- Implementar curses para sistemas *nix - Para toda a aplicação ou apenas terminal pseudo? - Baixa prioridade/enfeite
- Paralelizar a verificação inicial do host agora que múltiplos alvos são suportados (e isso pode tornar essa parte demorada)
- Mudar verbose para valor inteiro - quieto, normal, verboso, debug?
- Adicionar opção para pular verificações iniciais do host em prol da velocidade?
- Adicionar um resumo dos resultados antes de sair
- Salvar resultados em um arquivo? Formato?
- Eventualmente a ideia é incluir múltiplos vetores possíveis, mas atualmente apenas um é verificado.
- Adicionar suporte a cores no Windows e *nix - Baixa prioridade/enfeite
- Adicionar timeout no modo interativo para comandos que não retornam, ex.: /bin/cat /dev/zero
- Embelezar - Baixa prioridade/enfeite (obviamente)
- Adicionar suporte para escanear e explorar SSH e SMTP? https://isc.sans.edu/diary/Shellshock+via+SMTP/18879
- Adicionar suporte a proxy SOCKS, potencialmente usando https://github.com/rpicard/socksonsocks/ de Rober Picard
- Outras coisas. Provavelmente.
Agradecimentos a...
Anthony Caulfield @ NCC pelo tempo e esforço revisando versões iniciais
Brendan Coles @ NCC pelo seu apoio e contribuições