Parce que… c’est l’épisode 0x342!

Shameless plug

Description

Cette description a été faite à l’aide de GLM 5.3 Flash, à partir de la transcription qui a été effectuée par ElevenLabs Scribev2. Aucune vérification humaine n’a été faite. Si vous découvrez des erreurs ou des inexactitudes, vous pouvez m’en faire part afin que je procède aux modifications appropriées.

Voici le résumé en markdown, prêt à être inclus dans votre fichier à partir du niveau 3.

Le parcours de l’invité

Vincent Herbulot est pentester et chercheur en sécurité chez Synactive, où il exerce ce métier depuis un peu plus de dix ans, avec une préférence marquée pour la partie web. Il dispense également deux formations, l’une orientée boîte blanche et l’autre boîte noire, afin d’explorer ce qu’il est possible de faire avec ou sans accès aux sources. Il est venu présenter Dicosaurus, un outil consacré au web fuzzing et à la gestion des word lists.

Le fuzzing dans le pentest web

Le fuzzing constitue la phase de découverte initiale d’une mission. L’auditeur se sert d’un fuzzer et d’une word list pour envoyer de nombreuses requêtes HTTP vers un serveur web, puis analyse les réponses pour déterminer quels points d’entrée sont accessibles et intéressants. Cette étape conditionne la suite de l’intrusion, notamment en Red Team où une entrée critique peut ouvrir l’accès au réseau interne.

Les limites des word lists existantes

La qualité d’une word list détermine directement la capacité à découvrir des entrées critiques. De nouvelles vulnérabilités émergent chaque jour et l’absence d’une entrée pertinente peut faire échouer une intrusion. Vincent a recensé plusieurs défauts récurrents. Les entrées manquantes constituent le problème le plus évident. L’organisation pose ensuite souci, les word lists allant de cent à un million d’entrées, ce qui rend impraticables les listes volumineuses sur des périmètres étendus, d’où l’importance de pouvoir adapter la taille au contexte. Le tri alphabétique fréquent ne reflète pas la réalité du pentest, car les entrées critiques devraient figurer en tête. Une entrée d’exécution de code distante commençant par la lettre z dans une liste d’un million d’entrées serait testée en tout dernier, alors que le temps manque souvent pour tout dérouler. Certaines listes contiennent aussi des données parasites issues d’une génération trop automatique. Enfin, des endpoints dangereux comme shutdown, reboot ou delete data y figurent sans distinction, ce qui pose problème en Red Team où éteindre les machines d’un client n’est pas souhaitable.

La genèse du projet

Le déclic est survenu lors d’un Red Team où l’équipe avait manqué le Debug Toolbar, un débogueur du framework Pyramid qui expose un interpréteur Python et permet une exécution de code distante. Un collègue l’a découverte grâce à une word list personnalisée, alors que cette entrée était absente de la plupart des word lists publiques utilisées habituellement. Vincent a alors décidé de maintenir ses propres word lists et de développer un outil facilitant cette tâche.

L’enrichissement par métadonnées

L’approche retenue repose sur l’idée qu’avec suffisamment de métadonnées associées à chaque entrée, le filtrage, le tri et la génération deviennent possibles. Chaque entrée se voit attribuer une criticité fondée sur ce qui a été observé en exploitation, un count correspondant au nombre de fois où elle a été vue, une catégorie la reliant à de l’exécution de code, à des interfaces d’administration connues ou à des applications connues, des tags modulaires extensibles par chacun, et des références documentaires réservées aux entrées de criticité haute et moyenne afin de retrouver facilement le contexte d’une découverte.

Tri, filtrage et génération

L’outil combine des fichiers pourvus de métadonnées et des fichiers standards afin de produire des word lists hybrides. Les entrées qualifiées montent en tête tandis que les entrées non qualifiées, dites unranked, figurent en bas, et une word list jugée pertinente peut recevoir une criticité medium pour apparaître au milieu. Par défaut, le tri s’opère par criticité puis par count, une entrée vue plus souvent étant remontée au sein de sa criticité. La génération constitue la sortie initiale attendue, permettant de produire des word lists de tailles et de contextes variés, limitées au PHP, aux fichiers ou aux dossiers, ou restreintes aux deux cents entrées les plus critiques.

La constitution et la maintenance des données

Les entrées proviennent de sources publiques pertinentes comme HackerOne, GitHub Advisory, Exploit DB et les templates Nuclei, qui regroupent fréquemment des points d’entrée impactants. L’attribution des métadonnées repose en grande partie sur un travail manuel, seule méthode garantissant une qualité fine et évitant les faux positifs lors du triage des vulnérabilités. La word list compte environ 23 000 entrées dont 7 000 revues manuellement, un effort fastidieux mais effectué une seule fois. L’outil permet aussi un traitement automatique en appliquant des tags ou des criticités à une word list ingérée, même si l’auteur a préféré fournir des word lists intégrées revues manuellement, par crainte d’accumuler des données insuffisamment fiables.

Un projet public et collaboratif

Vincent maintient seul le projet pour l’instant, avec des contributions internes en parallèle. L’outil extrait depuis des fichiers de résultats de scan comme ceux de Patator ou ffuf les occurrences de vulnérabilités afin d’alimenter le count. Les retours des équipes de Red Team et de pentest apportent de nouvelles entrées, sans données clientes, principalement des logiciels publics ou privés indépendants des clients. Le projet est devenu public et reste ouvert aux contributions sous réserve de validation. L’objectif consiste à élever la manière d’utiliser et de maintenir les word lists, en sensibilisant la communauté au fait que les word lists publiques ne sont pas idéales. Chaque pentester ayant ses habitudes, l’outil se veut modulaire pour s’adapter aux pratiques de chacun, la valeur résidant dans la capacité à générer et maintenir des entrées à sa manière.

La vérification des word lists

Une fonctionnalité dédiée permet de comparer sa base de données avec d’autres word lists. Il est ainsi possible d’identifier les entrées critiques de sa base absentes de listes comme celles de DirSearch ou ffuf, ou inversement d’analyser une word list externe pour repérer ce qui manque à sa base, ce qui produit des fichiers facilitant la revue des entrées manquantes.

La démonstration

La démonstration montrait en une à deux minutes une session de fuzzing sur une cible vulnérable. Une word list était générée avec Dicosaurus puis utilisée sur la cible, permettant de découvrir rapidement deux points d’entrée intéressants placés haut dans la liste du fait de leur criticité. Les métadonnées associées à ces endpoints étaient ensuite consultées via l’outil, le reste de la présentation portant sur l’exploitation des vulnérabilités découvertes, à titre d’illustration ludique.

Notes

Contributeurs

Nicolas-Loïc Fortin Vincent Herbulot
Nicolas-Loïc Fortin LinkedIn Vincent Herbulot LinkedIn Twitter

Crédits

Télécharger .m4a (23.6M) Télécharger .mp3 (18.2M)

Tags: fuzzing, pentest, web