
Collecteur d'informations pour applications web
wig est un outil de collecte d'informations sur les applications Web, capable d'identifier de nombreux systèmes de gestion de contenu (CMS) et autres applications administratives.
La reconnaissance d'applications repose sur des sommes de contrôle et la correspondance de chaînes de fichiers connus pour différentes versions de CMS. Il en résulte un score calculé pour chaque CMS détecté et ses versions. Chaque CMS détecté est affiché avec la ou les versions les plus probables. Le calcul du score est basé sur des pondérations et le nombre de « hits » pour une somme de contrôle donnée.
wig tente également de deviner le système d'exploitation du serveur en se basant sur les en-têtes « server » et « x-powered-by ». Une base de données contenant les valeurs d'en-têtes connues pour différents systèmes d'exploitation est incluse dans wig, ce qui permet à wig de deviner les versions de Microsoft Windows ainsi que les distributions et versions Linux.
wig est construit avec Python 3, et n'est donc pas compatible avec Python 2.
wig peut être exécuté depuis la ligne de commande ou installé avec distutils.
$ python3 wig.py example.com
Installez avec
$ python3 setup.py install
puis wig peut être importé depuis n'importe quel emplacement comme ceci :
>>>> from wig.wig import wig
>>>> w = wig(url='example.com')
>>>> w.run()
>>>> results = w.get_results()
Le comportement par défaut de wig est d'identifier un CMS, puis de se terminer après la détection de sa version. Cela permet de limiter le trafic envoyé au serveur cible. Ce comportement peut être outrepassé en activant l'option '-a', auquel cas wig testera toutes les empreintes connues. Comme certaines configurations d'applications n'utilisent pas l'emplacement par défaut des fichiers et ressources, il est possible de demander à wig de récupérer toutes les ressources statiques rencontrées lors de son analyse. Cela se fait avec l'option '-c'. L'option '-m' teste toutes les empreintes sur toutes les URL récupérées, ce qui est utile si l'emplacement par défaut a été modifié.
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