明文密码?

信息安全 tls 密码 验证 打嗝套件
2021-08-25 05:36:46

我正在对我的电话接线员的应用程序进行一些研究。我在我的 Mac 上以代理模式启动 Burp Suite,然后在我的 iPhone 上打开应用程序并开始嗅探一些流量。

我按下“登录”按钮,这发生了:

打嗝套房

我的用户名和密码以明文形式存在。连接其实是 HTTPS,但如果是 HTTPS,为什么我可以在 POST 请求中将我的用户名和密码读取为明文参数?

这是正常的吗?

我还尝试使用 curl 命令复制登录过程,并且仅当我使用-k跳过 SSL 证书验证的参数时它才有效。

这里发生了什么?

3个回答

代理模式下的 Burp Suite 能够解密任何信任它的系统的 HTTPS 流量。它通过生成自己的证书并使用该证书将自己注册为安装它的系统上的证书颁发机构来做到这一点。然后,当它代理对 HTTPS 网络服务器的请求时,它会自己进行 HTTPS 握手,解密流量,为自己作为证书颁发机构签名的网络服务器颁发证书,使用该证书重新加密流量并发送伪造的证书和重新加密的数据给客户端。

这允许 Burp Suite 窃听 HTTPS 流量。使用普通代理服务器或不信任 Burp Suite 伪 CA 的用户的凭据不会被泄露。

我对此不是 100% 确定,但我认为它突出了您正在审查的应用程序中的一个严重漏洞:

通常,当应用程序通过 https 连接时,它会创建一个安全连接并验证证书是否已由受信任的证书颁发机构签名,它仍然有效,有时还没有被撤销。证书还需要对发起 HTTP 连接的域有效。

Burp 生成一个无效的证书来拦截 SSL 流量。正如您所提到的,curl 和任何其他安全的应用程序都会看到证书是由不受信任的CA 签名的,并会采取相应的行动;浏览器会显示严重警告,并且 curl 会以错误状态退出。

如果应用程序不采取相应措施,即使证书无效仍然连接,像您这样的攻击者可以拦截连接并做各种事情,其中​​包括窃取您的密码,如果应用程序自动更新,则执行任意代码你的电脑。

请注意,这仅适用于您没有收到并忽略应用程序的任何警告的情况。

这肯定不好,但现在很正常。这不好,因为入侵服务器的对手可以修改服务器的软件,以便为他保存凭据。或者一个能够解密 https 的对手,例如使用 mitm,就像你一样,可以获得密码。存在 30 多年的解决方案称为身份验证协议,但不幸的是它们没有被使用。零知识认证协议已经存在了 20 多年,但仍未得到广泛使用。我不知道为什么我们仍然使用这些过时的密码。

顺便说一句,应用程序开发人员应该实施公钥固定,但这还没有完成。