
Extension ajoute un nouvel onglet dans Burp Suite appelé Extractor
Téléchargez la bibliothèque GSON de Google depuis Maven
(http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar)
wget http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar
Dans l'onglet Extender/Options/Java Environment de Burp, sélectionnez le dossier où vous avez téléchargé la bibliothèque GSON de Google
Ajoutez l'extension depuis l'onglet Extender/Extensions de Burp. (l'extension est le fichier jar dans le dossier dist du dépôt).
Clonez le dépôt.
Enregistrez les fichiers d'interface de Burp dans un nouveau dossier en allant dans l'onglet Extender/APIs de Burp et en cliquant sur le bouton Save interface files. Copiez ensuite ces fichiers dans le répertoire src/burp du dépôt cloné.
Téléchargez la bibliothèque GSON de Google depuis Maven
(http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar)
wget http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar
Depuis le répertoire de l'extracteur :
4. mkdir build
5. javac -cp gson-2.8.2.jar -d build src/burp/*.java
6. jar cf extractor.jar -C build burp
Chargez ensuite le fichier extractor.jar dans l'onglet Extender de burp. (vous devrez également pointer le chemin de Burp vers le dossier où vous avez stocké la bibliothèque GSON : Burp Extender > Options > Java Environment)
Un nouvel onglet nommé Extractor devrait alors apparaître dans Burp.

Cette extension ajoute un nouvel onglet dans Burp Suite nommé Extractor
Dans cet onglet, vous pouvez ajouter des nœuds à un arbre pour décrire à quoi ressemblent les données dans les requêtes ou les réponses. Chaque feuille de cet arbre créera un nouvel onglet partout où une requête ou une réponse est affichée, avec les données de la requête transformées selon tous les nœuds parents jusqu'à la feuille spécifique.
Par exemple, si le corps de la requête est un payload XML avec une balise spécifique contenant une chaîne encodée en Base64, l'arbre ressemblerait à ceci :

Avec la configuration ci-dessus, chaque requête et réponse contient désormais un onglet nommé Body>XML:tag_name>Base64 ; cet onglet devrait contenir les données décodées en Base64 contenues dans la balise XML tag_name du corps de la requête. Modifier les données dans cet onglet encodera les données en Base64 et les réinjectera dans cette même balise XML du corps de la requête (afin que vous puissiez modifier les requêtes en les interceptant dans Proxy/Intercept ou fabriquer des payloads dans Repeater).
Aucun paramètre.
Ce nœud effectue le décodage Base64 des données qui lui sont transmises et les ré-encode le long
de la chaîne lorsque vous modifiez les données à son niveau ou à celui de l'un de ses enfants.
Aucun paramètre.
Ce nœud effectue un décodage URL de base des données qui lui sont transmises ; attention, les
données modifiées dans ce nœud ou dans l'un de ses enfants peuvent sembler différentes une fois
ré-encodées le long de la chaîne, car seuls les caractères URL non valides seront ré-encodés.
Aucun paramètre.
Ce nœud décompresse (un-GZip) les données qui lui sont transmises et les re-compresse (GZip) si
lui-même ou l'un de ses enfants est modifié.
Aucun paramètre.
Ce nœud convertit les données qui lui sont transmises de binaire en chaîne hexadécimale. Il
reconvertit les données de la chaîne hexadécimale en binaire si ses données ou celles de l'un de
ses enfants sont modifiées.
Aucun paramètre.
Ce nœud convertit les données qui lui sont transmises d'une chaîne hexadécimale en binaire. Il
reconvertit les données de binaire en chaîne hexadécimale si ses données ou celles de l'un de
ses enfants sont modifiées.
Un paramètre :
Ce nœud extrait les données d'un paramètre URL de type x-www-form-urlencoded. Il peut être utilisé directement comme nœud enfant de Header pour extraire un paramètre URL de l'URL de la requête, ou comme nœud enfant de body si le corps ne contient que des paramètres de type URL, ou comme enfant de tout autre nœud s'il contient une URL ou des paramètres x-www-form-urlencoded. Les données modifiées seront réinjectées dans le paramètre à la même position.
Deux paramètres :
Ce nœud est utilisé pour extraire un paramètre du corps de type multipart/form-data. Les données modifiées seront réinjectées dans le paramètre au même endroit.
Un paramètre :
Ce nœud extrait les données d'un cookie. Les données modifiées seront réinjectées dans le cookie. Ce nœud doit être utilisé comme enfant direct du nœud Header.
Un paramètre :
Ce nœud extrait le contenu d'un indicateur d'en-tête ; les données modifiées seront réinjectées dans l'indicateur. Ce nœud doit être utilisé comme enfant direct du nœud Header.
Un paramètre :
Ce nœud extrait la valeur du premier nœud XML qui correspond au nom de nœud XML fourni en paramètre. Les données modifiées seront réinjectées dans la valeur de ce même nœud.
Deux paramètres :
Ce nœud extrait la valeur du paramètre du premier nœud XML qui correspond au nom de nœud XML. Les données modifiées seront réinjectées dans le paramètre de ce même nœud.
Deux paramètres :
Ce nœud extrait les données d'un payload JSON. Seules les données du niveau supérieur du payload qui lui est transmis peuvent être extraites ; cependant, vous pouvez chaîner ce nœud avec d'autres nœuds Json pour extraire des objets JSON imbriqués dans d'autres objets JSON.
Un paramètre :
Ce nœud applique un ET logique entre les données qui lui sont transmises et les données de son paramètre. Les données transmises au nœud doivent être au format binaire (utilisez d'abord un nœud HextoBin si nécessaire). Les données modifiées seront soumises à nouveau au ET ; cependant, veuillez noter que cette opération a peu de valeur car l'opérateur ET n'est pas bijectif (vous ne pouvez pas vous attendre à ce que les données réinjectées aient un sens dans leur contexte).
Un paramètre :
Ce nœud applique un OU logique entre les données qui lui sont transmises et les données de son paramètre. Les données transmises au nœud doivent être au format binaire (utilisez d'abord un nœud HextoBin si nécessaire). Les données modifiées seront soumises à nouveau au OU ; cependant, veuillez noter que cette opération a peu de valeur car l'opérateur OU n'est pas bijectif (vous ne pouvez pas vous attendre à ce que les données réinjectées aient un sens dans leur contexte).
Un paramètre :
Ce nœud applique un OU exclusif entre les données qui lui sont transmises et les données de son paramètre. Les données transmises au nœud doivent être au format binaire (utilisez d'abord un nœud HextoBin si nécessaire). Les données modifiées seront soumises à nouveau au XOR.
Aucun paramètre
Ce nœud n'effectue aucun traitement : il affiche simplement les données qui lui sont transmises.
Il est surtout utile pour ajouter un point de contrôle afin de vérifier si les données transmises le
long d'une chaîne de nœuds sont correctes à un endroit précis où le nœud a été inséré.
Un paramètre :
Ce nœud fait passer le contenu à travers l'expression régulière et n'extrait que la sous-correspondance ; il est utile pour préparer un nœud avant de le passer à un autre nœud.
Exemple ==> Callback\\((.*)\\)
Vous avez la possibilité de créer vos propres nœuds en java ; un exemple de fichier de nœud a été fourni dans le code sous le nom QueryNodeXXX.java. Il suffit de le copier/coller et de le renommer, puis de suivre les instructions qu'il contient. N'oubliez pas non plus d'ajouter votre nœud nouvellement créé dans Globals.java vers la fin de la liste (ne modifiez pas les 2 premières lignes de cette liste si vous ne voulez rien casser).