I hereby claim:
- I am albinowax on github.
- I am albinowax (https://keybase.io/albinowax) on keybase.
- I have a public key ASBv05DYL6P70W0BVOQKKiklbP7Q13Fs5RdRJQLD5pJUYAo
To claim this, I am signing this object:
| // For context check out https://portswigger.net/web-security/host-header/exploiting#connection-state-attacks | |
| var connectionId = utilities().randomUtils().randomString(8); | |
| var options = RequestOptions.requestOptions().withConnectionId(connectionId).withHttpMode(HttpMode.HTTP_1); | |
| // Send a simple GET / HTTP/1.1 to the target as the precusor request | |
| var url = requestResponse.request().url(); | |
| var precursorRequest = HttpRequest.httpRequestFromUrl(url); | |
| precursorRequest = precursorRequest.withPath("/").withHeader("Connection", "keep-alive"); | |
| // Send the attack in the repeater, and update the response pane |
| // This will use the single-packet attack for HTTP/2, and last-byte synchronisation for HTTP/1 | |
| int NUMBER_OF_REQUESTS = 10; | |
| var reqs = new ArrayList<HttpRequest>(); | |
| for (int i = 0; i < NUMBER_OF_REQUESTS; i++) { | |
| reqs.add(requestResponse.request()); | |
| } | |
| var responses = api().http().sendRequests(reqs); | |
| var codes = responses.stream().map(HttpRequestResponse::response).filter(Objects::nonNull).map(HttpResponse::statusCode).toList(); | |
| logging().logToOutput(codes); |
I hereby claim:
To claim this, I am signing this object: