
Un plugin Burp Extender qui rendra les objets SOAP binaires lisibles et modifiables.
#WCFDSer-ngng
Un plugin Burp Extender qui rend les objets SOAP binaires lisibles et modifiables. Basé sur le travail original de Brian Holyfield, hommage à Brian http://blog.gdssecurity.com/labs/2009/11/19/wcf-binary-soap-plug-in-for-burp.html
Pourquoi ? Cette version corrige un bug où la sérialisation n'était pas effectuée correctement. Elle ajoute également la possibilité (correcte) d'utiliser le scanner/intruder en conjonction avec WCF. Elle fonctionne aussi avec SQLMap si vous faites clic droit -> envoyer désérialisé à l'intruder, puis copiez/collez le contenu dans un fichier, puis exécutez sqlmap -r file.txt avec l'option --proxy.
En gros, il désérialise, modifie, resérialise, renvoie et (uniquement dans le cas du scanner) désérialise toutes les réponses qui ressemblent à des objets WCF (pour permettre à Burp de signaler toute chaîne d'exception, etc.).
NB : ce plugin utilise l'en-tête « Via » pour marquer les requêtes qui nécessitent une sérialisation (et lui permettre de passer les contrôles HTTP correctement formatés dans sqlmap). Si vous avez besoin de l'en-tête Via pour autre chose, vous devrez utiliser autre chose, modifier SERIALIZEHEADER dans le fichier utils et recompiler.
1- Exécutez le fichier NBFSNetService.exe qui écoute sur le port 7686 par défaut
2- Ajoutez l'extension et visualisez les requêtes ou réponses décodées dans l'éditeur
<@d_base64><@_runCommand('valid_token_from_HV_extension')>NBFS.exe base64 encode "<@replace('\r\n','')><@replace('"','\\"')>
SOAP XML Message which will be converted to binary (application/soap+msbin1)
<@/replace><@/replace>"<@/_runCommand><@/d_base64>
La balise Java personnalisée runCommand dans HackVertor est :
var result = "";
Runtime rt = Runtime.getRuntime();
String[] commands = input.split(" ");
Process proc = rt.exec(input);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(proc.getErrorStream()));
// Read the output from the command
String s = null;
while ((s = stdInput.readLine()) != null) {
if(result.equals("")){
result = s;
}else{
result += "\r\n" + s;
}
}
// Read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
output = result;
Pour tout problème, regardez la sortie standard (par exemple, exécutez java -jar burp.jar et regardez la fenêtre de console).
Un service WCF vulnérable (et un client) a été inclus pour s'entraîner. Il est vulnérable aux injections SQL et possède son propre readme.
Quelques captures d'écran :
Modification dans repeater :
requête/réponse
signalé dans le scanner
SQLMap pris en charge