Zeecka zeecka

// article

Web wordlists en 2021

Benchmark des web wordlists disponibles en 2021

Wordlists de contenu web

Résumé

Note : L’article original a été publié sur le blog de mon entreprise https://blog.sec-it.fr/.

La découverte du périmètre est une étape importante lors d’un pentest web et peut, dans certains cas, mener à la compromission d’un site web. Afin de réaliser cette reconnaissance, plusieurs outils sont disponibles, notamment les wordlists de contenu web pour le web fuzzing :

NomPremière versionDernière mise à jourTaille max (lignes)
SecLists2012/02/202021/02/121.273.833 (directory-list-2.3-big.txt)
Assetnote wordlists2020/11/162021/01/284.319.406 (httparchive_js_2020_11_18.txt)
Dirb wordlists2015/06/162015/06/1620.469 (big.txt)
DirBuster wordlists2013/05/012013/05/01220.560 (directory-list-2.3-medium.txt)
Dirsearch dicc.txt2013/05/222021/02/109.021 (dicc.txt)
Wfuzz wordlists2014/10/232019/03/1445.459 (megabeast.txt)
Wordlistctl (Bonus)2018/10/282018/11/02N/A

* cet article a été rédigé en février 2021

Notez que cet article inclut uniquement les wordlists de routes, fichiers et dossiers. Par conséquent, les wordlists qui contiennent des mots de passe telles que rockyou.txt ne seront pas abordées.

SecLists

SecLists est une collection de plusieurs types de wordlists, incluant des noms d’utilisateur, des mots de passe, des URLs, des patterns de données sensibles, des payloads de fuzzing, des web shells, et bien plus encore.

SecLists est le compagnon du testeur de sécurité. […] L’objectif est de permettre à un testeur de sécurité de récupérer ce dépôt sur une nouvelle machine de test et d’avoir accès à chaque type de liste qui pourrait être nécessaire.

Le dépôt est activement maintenu et son dernier commit date de moins de deux semaines. Le package est fourni par la plupart des distributions Linux de pentest telles que Black Arch et Kali Linux.

Les wordlists abordées se trouvent dans Discovery/Web-Content/. On peut remarquer qu’il y a beaucoup de wordlists disponibles (121 dans le dossier principal). Certaines sont spécifiques à une technologie donnée (CGIs.txt, coldfusion.txt, oracle.txt …), d’autres sont spécifiques à une langue donnée (common-and-french.txt, common-and-dutch.txt …). La principale famille de wordlists présente dans SecList est la famille « RAFT Word Lists ».

Les wordlists RAFT ont été générées à partir des robots.txt de 1,7 million de sites web et étaient initialement fournies par RAFT Tool en 2011. Dans cette famille, les wordlists sont réparties comme suit :

  • 4 familles (directories, extensions, files et words)
  • 3 tailles par famille (large, medium et small)
  • 2 options de casse (normal et lowercase)
NomTaille (lignes) largeTaille (lignes) mediumTaille (lignes) small
raft-*-directories.txt62.28330.00020.116
raft-*-directories-lowercase.txt56.16326.58417.770
raft-*-files.txt37.04217.12811.424
raft-*-files-lowercase.txt35.32416.24310.848
raft-*-extensions.txt2.4491.289963
raft-*-extensions-lowercase.txt2.3661.233914
raft-*-words.txt119.60063.08743.003
raft-*-words-lowercase.txt107.98256.29338.267

En regardant raft-*-files.txt, on obtient la répartition d’extensions suivante :

HistogrammeCamembert
Répartition des fichiers Raft largeRépartition des fichiers Raft large
Répartition des fichiers Raft mediumRépartition des fichiers Raft medium
Répartition des fichiers Raft smallRépartition des fichiers Raft small

SecLists inclut également les wordlists fournies avec dirbuster et dirb, abordées dans la suite de cet article.

Assetnote wordlists

Assetnote est une entreprise qui fournit des outils et services de sécurité permettant de mesurer l’exposition aux attaques externes. L’entreprise fournit également un dépôt nommé Assetnote Wordlist.

Ces wordlists sont générées mensuellement à l’aide des datasets Google BigQuery avec leur client GO nommé commonspeak2, ce qui aboutit à des wordlists de content discovery et de sous-domaines.

Comme ces datasets sont mis à jour régulièrement, les wordlists générées via Commonspeak2 reflètent les technologies actuellement utilisées sur le web.

Assetnote Wordlist

Les wordlists sont générées par technologie, pour cet article nous nous concentrerons sur les directories, les API routes et les langages PHP, ASP.NET, JSP/JSPA.

Note : Les wordlists de janvier 2021 semblant moins complètes que les précédentes, et celles de février 2021 n’étant pas disponibles pour le moment, nous nous concentrerons sur les wordlists de novembre 2020.

