#WCFDSer-ngng
一个 Burp Extender 插件,它能让二进制 SOAP 对象变得可读且可修改。基于 Brian Holyfield 的原始工作,向 Brian 致敬 http://blog.gdssecurity.com/labs/2009/11/19/wcf-binary-soap-plug-in-for-burp.html
为什么?此版本修复了一个序列化未被正确执行的问题。它还增加了(正确地)将 scanner/intrude 与 WCF 结合使用的能力。此外,如果你右键点击 -> 将反序列化后的内容发送到 intruder,然后将其复制/粘贴到文件中,再使用 --proxy 选项运行 sqlmap -r file.txt,它也能与 SQLMap 配合使用。
基本上,它会反序列化、修改、重新序列化、发送,并且(仅在扫描器的情况下)反序列化任何看起来像 WCF 对象的响应(以允许 Burp 标记任何异常字符串等)。
注意:它的确使用了 "Via" 头来标记需要序列化的请求(并让它通过 sqlmap 中格式正确的 http 检查)。如果你需要 via 头用于其他用途,你将不得不使用其他方法,修改 utils 文件中的 SERIALIZEHEADER 并重新编译。
1- 运行 NBFSNetService.exe 文件,默认监听 7686 端口
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 中的 runCommand 自定义 Java 标签为:
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。
一些截图:
在 Repeater 中更改:
请求/响应
在扫描器中被标记
支持 SQLMap