需要访问仅支持 SSLv3 的旧路由器

信息安全 tls
2021-09-06 06:38:11

我需要访问办公室里的路由器的 Web 界面。问题是它只支持 SSLv3,我找不到允许我连接到它的浏览器。为了更新路由器,我还需要能够登录它。

我试图通过 SSH 连接它,但它不起作用。也许它正在使用一些非标准端口。

使用“fing”运行(有限?)端口扫描,我看到它打开了以下标准端口:

  • 515(LPD打印机)
  • 1723 (PPTP)

我可以使用什么浏览器,或者我还有哪些其他选项?

Unable to Connect Securely

Firefox cannot guarantee the safety of your data on 192.168.1.1:10443 
because it uses SSLv3, a broken security protocol.
Advanced info: ssl_error_unsupported_version
4个回答

Internet Explorer 11 支持它,但您必须转到高级选项选项卡才能启用它。

在此处输入图像描述

Firefox的等效解决方案是打开about:config选项卡并设置

security.tls.version.min

为 0。

来源

测试浏览器 SSL/TLS 设置的有用链接。

Chrome 允许此功能。在这里引用

在 Google Chrome 中,您可以使用 --ssl-version-max 和 --ssl-version-min 命令行标志来选择特定的协议版本。可接受的值为:“ssl3”、“tls1”、“tls1.1”或“tls1.2”。 如何在 Chrome 上设置命令行标志


如何在 Chrome 上设置命令行标志:

视窗

退出 chrome 的任何运行实例。找到您通常用来启动 chrome 的快捷方式。创建它的副本 右键单击​​新快捷方式,然后选择属性 在目标:文本框的最后,添加一个空格,然后添加所需的命令行标志。它应该以类似 ...\chrome.exe" --foo --bar=2 的形式结束,双击新的快捷方式以使用新的命令行标志启动 chrome。

Mac OS X

退出任何正在运行的 chrome 实例。启动 /Applications/Utilities/Terminal.app 在命令提示符处输入: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --foo --bar=2

Linux

退出任何正在运行的 chrome 实例。在控制台中执行:google-chrome --foo --bar=2

(如果您使用不同的命名 chrome/chromium 构建,请相应地更改命令)

铬操作系统

将设备置于开发模式,以便您可以获取根 shell 修改 /etc/chrome_dev.conf(阅读文件中的注释以了解更多详细信息)通过以下方式重新启动 UI:sudo restart ui

请记住,这可能会降低浏览器的安全状态。不建议将这些降级用于正常浏览。

目前提供的三个答案需要降低浏览器的安全级别,如果您在主浏览器中执行此操作,可能会使您面临各种攻击,随后将该浏览器用于其他网站,或者只是忘记恢复此更改(或多个变化)。

传统和不安全的 SSL/TLS 功能(SSLv2 和SSLv3、SHA1RSA 签名、RC4和 3DES 密码、MD5 MAC、导出密码、非 PFS 密码、<1024 DH 参数)在默认情况下逐渐被禁用和/或从浏览器中删除,以及好理由。

@AndreKR 有用地指出的另一个问题是浏览器兼容性问题,在这种情况下,专用 VM 中的旧版浏览器可能是最强大的解决方案。

如果无法更换设备,请使用专用 VM 或专用浏览器。下一个最佳选择是允许使用现代安全浏览器的 TLS 代理。在浏览器中启用一个(或两个,或三个......)不安全的功能不是一个安全且可持续的解决方案,当不可避免的情况发生并且所需的功能被完全删除时?(对ChromeOperaFirefox的 SSLv3 支持)。

一个安全的替代方案是通过支持旧/旧协议和新协议和密码的东西来代理连接,有很多选择(包括相当重量级的 Apache 反向代理解决方案)。

以下更轻量级的解决方案应该适用于 *nix 和 Windows 系统。这将要求您生成一个密钥/证书——这不一定是一个问题,因为接下来会发生的事情是当代浏览器将拒绝 SHA1 签名的证书。这样,您可以使用 SHA-2 签名的 RSA-2048 证书和现代 TLS 来访问设备。

对于这个例子:

socat 代理

使用socat

CERT="cert=mydevice.crt,key=mydevice.key"
SSLSRV="cipher=AES256-SHA,method=TLS1.2,verify=0"
SSLCLI="cipher=AES128-SHA,method=SSL3,verify=0"

socat \
 OPENSSL-LISTEN:11443,bind=127.0.0.1,reuseaddr,fork,$CERT,$SSLSRV  \ 
 OPENSSL:192.168.1.123:443,$SSLCLI

并连接到 https://127.0.0.1:11443/

笔记

如果需要,修改您的本地hosts文件以防止来自浏览器的证书名称不匹配警告,因为无论如何您都需要一个内部证书,您可以生成一个具有预期内部名称的证书(不像我遇到的许多设备倾向于使用奇怪或不友好证书名称)。

对于 TLSv1.2 支持,您需要 OpenSSL-1.0.1 或更高版本,以及 socat-1.7.3.0 或更高版本。ciphermethod选项可以根据需要进行调整,服务器或客户端证书验证也可以

此解决方案甚至可以扩展到类似的问题,例如仅 SSLv2 的设备,或使用 512 位证书或一组笨拙的密码套件,但您需要确保 OpenSSL 不是使用no-ssl2no-ssl3启用了相关密码套件。

如果我是一名审计员,我宁愿看到记录在案的访问方法(以及升级计划!),而不是等待发生事故的临时解决方案。