
バイナリSOAPオブジェクトを読み取り可能かつ変更可能にするBurp Extenderプラグイン。
#WCFDSer-ngng
バイナリ SOAP オブジェクトを読み取り可能かつ変更可能にする Burp Extender プラグインです。Brian Holyfield のオリジナル成果に基づいています。Brian に敬礼。http://blog.gdssecurity.com/labs/2009/11/19/wcf-binary-soap-plug-in-for-burp.html
なぜ? このリリースでは、シリアライゼーションが正しく実行されないバグを修正しています。また、WCF と組み合わせてスキャナ/イントルーダを(正しく)使用する機能が追加されています。さらに、右クリック →「send deserialized to intruder」を選択し、それをファイルにコピー&ペーストして、--proxy オプションを付けて sqlmap -r file.txt を実行すれば、SQLMap でも動作します。
基本的には、デシリアライズ、変更、再シリアライズ、送信を行い、(スキャナの場合のみ)WCF オブジェクトのように見えるレスポンスをデシリアライズして、Burp が例外文字列などをフラグ付けできるようにします。
注記:シリアライゼーションが必要なリクエストをマークするために「Via」ヘッダーを使用します(sqlmap の正しい HTTP チェックを通過させるためでもあります)。Via ヘッダーを他の目的で使う必要がある場合は、別の方法を使うか、utils ファイル内の SERIALIZEHEADER を変更して再コンパイルする必要があります。
1- デフォルトでポート 7686 をリッスンする NBFSNetService.exe を実行します
2- 拡張機能を追加して、エディタでデコードされたリクエストまたはレスポンスを表示します
<@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>
HackVertor のカスタム Java タグ runCommand は次のとおりです:
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;
問題がある場合は、stdout を確認してください(例: java -jar burp.jar を実行してコンソールウィンドウを見てください)
練習用に、脆弱な WCF サービス(およびクライアント)が含まれています。SQL インジェクションに対して脆弱で、専用の README があります。
スクリーンショット:
リピータでの変更:
リクエスト/レスポンス
スキャナでフラグ付けされた
SQLMap 対応