NomTechnologieTaille (lignes)
httparchive_directories_1m_2020_11_18.txtDirectories1.000.000
httparchive_apiroutes_2020_11_20.txtAPI routes953.011
httparchive_php_2020_11_18.txtPHP74.887
httparchive_aspx_asp_cfm_svc_ashx_asmx_2020_11_18.txtASP .NET63.200
httparchive_jsp_jspa_do_action_2020_11_18.txtJSP10.506
Assetnote DirectoriesAssetnote API routes
Assetnote DirectoriesAssetnote API routes

Note : /, - et _ sont considérés comme des wildcards dans le graphique précédent.

Dirb wordlists

Dirb est un outil de web discovery déjà abordé dans un article précédent. L’outil est fourni avec plusieurs wordlists, dont les plus communes :

NomTaille (lignes)
common.txt (wordlist par défaut pour dirb)4.614
big.txt20.469
small.txt959
Charsets de la famille dirb. 
big.txtcommon.txt
small.txt

Ces wordlists n’ont aucune extension et seulement 2 % des mots contiennent des majuscules. On peut également noter qu’il y a plus de charsets « other » dans common.txt que dans big.txt.

DirBuster wordlists

DirBuster est un outil de web discovery qui a également été abordé dans un article précédent. L’outil est fourni avec plusieurs wordlists, dont la famille de wordlists directory-list-2.3.

NomTaille (lignes)
directory-list-2.3-big.txt1.273.833
directory-list-2.3-medium.txt220.560
directory-list-2.3-small.txt87.664

Certaines versions packagées peuvent ne pas inclure directory-list-2.3-big.txt.

Comme les wordlists de dirb, directory-list-2.3 n’inclut aucune extension.

Charsets de la famille directory-list-2.3. 
directory-list-2.3-big.txtdirectory-list-2.3-medium.txt
directory-list-2.3-small.txt

Note : /, - et _ sont considérés comme des wildcards dans le graphique précédent.

Dirsearch dicc.txt

dicc.txt est une wordlist fournie avec l’outil dirsearch. Cette wordlist a la particularité de fournir l’extension variable %EXT%. Par conséquent, la wordlist doit être utilisée avec des outils qui supportent le format %EXT% (voir l’article sur les outils de web discovery). La wordlist compte un total de 9021 lignes réparties comme suit :

dicc.txt 
dicc.txtdicc.txt

On peut noter qu’il y a « seulement » 500 mots contenant l’extension %EXT%.

Wfuzz wordlists

L’outil Wfuzz est fourni avec de nombreuses wordlists. Certaines, dans le répertoire « general », sont dédiées à l’énumération de répertoires et de fichiers. C’est le cas de megabeast.txt, big.txt, medium.txt et common.txt. Aucune de ces wordlists ne contient de mots avec des extensions. Elles sont réparties comme suit :

Charsets de la famille wfuzz. 
megabeast.txtbig.txt
medium.txtcommon.txt

Wordlistctl (Bonus)

Dans certains cas, un auditeur peut rechercher une wordlist spécifique. Wordlistctl est un outil conçu pour récupérer, installer, mettre à jour et rechercher une wordlist donnée. Ce script python propose plus de 6400 wordlists et est maintenu par la distribution BlackArch Linux.

$ wordlistctl search wordpress

--==[ wordlistctl by blackarch.org ]==--

    > wordpress (29.20 Kb)
    > urls-wordpress-3 (36.62 Kb)
    > wordpress-attacks-july2014 (88.00 B)
    > wordpress_usernames (541.57 Mb)
    > wordpress_attacks_july2014 (88 B)

$ wordlistctl fetch -l urls-wordpress-3
--==[ wordlistctl by blackarch.org ]==--

[*] downloading urls-wordpress-3.3.1.txt to /usr/share/wordlists/discovery/urls-wordpress-3.3.1.txt.part
[+] downloading urls-wordpress-3.3.1.txt completed

Tableau comparatif

Sans plus attendre, voici un tableau comparatif des différentes wordlists abordées dans cet article. Les cases colorées représentent une forte corrélation entre wordlists. Pour comprendre la matrice, il faut lire : "N% of the wordlist at line Y is contained in wordlist at column X".

Par exemple : 87 % de la wordlist n°17 (dirb - small) est contenue dans la wordlist n°0 (seclists - raft-large-files).

Les sources utilisées pour générer ce graphique sont disponibles sur ce dépôt : sec-it/WL-Comparison.

Une version interactive du graphique est disponible en ligne.

À propos

L’article original a été publié sur le blog de mon entreprise https://blog.sec-it.fr/.

Vous pouvez retrouver SEC-IT à l’adresse https://www.sec-it.fr.

Une partie de ce contenu est sous licence MIT / © 2021 SEC-IT.