
Ein Burp-Extender-Plugin, das binäre SOAP-Objekte lesbar und modifizierbar macht.
#WCFDSer-ngng
Ein Burp-Extender-Plugin, das binäre SOAP-Objekte lesbar und modifizierbar macht. Basierend auf der Originalarbeit von Brian Holyfield, alle Ehre an Brian http://blog.gdssecurity.com/labs/2009/11/19/wcf-binary-soap-plug-in-for-burp.html
Warum? Diese Version behebt einen Fehler, bei dem die Serialisierung nicht ordnungsgemäß durchgeführt wurde. Außerdem wird die (ordnungsgemäße) Möglichkeit hinzugefügt, den Scanner/Intruder in Verbindung mit WCF zu verwenden. Es funktioniert auch mit SQLMap, wenn Sie mit Rechtsklick -> "send deserialized to intruder" auswählen, das dann in eine Datei kopieren/einfügen und sqlmap -r file.txt mit der Option --proxy ausführen.
Im Grunde deserialisiert, modifiziert, reserialisiert es, sendet weiter und (nur im Fall des Scanners) deserialisiert es alle Antworten, die wie WCF-Objekte aussehen (damit Burp Ausnahmezeichenfolgen usw. kennzeichnen kann).
Hinweis: Es wird der "Via"-Header verwendet, um Anfragen zu markieren, die serialisiert werden müssen (und damit ordnungsgemäß formatierte HTTP-Prüfungen in SQLMap durchlaufen). Wenn Sie den Via-Header für etwas anderes benötigen, müssen Sie etwas anderes verwenden, den SERIALIZEHEADER in der Utils-Datei ändern und neu kompilieren.
1- Führen Sie die Datei NBFSNetService.exe aus, die standardmäßig auf Port 7686 lauscht
2- Fügen Sie die Erweiterung hinzu und zeigen Sie decodierte Anfragen oder Antworten im Editor an
<@d_base64><@_runCommand('valid_token_from_HV_extension')>NBFS.exe base64 encode "<@replace('\r\n','')><@replace('"','\\"')>
SOAP-XML-Nachricht, die in binär (application/soap+msbin1) konvertiert wird
<@/replace><@/replace>"<@/_runCommand><@/d_base64>
Das benutzerdefinierte Java-Tag runCommand in HackVertor:
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;
Bei Problemen in stdout nachschauen (z. B. java -jar burp.jar ausführen und ins Konsolenfenster schauen)
Ein verwundbarer WCF-Dienst (und Client) ist zum Üben enthalten. Er ist anfällig für SQL-Injection und hat eine eigene Readme.
Einige Screenshots:
Änderung im Repeater:
Anfrage/Antwort
im Scanner gekennzeichnet
SQLMap unterstützt