
L'estensione aggiunge una nuova scheda in Burp Suite chiamata Extractor.
Scarica la libreria GSON di Google da 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
Nella scheda Extender/Options/Java Environment di Burp seleziona la cartella dove hai scaricato la libreria GSON di Google
Aggiungi l'estensione dalla scheda Extender/Extensions di Burp. (l'estensione è il file jar nella cartella dist del repository).
Clona il repository.
Salva i file delle interfacce di Burp in una nuova cartella andando nella scheda Extender/APIs di Burp e facendo clic sul pulsante Save interface files. Quindi copia questi file nella directory src/burp del repository clonato.
Scarica la libreria GSON di Google da 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
Dalla directory dell'estrattore:
4. mkdir build
5. javac -cp gson-2.8.2.jar -d build src/burp/*.java
6. jar cf extractor.jar -C build burp
Quindi carica il file extractor.jar nella scheda Extender di burp. (dovrai anche indicare a Burp il percorso della cartella in cui hai salvato la libreria GSON: Burp Extender > Options > Java Environment)
Dovrebbe aggiungere una nuova scheda chiamata Extractor a Burp.

Questa estensione aggiunge una nuova scheda in Burp Suite chiamata Extractor
All'interno di questa scheda puoi aggiungere nodi a un albero per descrivere l'aspetto dei dati nelle richieste o nelle risposte. Ogni foglia in questo albero creerà una nuova scheda ovunque venga mostrata una query o una risposta, con i dati della query trasformati secondo tutti i nodi padre fino alla foglia specifica.
Ad esempio, se il corpo della richiesta è un payload XML con un tag specifico contenente una stringa codificata in Base64, l'albero sarebbe simile al seguente:

Con la configurazione sopra, ogni richiesta e risposta ora contiene una scheda chiamata Body>XML:tag_name>Base64; quella scheda dovrebbe contenere i dati decodificati in Base64 contenuti nel tag XML tag_name del corpo della richiesta. Modificando i dati in quella scheda, i dati verranno codificati in Base64 e reiniettati nello stesso tag XML del corpo della richiesta (così puoi modificare le richieste mentre le intercetti in Proxy/Intercept o creare payload in Repeater).
Nessun parametro.
Questo nodo esegue la decodifica Base64 dei dati che gli vengono passati e li ricodifica
lungo la catena quando modifichi i dati al suo livello o in uno qualsiasi dei suoi figli.
Nessun parametro.
Questo nodo esegue la decodifica URL di base dei dati che gli vengono passati; fai attenzione che
i dati modificati all'interno di questo nodo o di uno qualsiasi dei suoi figli potrebbero apparire diversi una volta
ricodificati lungo la catena, poiché verranno ricodificati solo i caratteri URL non validi.
Nessun parametro.
Questo nodo decomprime GZip i dati che gli vengono passati e li ricomprime in GZip se viene modificato esso stesso o uno
qualsiasi dei suoi figli.
Nessun parametro.
Questo nodo converte i dati che gli vengono passati da binario a stringa esadecimale.
Converte nuovamente i dati da stringa esadecimale a binario se i suoi dati o quelli
di uno qualsiasi dei suoi figli vengono modificati.
Nessun parametro.
Questo nodo converte i dati che gli vengono passati da stringa esadecimale a binario.
Converte nuovamente i dati da binario a stringa esadecimale se i suoi dati o quelli
di uno qualsiasi dei suoi figli vengono modificati.
Un parametro:
Questo nodo estrae i dati da un nodo di parametro URL di tipo x-www-form-urlencoded. Può essere usato direttamente come nodo figlio di Header per estrarre un parametro URL dall'URL della richiesta, o come nodo figlio di body se il corpo contiene solo parametri in stile URL, o come figlio di qualsiasi altro nodo se contiene un URL o parametri x-www-form-urlencoded. I dati modificati verranno reiniettati nel parametro nella stessa posizione.
Due parametri:
Questo nodo viene usato per estrarre un parametro del corpo di tipo multipart/form-data. I dati modificati verranno reiniettati nel parametro nello stesso punto.
Un parametro:
Questo nodo estrae i dati da un cookie. I dati modificati verranno reiniettati nel cookie. Questo nodo dovrebbe essere usato come figlio diretto del nodo Header.
Un parametro:
Questo nodo estrae il contenuto di un flag dell'header; i dati modificati verranno reiniettati nel flag. Questo nodo dovrebbe essere usato come figlio diretto del nodo Header.
Un parametro:
Questo nodo estrae il valore dal primo nodo XML che corrisponde al parametro del nome del nodo XML. I dati modificati verranno reiniettati nel valore di quello stesso nodo.
Due parametri:
Questo nodo estrae il valore del parametro dal primo nodo XML che corrisponde al nome del nodo XML. I dati modificati verranno reiniettati nel parametro di quello stesso nodo.
Due parametri:
Questo nodo estrae i dati da un payload JSON. Possono essere estratti solo i dati dal livello superiore del payload che gli viene passato; tuttavia puoi concatenare questo nodo con altri nodi Json per estrarre oggetti JSON incorporati all'interno di altri oggetti JSON.
Un parametro:
Questo nodo applica l'AND ai dati che gli vengono passati con i dati del suo parametro. I dati passati al nodo dovrebbero essere in formato binario (usa prima un nodo HextoBin se necessario). I dati modificati verranno sottoposti nuovamente all'AND; tuttavia, tieni presente che questa operazione ha poco valore poiché l'operatore AND non è biiettivo (non puoi aspettarti che i dati reiniettati abbiano senso nel loro contesto).
Un parametro:
Questo nodo applica l'OR ai dati che gli vengono passati con i dati del suo parametro. I dati passati al nodo dovrebbero essere in formato binario (usa prima un nodo HextoBin se necessario). I dati modificati verranno sottoposti nuovamente all'OR; tuttavia, tieni presente che questa operazione ha poco valore poiché l'operatore OR non è biiettivo (non puoi aspettarti che i dati reiniettati abbiano senso nel loro contesto).
Un parametro:
Questo nodo applica lo XOR ai dati che gli vengono passati con i dati del suo parametro. I dati passati al nodo dovrebbero essere in formato binario (usa prima un nodo HextoBin se necessario). I dati modificati verranno sottoposti nuovamente allo XOR.
Nessun parametro.
Questo nodo non esegue alcuna elaborazione: si limita a mostrare i dati che gli vengono passati;
è utile soprattutto per aggiungere un punto di controllo per verificare se i dati passati lungo
una catena di nodi sono corretti in un punto specifico in cui il nodo è stato inserito.
Un parametro:
Questo nodo fa passare il contenuto attraverso l'espressione regolare ed estrae solo il gruppo di cattura; è utile per preparare un nodo prima di passarlo a un altro nodo.
Esempio ==> Callback\\((.*)\\)
Hai la possibilità di creare i tuoi nodi in java; nel codice è stato fornito un file di esempio di nodo chiamato QueryNodeXXX.java: basta copiarlo/incollarlo e rinominarlo e seguire le istruzioni fornite al suo interno. Ricorda anche di aggiungere il nodo appena creato in Globals.java verso la fine dell'elenco (non modificare le prime 2 righe di quell'elenco se non vuoi rompere nulla).