我有一个旧的嵌入式 Linux 设备,它来自我大约 10 年前做的一个项目。该设备没有内置 UI、键盘或类似的东西,只有一个小型 Web 服务器来控制它。
我后来忘记了该设备的密码,而最初制造该设备的公司也于五年前消失了。
无论如何,我想我会尝试进入它,看看我是否可以让它恢复生机,也许将它重新用于其他任务(如果有人感兴趣的话,它是 GSM 通信设备)但我需要重置它的密码。
我已经设法打开“重置密码”屏幕,但它坚持尝试使用互联网上的外部服务器验证某些内容,该服务器不再在线,甚至不存在。
它向服务器发出 https 请求,并使用 wire shark 在请求上放置一个数据包跟踪,显示它尝试联系服务器,但失败了。
所以...我想,我是否可以将自己的服务器放到网上,看看它能做什么。
我启动了一个 Apache2 实例,在其上启用了 SSL,为其创建了一个自签名证书,然后设置了我的 DNS,以便将其重定向到我的服务器,而不是它正在寻找的服务器。
除了一件事之外,一切都很顺利。
如果我观察数据包跟踪,嵌入式设备会拒绝与我的服务器通信,因为它不信任证书 CA。
如果我可以让我的服务器颁发自签名证书,但假装是另一个 CA(比如 equifax、verisign 或类似的),我想我可能能够让设备进行验证,然后让我重置管理员密码。
有人知道是否可以使用自签名证书来做到这一点?
答案1
大概。
如果自签名证书被拒绝,则该设备可以抵御攻击。您需要一个由设备信任的证书颁发机构之一认可的证书。
一种选择可能是调整设备信任的证书颁发机构。但是,我猜这不是一个理想的选择。(如果您可以移除硬盘并调整信任的颁发机构,那么您可能也可以调整密码。)
但是,如果设备真的像您所说的那样旧,那么它可能依赖于已知已被破坏的 MD5 等哈希算法。
注意:我不会向您提供如何执行 MD5 碰撞的说明。我只是说这样的设备可能容易受到此类攻击。