public String getHost(IRequestInfo analyzeRequest){ List<String> headers = analyzeRequest.getHeaders(); String domain = ""; for(String item:headers){ if (item.toLowerCase().contains("host")){ domain = new String(item.substring(6)); } } return domain ; } public static String getFileType(IResponseInfo analyzeResponse) {
public static String getRequestHeaderValue(IRequestInfo requestInfo, String headerName) { headerName = headerName.toLowerCase().replace(":", ""); for (String header : requestInfo.getHeaders()) { if (header.toLowerCase().startsWith(headerName)) { return header.split(":", 0)[1]; } } return null; }
public String getHost(IRequestInfo analyzeRequest){ List<String> headers = analyzeRequest.getHeaders(); String domain = ""; for(String item:headers){ if (item.toLowerCase().contains("host")){ domain = new String(item.substring(6)); } } return domain ; }
private boolean checkAnyHeader(IHttpRequestResponse messageInfo) { IRequestInfo analyzedRequest = BurpExtender.getHelpers().analyzeRequest(messageInfo); List<String> matchingHeaders = analyzedRequest.getHeaders() .stream() .filter(h -> h.matches(this.matchCondition)) .collect(Collectors.toList()); switch (this.matchRelationship) { case "Matches": return matchingHeaders.size() > 0; default: return !(matchingHeaders.size() > 0); } }
public static boolean isRequestMultipartForm(byte[] request) { IExtensionHelpers helpers = BurpExtender.getHelpers(); IRequestInfo analyzedRequest = helpers.analyzeRequest(request); List<String> headers = analyzedRequest.getHeaders(); return headers.stream().anyMatch((h) -> h.startsWith("Content-Type: multipart/form-data;")); }
public static String getMultipartBoundary(byte[] request) { IExtensionHelpers helpers = BurpExtender.getHelpers(); IRequestInfo analyzedRequest = helpers.analyzeRequest(request); List<String> headers = analyzedRequest.getHeaders(); return headers.stream() .filter((h) -> h.startsWith("Content-Type: multipart/form-data;")) .findFirst() .map((h) -> getStringAfterSubstring(h, "Content-Type: multipart/form-data;")) .map((h) -> getStringAfterSubstring(h, "boundary=")) .map((h) -> "--"+h) .orElse(null); }
private byte[] addHeader(byte[] request) { IExtensionHelpers helpers = BurpExtender.getHelpers(); IRequestInfo analyzedRequest = helpers.analyzeRequest(request); List<String> headers = analyzedRequest.getHeaders(); // Strip content-length to make sure it's the last param if (headers.get(headers.size()-1).startsWith("Content-Length:")) { headers.remove(headers.size()-1); } byte[] body = Arrays.copyOfRange(request, analyzedRequest.getBodyOffset(), request.length); headers.add(this.replace); return helpers.buildHttpMessage(headers, body); }
private byte[] updateRequestFirstLine(byte[] request) { IExtensionHelpers helpers = BurpExtender.getHelpers(); IRequestInfo analyzedRequest = helpers.analyzeRequest(request); List<String> headers = analyzedRequest.getHeaders(); byte[] body = Arrays.copyOfRange(request, analyzedRequest.getBodyOffset(), request.length); String firstRequestString = headers.get(0); if (replaceFirst()) { headers.set(0, firstRequestString.replaceFirst(this.match, this.replace)); } else { headers.set(0, firstRequestString.replaceAll(this.match, this.replace)); } return helpers.buildHttpMessage(headers, body); }
byte[] getRequestWithIdentity() { uniqueId = Long.toHexString(new Random().nextLong()); IRequestInfo requestInfo = BurpExtender.callbacks.getHelpers().analyzeRequest(request); List<String> headers = requestInfo.getHeaders(); byte[] body = Arrays.copyOfRange(request, requestInfo.getBodyOffset(), request.length); headers.add(IDENTITY_HEADER + uniqueId); return BurpExtender.callbacks.getHelpers().buildHttpMessage(headers, body); } }
protected List<String> getHeaders() { if (message == null) { return new ArrayList<String>(); } if (isRequest) { IRequestInfo requestInfo = helpers.analyzeRequest(message); return requestInfo.getHeaders(); } else { IResponseInfo responseInfo = helpers.analyzeResponse(message); return responseInfo.getHeaders(); } }
public String getHeaderValueOf(boolean messageIsRequest,IHttpRequestResponse messageInfo, String headerName) { List<String> headers=null; if(messageIsRequest) { IRequestInfo analyzeRequest = helpers.analyzeRequest(messageInfo); headers = analyzeRequest.getHeaders(); }else { IResponseInfo analyzeResponse = helpers.analyzeResponse(messageInfo.getResponse()); headers = analyzeResponse.getHeaders(); } headerName = headerName.toLowerCase().replace(":", ""); for (String header : headers) { if (header.toLowerCase().startsWith(headerName)) { return header.split(":", 0)[1]; } } return null; }
static byte[] changeHost(byte[] request, String host, int port) { IRequestInfo requestInfo = BurpExtender.callbacks.getHelpers().analyzeRequest(request); List<String> headers = requestInfo.getHeaders(); byte[] body = Arrays.copyOfRange(request, requestInfo.getBodyOffset(), request.length); for (int i = 0; i < headers.size(); i++) { if (headers.get(i).startsWith("Host:")) { headers.set(i, String.format("Host: %s:%d", host, port)); break; } } return BurpExtender.callbacks.getHelpers().buildHttpMessage(headers, body); } }
public String getHeaderString(boolean messageIsRequest,IHttpRequestResponse messageInfo) { List<String> headers =null; StringBuilder headerString = new StringBuilder(); if(messageIsRequest) { IRequestInfo analyzeRequest = helpers.analyzeRequest(messageInfo); headers = analyzeRequest.getHeaders(); }else { IResponseInfo analyzeResponse = helpers.analyzeResponse(messageInfo.getResponse()); headers = analyzeResponse.getHeaders(); } for (String header : headers) { headerString.append(header); } return headerString.toString(); }
@Override public void processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo) throws Exception { if (Menu.getEnabledProfile() > 0) { IRequestInfo request = helpers.analyzeRequest(messageInfo.getRequest()); java.util.List<String> headers = request.getHeaders(); if (headers.stream().anyMatch((str -> str.trim().toLowerCase().contains("x-amz-date")))){ String[] profile = this.profiles.get(Menu.getEnabledProfile()); pw.println("Signing with profile " + Menu.getEnabledProfile() + " with key: " + profile[ACCESS_KEY]); byte[] signedRequest = Utility.signRequest(messageInfo, helpers, profile[SERVICE], profile[REGION], profile[ACCESS_KEY], profile[SECRET_KEY]); messageInfo.setRequest(signedRequest); } } } }
void setBaselineRequest(byte[] request){ this.baselineRequestBytes = request; IRequestInfo requestInfo = this.callbacks.getHelpers().analyzeRequest(request); List<IParameter> params = requestInfo.getParameters(); tests.clear(); tests.add(new SessionTestCase()); // add null entry for baseline. for (IParameter param:params){ if(isSupportedType(param)) { tests.add(new SessionTestCase(param)); } } List<String> headers = requestInfo.getHeaders(); for(String header:headers) { if (header.toLowerCase().startsWith("authorization:")) { tests.add(new SessionTestCase(header)); } } fireTableDataChanged(); }
public List<String> getHeaderList(boolean messageIsRequest,IHttpRequestResponse messageInfo) { if(messageIsRequest) { IRequestInfo analyzeRequest = helpers.analyzeRequest(messageInfo); List<String> headers = analyzeRequest.getHeaders(); return headers; }else { IResponseInfo analyzeResponse = helpers.analyzeResponse(messageInfo.getResponse()); List<String> headers = analyzeResponse.getHeaders(); return headers; } }
public List<IScanIssue> doScan(IHttpRequestResponse baseRequestResponse, IScannerInsertionPoint insertionPoint) { if (insertionPoint.getInsertionPointType() != INS_HEADER) return null; IBurpCollaboratorClientContext collaboratorContext = callbacks.createBurpCollaboratorClientContext(); String payload = collaboratorContext.generatePayload(true); String httpPrefixedPayload = "Proxy: http://" + payload; IRequestInfo requestInfo = helpers.analyzeRequest(baseRequestResponse); List<String> headers = requestInfo.getHeaders(); headers.removeIf(header -> header != null && header.toLowerCase().startsWith("proxy:")); headers.add(httpPrefixedPayload); byte[] request = helpers.buildHttpMessage(headers, substring(baseRequestResponse.getRequest(), requestInfo.getBodyOffset())); IHttpRequestResponse scanCheckRequestResponse = callbacks.makeHttpRequest(baseRequestResponse.getHttpService(), request); List<IBurpCollaboratorInteraction> collaboratorInteractions = collaboratorContext.fetchCollaboratorInteractionsFor(payload); if (collaboratorInteractions.isEmpty()) return null; List<IScanIssue> issues = new ArrayList<>(); IScanIssue issue = reportIssue(httpPrefixedPayload, scanCheckRequestResponse, collaboratorInteractions.get(0)); issues.add(issue); return issues; }
public void addHeader(String headerToAdd) { List<String> headers; int offset; if (isRequest) { IRequestInfo requestInfo = helpers.analyzeRequest(message); headers = requestInfo.getHeaders(); offset = requestInfo.getBodyOffset(); } else { IResponseInfo responseInfo = helpers.analyzeResponse(message); headers = responseInfo.getHeaders(); offset = responseInfo.getBodyOffset(); } headers.add(headerToAdd); this.message = helpers.buildHttpMessage(headers, Arrays.copyOfRange(message, offset, message.length)); }
public void loadRequest(IHttpRequestResponse request){ this.requestResponse = request; IRequestInfo req = burpCallback.getHelpers().analyzeRequest(request); loadData(request.getRequest(), req.getParameters(), req.getHeaders()); }
private byte[] buildRequest( IHttpRequestResponse baseRequestResponse, String proxyPrefixedPayload) { // figure out what headers are already on the request IRequestInfo requestInfo = helpers.analyzeRequest(baseRequestResponse); List<String> headers = requestInfo.getHeaders(); // remove any existing proxy headers stripProxyHeaders(headers); // and add our own headers.add(proxyPrefixedPayload); return helpers.buildHttpMessage( headers, substring(baseRequestResponse.getRequest(), requestInfo.getBodyOffset())); }