我正在使用 Java 开发漏洞扫描器,以检查允许使用弱密码套件进行连接的网站。因此,例如,我会尝试使用 56 位“SSL_DHE_RSA_WITH_DES_CBC_SHA”(或其他弱密码)进行连接,如果我说 200 OK,则该网站容易受到攻击。这是我到目前为止的位置:
1- HttpURLConnection 在默认密码下一直工作良好,但如果我尝试使用“System.setProperty() 设置弱密码,我要么得到“密码不支持的异常(对于大多数密码套件)或”当我尝试连接()时,连接被拒绝”异常。我知道连接被拒绝是我对不接受弱密码的网站的回答,但我如何获得实际的 http 响应 header (带有拒绝代码)而不是异常?
2- 我实际上对在 SSL 级别(第 6 层)但在 HTTP 级别(第 7 层)查找漏洞不感兴趣,我知道 http header 在某些情况下可能具有欺骗性,但我同意这一点。
总而言之,我需要这样的东西才能仅用于弱密码套件:
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());
最佳答案
how do I get the actual http reponse header (with rejection code) instead of the exception?
你不知道。未形成 SSL 连接,因此没有任何 HTTP header 可以传输。您得到的是 SSLException。
I am actually not interested in finding vulnerability on the SSL level (layer 6) but on HTTP level
这个说法没有任何意义。该漏洞存在于 SSL 级别。在 SSL 连接完成之前, 没有 HTTP(s) 级别的连接,而是失败。
关于Java HttpURLConnection 使用弱密码连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5092375/