为了揭示浏览器隐藏的密码是如何泄露的,我们将使用浏览器的检查工具。这个工具允许你查看和临时编辑网页的源代码,这些代码会告诉浏览器如何显示网页。我们将更改使密码显示为点或星号的那段源代码。完成后,密码将以普通文本的方式显示出来。
这不是那种可以一举损害数百万人的私人数据的黑客行为。相反,这说明了黑客攻击的一个指导原则,即以创造性的方式使用现有工具(在这个场景中是通过浏览器的检查工具)来完成特定的目标:揭示隐藏的密码。同时,这次攻击还表明,如果攻击者能够通过物理方式访问你的计算机,那么在浏览器中存储密码存在很大风险。
让我们以推特(Twitter)登录页面为例,尝试一下这种方法。首先输入一个假的用户名和密码,然后启动浏览器的Inspect工具,更新源代码以暴露密码。
1.打开谷歌Chrome浏览器,然后访问推特首页。这次攻击也可以在其他浏览器上运行,但为了简单起见,我们使用Chrome浏览器。
2.在用户名字栏中输入用户名,并在密码栏中输入“Notmyrealpassword!”。不要输入你的真实密码。密码会被星号隐藏,如图1-1所示。
图1-1 浏览器通常用点或星号来隐藏密码
3.右键单击(或在Mac上按住Control键单击)密码栏并选择Inspect,如图1-2所示。检查工具应该会在浏览器中打开,它看起来像是显示代码的各种窗口的一种组合。因为你通过右键单击密码栏打开了检查工具,所以浏览器应该已经把在登录页面中创建密码字段的代码部分进行了高亮显示。
图1-2 检查密码
4.在突出显示的代码中找到type="password"并双击单词password将其选中,如图1-3所示。这段代码是浏览器识别密码字段的方式。浏览器知道应该隐藏password类型字段中的任何文本。
图1-3 在检查工具中查找type="password"
5.password被高亮后,按空格键将password替换为空格(type=" "),如图1-4所示。我们现在已经修改了(或破解了)密码字段的代码,这样浏览器就不知道它是一个密码类型的字段。这将显示密码字段中的任何文本!
注意: 这种破解行为并不影响推特本身的页面,它只是改变了你的浏览器显示推特登录页面的方式。
6.按回车键,在浏览器中显示更新后的代码。现在你应该能在浏览器窗口看到你输入的密码以普通文本形式显示了,如图1-5所示。
图1-4 替换type="password"中的单词password
图1-5 密码现在是可见的
这种攻击之所以奏效,是因为Web开发人员用于创建密码字段的<input>标签是不安全的,而且它已存在了二十多年。在20世纪90年代,当早期的Web开发人员将<input>标记添加到用以在浏览器上显示网页的超文本标记语言(HTML)中时,它们唯一的安全功能是通过使用额外的代码type="password",用点或星号替换密码字符。然而,由于常规文本框也使用<input>标记,所以我们可以使用检查工具将密码输入栏更改为常规文本输入,只需将type="password"更改为type=" "即可。