【发布时间】:2023-03-20 07:31:01
【问题描述】:
我希望能够通过 TLS 测试 POODLE 漏洞。
已经有几种方法可以做到这一点,例如 Qualys SSLLabs,但它过于严格(互联网上只有服务器的 TCP 端口 443 可用)。 还有这个链接,但是我在测试时得到了很多误报/否定:http://www.exploresecurity.com/testing-for-poodle_tls-manually/
所以现在我正在尝试修改 OpenSSL 1.0.2d 的 TLS 实现,以便能够发送无效数据包(使用 openssl s_client ...)并查看服务器的行为。
即使我不是很熟悉 C,我也可以在第 518 行的 crypto/evp/e_aes_cbc_hmac_sha1.c 中找到在 OpenSSL 中实现 AES-CBC-SHA(根据 RFC 2246)填充的有趣代码:
/* pad the payload|hmac */
plen += SHA_DIGEST_LENGTH;
for (l = len - plen - 1; plen < len; plen++)
out[plen] = l;
我将其修改为这样,以便根据 RFC 更改第一个填充字节以使其不正确:
/* pad the payload|hmac */
plen += SHA_DIGEST_LENGTH;
for (l = len - plen - 1; plen < len; plen++) {
if (plen == len - l - 1)
out[plen] = (l + 1) % 256;
else
out[plen] = l;
}
然后编译测试:
./config
make
./apps/openssl s_client -connect www.google.com:443 -servername www.google.com -tls1 -cipher AES128-SHA
我可以连接并发出一个得到响应的 HTTP 请求......
所以我的问题是:这不是我修改的好文件还是其他什么?
非常感谢您的帮助。
【问题讨论】:
标签: c security ssl openssl cryptography