(String url, String headers, String apitype)
| 48 | } |
| 49 | |
| 50 | public IHttpRequestResponse makeHTTPRequest(String url, String headers, String apitype) { |
| 51 | String[] splitHeader; |
| 52 | String basepath; |
| 53 | URL path; |
| 54 | String method = "GET"; |
| 55 | LinkedList<String> Headers2 = new LinkedList<String>(); |
| 56 | byte[] apiRequest = null; |
| 57 | try { |
| 58 | path = new URL(url); |
| 59 | basepath = path.getFile(); |
| 60 | } catch (MalformedURLException ex) { |
| 61 | System.out.println(ex.getMessage()); |
| 62 | return null; |
| 63 | } |
| 64 | if (apitype.equals("GraphQLIntrospection")) { |
| 65 | JsonObject jsonBody = new JsonObject(); |
| 66 | jsonBody.add("query", new JsonPrimitive(new String(BurpExtender.getHelpers().base64Decode("cXVlcnkgUXVlcnkgewogICAgX19zY2hlbWEgewogICAgICBxdWVyeVR5cGUgeyBuYW1lIH0KICAgICAgbXV0YXRpb25UeXBlIHsgbmFtZSB9CiAgICAgIHN1YnNjcmlwdGlvblR5cGUgeyBuYW1lIH0KICAgICAgdHlwZXMgewogICAgICAgIC4uLkZ1bGxUeXBlCiAgICAgIH0KICAgICAgZGlyZWN0aXZlcyB7CiAgICAgICAgbmFtZQogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgbG9jYXRpb25zCiAgICAgICAgYXJncyB7CiAgICAgICAgICAuLi5JbnB1dFZhbHVlCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKICBmcmFnbWVudCBGdWxsVHlwZSBvbiBfX1R5cGUgewogICAga2luZAogICAgbmFtZQogICAgZGVzY3JpcHRpb24KICAgIGZpZWxkcyhpbmNsdWRlRGVwcmVjYXRlZDogdHJ1ZSkgewogICAgICBuYW1lCiAgICAgIGRlc2NyaXB0aW9uCiAgICAgIGFyZ3MgewogICAgICAgIC4uLklucHV0VmFsdWUKICAgICAgfQogICAgICB0eXBlIHsKICAgICAgICAuLi5UeXBlUmVmCiAgICAgIH0KICAgICAgaXNEZXByZWNhdGVkCiAgICAgIGRlcHJlY2F0aW9uUmVhc29uCiAgICB9CiAgICBpbnB1dEZpZWxkcyB7CiAgICAgIC4uLklucHV0VmFsdWUKICAgIH0KICAgIGludGVyZmFjZXMgewogICAgICAuLi5UeXBlUmVmCiAgICB9CiAgICBlbnVtVmFsdWVzKGluY2x1ZGVEZXByZWNhdGVkOiB0cnVlKSB7CiAgICAgIG5hbWUKICAgICAgZGVzY3JpcHRpb24KICAgICAgaXNEZXByZWNhdGVkCiAgICAgIGRlcHJlY2F0aW9uUmVhc29uCiAgICB9CiAgICBwb3NzaWJsZVR5cGVzIHsKICAgICAgLi4uVHlwZVJlZgogICAgfQogIH0KCiAgZnJhZ21lbnQgSW5wdXRWYWx1ZSBvbiBfX0lucHV0VmFsdWUgewogICAgbmFtZQogICAgZGVzY3JpcHRpb24KICAgIHR5cGUgeyAuLi5UeXBlUmVmIH0KICAgIGRlZmF1bHRWYWx1ZQogIH0KCiAgZnJhZ21lbnQgVHlwZVJlZiBvbiBfX1R5cGUgewogICAga2luZAogICAgbmFtZQogICAgb2ZUeXBlIHsKICAgICAga2luZAogICAgICBuYW1lCiAgICAgIG9mVHlwZSB7CiAgICAgICAga2luZAogICAgICAgIG5hbWUKICAgICAgICBvZlR5cGUgewogICAgICAgICAga2luZAogICAgICAgICAgbmFtZQogICAgICAgICAgb2ZUeXBlIHsKICAgICAgICAgICAga2luZAogICAgICAgICAgICBuYW1lCiAgICAgICAgICAgIG9mVHlwZSB7CiAgICAgICAgICAgICAga2luZAogICAgICAgICAgICAgIG5hbWUKICAgICAgICAgICAgICBvZlR5cGUgewogICAgICAgICAgICAgICAga2luZAogICAgICAgICAgICAgICAgbmFtZQogICAgICAgICAgICAgICAgb2ZUeXBlIHsKICAgICAgICAgICAgICAgICAga2luZAogICAgICAgICAgICAgICAgICBuYW1lCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQ==")))); |
| 67 | apiRequest = new Gson().toJson(jsonBody).getBytes(); |
| 68 | method = "POST"; |
| 69 | if (!basepath.equals("/") && basepath.endsWith("/")) { |
| 70 | basepath = basepath.substring(0, basepath.length() - 1); |
| 71 | } |
| 72 | } |
| 73 | Headers2.add(method + " " + basepath + " HTTP/1.1"); |
| 74 | String port = path.getPort() == -1 ? (path.getProtocol().equalsIgnoreCase("https") ? "443" : "80") : Integer.toString(path.getPort()); |
| 75 | Headers2.add("Host: " + path.getHost() + ":" + port); |
| 76 | Headers2.add("User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"); |
| 77 | for (String header : splitHeader = headers.split("\r\n")) { |
| 78 | if (splitHeader.equals("")) continue; |
| 79 | Headers2.add(header); |
| 80 | } |
| 81 | Headers2.add("Content-Type: application/json"); |
| 82 | Headers2.add("Accept: */*"); |
| 83 | Headers2.add("Connection: close"); |
| 84 | HttpRequestFormator.TrimDupHeader(Headers2); |
| 85 | byte[] newRequest = BurpExtender.getHelpers().buildHttpMessage(Headers2, apiRequest); |
| 86 | IHttpService httpService = BurpExtender.getHelpers().buildHttpService(path.getHost(), (int) Integer.valueOf(port), path.getProtocol()); |
| 87 | IHttpRequestResponse ihttprequestresponse = BurpExtender.getCallbacks().makeHttpRequest(httpService, newRequest); |
| 88 | return ihttprequestresponse; |
| 89 | } |
| 90 | } |
| 91 |
no test coverage detected