
바이너리 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와 함께 Scanner/Intruder를 (제대로) 사용할 수 있는 기능을 추가합니다. SQLMap과도 연동됩니다. 마우스 오른쪽 버튼을 클릭 -> 역직렬화된 데이터를 Intruder로 보낸 다음, 해당 내용을 복사/붙여넣기하여 파일로 저장하고, --proxy 옵션과 함께 sqlmap -r file.txt를 실행하면 됩니다.
기본적으로, 요청을 역직렬화하고, 수정하고, 다시 직렬화하여 전달하며, (Scanner의 경우에만) 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의 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 지원