
Coletor de Informações WebApp
wig é uma ferramenta de coleta de informações de aplicações web, que pode identificar numerosos Sistemas de Gerenciamento de Conteúdo (CMS) e outras aplicações administrativas.
A impressão digital (fingerprinting) de aplicações é baseada em checksums e correspondência de strings de arquivos conhecidos para diferentes versões de CMSes. Isso resulta em uma pontuação calculada para cada CMS detectado e suas versões. Cada CMS detectado é exibido juntamente com a(s) versão(ões) mais provável(is). O cálculo da pontuação é baseado em pesos e na quantidade de "acertos" para um checksum específico.
wig também tenta adivinhar o sistema operacional no servidor com base nos cabeçalhos 'server' e 'x-powered-by'. Um banco de dados contendo valores de cabeçalho conhecidos para diferentes sistemas operacionais está incluído no wig, o que permite que o wig adivinhe versões do Microsoft Windows e distribuições e versões do Linux.
wig é construído com Python 3 e, portanto, não é compatível com Python 2.
wig pode ser executado a partir da linha de comando ou instalado com distuils.
$ python3 wig.py example.com
Instale com
$ python3 setup.py install
e então o wig pode ser importado de qualquer localização da seguinte forma:
>>>> from wig.wig import wig
>>>> w = wig(url='example.com')
>>>> w.run()
>>>> results = w.get_results()
O comportamento padrão do wig é identificar um CMS e sair após a detecção da versão do CMS. Isso é feito para limitar a quantidade de tráfego enviado ao servidor alvo. Esse comportamento pode ser sobrescrito definindo a flag '-a', caso em que o wig testará todas as impressões digitais conhecidas. Como algumas configurações de aplicações não usam a localização padrão para arquivos e recursos, é possível fazer com que o wig busque todos os recursos estáticos que encontrar durante sua varredura. Isso é feito com a opção '-c'. A opção '-m' testa todas as impressões digitais contra todas as URLs buscadas, o que é útil se a localização padrão tiver sido alterada.
usage: wig.py [-h] [-l INPUT_FILE] [-q] [-n STOP_AFTER] [-a] [-m] [-u] [-d]
[-t THREADS] [--no_cache_load] [--no_cache_save] [-N]
[--verbosity] [--proxy PROXY] [-w OUTPUT_FILE]
[url]
WebApp Information Gatherer
positional arguments:
url The url to scan e.g. http://example.com
optional arguments:
-h, --help show this help message and exit
-l INPUT_FILE File with urls, one per line.
-q Set wig to not prompt for user input during run
-n STOP_AFTER Stop after this amount of CMSs have been detected. Default:
1
-a Do not stop after the first CMS is detected
-m Try harder to find a match without making more requests
-u User-agent to use in the requests
-d Disable the search for subdomains
-t THREADS Number of threads to use
--no_cache_load Do not load cached responses
--no_cache_save Do not save the cache for later use
-N Shortcut for --no_cache_load and --no_cache_save
--verbosity, -v Increase verbosity. Use multiple times for more info
--proxy PROXY Tunnel through a proxy (format: localhost:8080)
-w OUTPUT_FILE File to dump results into (JSON)
$ python3 wig.py example.com
wig - WebApp Information Gatherer