
Un plugin Burp Java qui effectue un clustering de texte sur les réponses afin d'identifier les valeurs aberrantes/groupes en fonction du contenu réel des réponses du serveur, par exemple à partir d'une exécution d'Intruder.
Une extension Burp Suite pour regrouper les réponses HTTP afin d'identifier les valeurs aberrantes.
Voici un plugin que j'envisage de développer depuis de nombreuses années, simplement parce que je suis modérément agacé par la façon dont nous analysons les résultats des attaques de fuzzing dans Burp Intruder. Nous cherchons généralement des changements dans les réponses du serveur lors de nos attaques de fuzzing. Et nous recherchons ces différences en examinant les codes de statut, le temps de réponse et la taille des réponses. Tous ces éléments sont des mesures indirectes du contenu de la réponse. Bien sûr, en tant que pentesters, nous n'avons pas le temps de lire le contenu de milliers de serveurs pour rechercher des différences dans le contenu des réponses. Mais nous pouvons certainement confier cette tâche à des algorithmes.
C'est là que ce plugin entre en jeu. Il utilise des techniques de clustering de texte pour analyser le contenu des réponses et les regrouper en clusters en fonction de leur similarité. Cela vous offre une autre façon de visualiser les résultats de vos attaques de fuzzing Intruder et d'identifier rapidement les réponses du serveur qui sont différentes.
Colonel Clustered propose deux algorithmes différents pour effectuer le clustering des réponses. L'algorithme par défaut est relativement rapide, avec un algorithme optionnel d'analyse approfondie qui excelle dans la détection des valeurs aberrantes, mais qui ne passe pas bien à l'échelle. Enfin, aucun des deux ne passe bien à l'échelle, j'hésiterais à soumettre 50 000 réponses à ce plugin. L'algorithme rapide/par défaut a une complexité O(n^2), tandis que l'algorithme d'analyse approfondie est en O(n^3). Gardez donc cela à l'esprit lorsque vous lui envoyez des résultats Intruder à traiter.
Tokenisation sensible au contenu : L'extension inspecte d'abord l'en-tête Content-Type de chaque réponse pour appliquer la stratégie de tokenisation la plus intelligente :
Pré-regroupement : Pour rester rapide même avec des milliers de réponses, l'extension effectue une seule passe pour regrouper toutes les réponses parfaitement identiques. Elle calcule un hash de l'ensemble de tokens de chaque réponse et regroupe tous les éléments partageant le même hash. Cela signifie que l'algorithme de clustering coûteux ne s'exécute que sur l'ensemble beaucoup plus restreint des corps de réponse uniques.
Algorithmes de clustering doubles : Colonel Clustered propose deux algorithmes de clustering distincts :
Fast Scan (par défaut) : Un algorithme basé sur DBSCAN à hautes performances s'exécute automatiquement lorsque vous envoyez plusieurs requêtes/réponses à l'extension.
Deep Analysis (déclenchement manuel) : L'algorithme original de clustering hiérarchique, plus gourmand en calcul, est disponible via un bouton « Deep Analysis ». Cette option est conçue pour les scénarios nécessitant une perspective de clustering plus granulaire et potentiellement différente, en utilisant le lien moyen (Average Linkage) pour une meilleure cohésion des clusters.
Consolidation des valeurs aberrantes : Après le clustering, tout groupe résultant ne contenant qu'un seul membre unique est considéré comme une valeur aberrante. Toutes ces valeurs aberrantes sont ensuite consolidées dans un seul groupe pratique « Outliers » dans l'interface.
Ces deux algorithmes devraient offrir un moyen simple d'identifier automatiquement les réponses du serveur qui diffèrent par leur contenu, même lorsque la taille de la réponse est une mesure peu fiable des différences entre réponses.
Charger l'extension :
Envoyer des réponses pour analyse :
Effectuer une Deep Analysis (facultatif) :
Analyser les résultats dans l'interface à quatre volets :
Request/Response Pair : L'index d'origine de l'élément.Status Code : Le code de statut de la réponse HTTP.Length : La longueur du corps de la réponse en octets.Content-Type : L'en-tête Content-Type de la réponse.