Skip to content

Commit dd2123d

Browse files
committed
Modified all requests to utilize Burp instead of build-in Java methods
1 parent f02f427 commit dd2123d

File tree

3 files changed

+35
-42
lines changed

3 files changed

+35
-42
lines changed

src/main/java/burp/Menu.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public void mousePressed(MouseEvent e) {
4343

4444

4545
public void mouseReleased(MouseEvent e) {
46-
WSDLParser parser = new WSDLParser(helpers, tab);
46+
WSDLParser parser = new WSDLParser(callbacks,helpers, tab);
4747
try {
4848
new Worker(parser,invocation, tab, callbacks).execute();
4949
} catch (Exception e1) {

src/main/java/burp/WSDLParser.java

+7-4
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,21 @@
1919

2020
public class WSDLParser {
2121

22-
private IExtensionHelpers helpers;
22+
public static IExtensionHelpers helpers;
23+
public static IBurpExtenderCallbacks callbacks;
24+
public static IHttpRequestResponse httpRequestResponse;
2325
private WSDLParserTab tab;
2426
public static List<String> headers;
2527

26-
public WSDLParser(IExtensionHelpers helpers, WSDLParserTab tab) {
27-
this.helpers = helpers;
28+
public WSDLParser(IBurpExtenderCallbacks callbacks, IExtensionHelpers helpers, WSDLParserTab tab) {
29+
WSDLParser.helpers = helpers;
2830
this.tab = tab;
31+
WSDLParser.callbacks = callbacks;
2932

3033
}
3134

3235
public int parseWSDL(IHttpRequestResponse requestResponse, IBurpExtenderCallbacks callbacks) throws ParserConfigurationException, IOException, SAXException, WSDLException, ExecutionException, InterruptedException {
33-
36+
httpRequestResponse = requestResponse;
3437
byte[] response = requestResponse.getResponse();
3538

3639
if (response == null){

src/main/java/com/ibm/wsdl/xml/WSDLReaderImpl.java

+27-37
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import javax.xml.namespace.*;
1111
import javax.xml.parsers.*;
1212

13+
import burp.IHttpRequestResponse;
14+
import burp.IResponseInfo;
1315
import burp.WSDLParser;
1416
import com.sun.xml.internal.ws.api.model.wsdl.WSDLModel;
1517
import org.w3c.dom.*;
@@ -41,13 +43,13 @@ public class WSDLReaderImpl implements WSDLReader
4143
{
4244
// Used for determining the style of operations.
4345
private static final List STYLE_ONE_WAY =
44-
Arrays.asList(new String[]{Constants.ELEM_INPUT});
46+
Arrays.asList(Constants.ELEM_INPUT);
4547
private static final List STYLE_REQUEST_RESPONSE =
46-
Arrays.asList(new String[]{Constants.ELEM_INPUT, Constants.ELEM_OUTPUT});
48+
Arrays.asList(Constants.ELEM_INPUT, Constants.ELEM_OUTPUT);
4749
private static final List STYLE_SOLICIT_RESPONSE =
48-
Arrays.asList(new String[]{Constants.ELEM_OUTPUT, Constants.ELEM_INPUT});
50+
Arrays.asList(Constants.ELEM_OUTPUT, Constants.ELEM_INPUT);
4951
private static final List STYLE_NOTIFICATION =
50-
Arrays.asList(new String[]{Constants.ELEM_OUTPUT});
52+
Arrays.asList(Constants.ELEM_OUTPUT);
5153

5254
protected boolean verbose = true;
5355
protected boolean importDocuments = true;
@@ -412,17 +414,13 @@ protected Import parseImport(Element importEl,
412414

413415
if (importedDef == null)
414416
{
415-
URLConnection connection = new URL(url.toString()).openConnection();
416-
for(Iterator<String> i = WSDLParser.headers.iterator(); i.hasNext(); ) {
417-
String item = i.next();
418-
if (item.contains(":") && !item.contains("Accept-Encoding:")) {
419-
String headerName = item.split(":")[0];
420-
String headerValue = item.split(":")[1];
421-
connection.setRequestProperty(headerName, headerValue);
422-
}
423-
}
424-
connection.connect();
425-
inputStream = connection.getInputStream();
417+
byte[] request = WSDLParser.helpers.buildHttpRequest(url);
418+
IHttpRequestResponse httpRequestResponse = WSDLParser.callbacks.makeHttpRequest(WSDLParser.httpRequestResponse.getHttpService(),request);
419+
byte[] response = httpRequestResponse.getResponse();
420+
IResponseInfo responseInfo = WSDLParser.helpers.analyzeResponse(response);
421+
int bodyOffset = responseInfo.getBodyOffset();
422+
String body = new String(response, bodyOffset, response.length - bodyOffset);
423+
inputStream = new ByteArrayInputStream(body.getBytes());
426424

427425
//inputStream = StringUtils.getContentAsInputStream(url);
428426

@@ -817,17 +815,13 @@ protected ExtensibilityElement parseSchema( Class parentType,
817815
if (referencedSchema == null)
818816
{
819817
// We haven't read this schema in before so do it now
820-
URLConnection connection = new URL(url.toString()).openConnection();
821-
for(Iterator<String> i = WSDLParser.headers.iterator(); i.hasNext(); ) {
822-
String item = i.next();
823-
if (item.contains(":") && !item.contains("Accept-Encoding:")) {
824-
String headerName = item.split(":")[0];
825-
String headerValue = item.split(":")[1];
826-
connection.setRequestProperty(headerName, headerValue);
827-
}
828-
}
829-
connection.connect();
830-
inputStream = connection.getInputStream();
818+
byte[] request = WSDLParser.helpers.buildHttpRequest(url);
819+
IHttpRequestResponse httpRequestResponse = WSDLParser.callbacks.makeHttpRequest(WSDLParser.httpRequestResponse.getHttpService(),request);
820+
byte[] response = httpRequestResponse.getResponse();
821+
IResponseInfo responseInfo = WSDLParser.helpers.analyzeResponse(response);
822+
int bodyOffset = responseInfo.getBodyOffset();
823+
String body = new String(response, bodyOffset, response.length - bodyOffset);
824+
inputStream = new ByteArrayInputStream(body.getBytes());
831825

832826
if (inputStream != null)
833827
{
@@ -2292,17 +2286,13 @@ public Definition readWSDL(String contextURI, String wsdlURI)
22922286
? StringUtils.getURL(null, contextURI)
22932287
: null;
22942288
URL url = StringUtils.getURL(contextURL, wsdlURI);
2295-
URLConnection connection = new URL(url.toString()).openConnection();
2296-
for(Iterator<String> i = WSDLParser.headers.iterator(); i.hasNext(); ) {
2297-
String item = i.next();
2298-
if (item.contains(":") && !item.contains("Accept-Encoding:")) {
2299-
String headerName = item.split(":")[0];
2300-
String headerValue = item.split(":")[1];
2301-
connection.setRequestProperty(headerName, headerValue);
2302-
}
2303-
}
2304-
connection.connect();
2305-
InputStream inputStream = connection.getInputStream();
2289+
byte[] request = WSDLParser.helpers.buildHttpRequest(url);
2290+
IHttpRequestResponse httpRequestResponse = WSDLParser.callbacks.makeHttpRequest(WSDLParser.httpRequestResponse.getHttpService(),request);
2291+
byte[] response = httpRequestResponse.getResponse();
2292+
IResponseInfo responseInfo = WSDLParser.helpers.analyzeResponse(response);
2293+
int bodyOffset = responseInfo.getBodyOffset();
2294+
String body = new String(response, bodyOffset, response.length - bodyOffset);
2295+
InputStream inputStream = new ByteArrayInputStream(body.getBytes());
23062296
InputSource inputSource = new InputSource(inputStream);
23072297
inputSource.setSystemId(url.toString());
23082298
Document doc = getDocument(inputSource, url.toString());

0 commit comments

Comments
 (0)