Я работаю над сканером уязвимостей в Java, чтобы проверять сайты, которые разрешают соединения с использованием слабых комплектов шифров.Поэтому я, например, попытался бы подключиться, используя 56-битный «SSL_DHE_RSA_WITH_DES_CBC_SHA» (или другие слабые шифры), и если я скажу 200 OK, веб-сайт уязвим.Вот где я до сих пор:
1 - HttpURLConnection работает хорошо все время с шифрами по умолчанию, но если я пытаюсь использовать "System.setProperty (), чтобы установить слабый шифр, я либо получаю" шифр не поддерживаетсяисключение (для большинства комплектов шифров) или исключение «соединение отклонено», когда я пытаюсь подключиться ().Я знаю, что соединение отклонено - это мой ответ веб-сайтам, которые не принимают слабые шифры, но как получить фактический заголовок http-ответа (с кодом отклонения) вместо исключения?
2- На самом деле я незаинтересован в поиске уязвимости на уровне SSL (уровень 6), но на уровне HTTP (уровень 7), и я знаю, что в некоторых случаях заголовок http может быть обманчивым, но я согласен с этим.
Итак, янужно что-то подобное, чтобы работать только для Weak Cipher Suites:
URL url = new URL(ip);
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.setHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
con.connect();
System.out.println("Response Code : " + con.getResponseCode());