钓鱼网站可利用浏览器“自动填充”功能获取用户信息

优采云 发布时间: 2022-06-26 14:13

  钓鱼网站可利用浏览器“自动填充”功能获取用户信息

  01/浏览器自动填充功能

  昨天看到了一篇关于Chrome自动填充安全相关的文章。

  文中提到:“自动填充是个非常方便的浏览器特性,不过该特性在 Chrome 上会存在一定的信息泄露的风险。Chrome 最近才修复了某个久负盛名漏洞。简单而言,黑客能够利用自动填充窃取你并不想提交给该网站的信息”。

  效果如下图:

  并提供了一段js来演示漏洞:

  仅测试这段js,发现并不能复现此漏洞,但是这个思路引起了我的思考。

  02/ 浏览器新特性--autocomplete

  再次研究发现,html中要实现浏览器中的表单自动填充主要依靠于autocomplete属性。

  起初autocomplete属性只支持on或off。比如下面代码:

  上面代码开启了整个表单的autocomplete却对email关闭了autocomplete,我们在点击非email的其他字段即可打开自动填充功能:

  但在email中不能展开自动填充功能:

  后来HTML5标准加入了对autocomplete的支持,并且给autocomplete加入了更多的标示符,以保证让浏览器准确的知道哪些信息对应着表单里的哪些字段。

  比如如下代码:

  在autocomplete属性中写入了语义化的字符,比如name、street-address等。

  通过这些标识,浏览器即可准确的把相应的信息填入到相应的表单中。

  03/钓鱼网站可能会这么用

  通过如上demo我们可以发现,当我们选择自动填充以后,chrome不仅会把当前表单字段填充到input中,也会把其他表单字段填充到input中。

  那么如果写一些type为hidden的input标签,并且加上autocomplete属性,chrome是否会自动补上带有hidden属性的input标签的信息呢。

  我们使用如下代码:

  将第一个姓名字段设置为hidden,然后使用自动填充,并且提交表单,查看请求包:

  

  发现type属性为hidden的表单并没有获取到,但其他非hidden的信息都拿到了。

  既然type设置成hidden浏览器不会发送数据,隐藏浏览器元素还有很多方法,比如:

  在表单外层放一个div,让整个div,display:none。

  然而也是不行的:

  看来chrome已经在这里做了足够防护。

  其实在文章最初提供的js代码也是使用这样的方式来进行攻击的。

  现在已经被修复了。那么还有别的办法吗?

  04/可利用的方式

  让浏览器认识且没有做防护,并且让用户看不见这个表单的方法有很多,比如如下方法:

  效果如下:

  bingo!!

  这种方式浏览器并没有防护,其实让用户看不到表单的方式还有很多,还比如设置成透明等等……

  由此想到,如果钓鱼网站利用了这个功能,在用户不知情的情况下,拿到用户浏览器存储的其他信息,会造成很可怕的后果。

  在线测试地址:

  05/如何防护

  既然这个功能是浏览器的功能,在浏览器还未完全将不可见的表单字段设置为不可填充之前,我们只好通过设置,来避免使用这个功能。

  通过打开chrome浏览器的设置--高级设置,然后点掉下图中的复选框,关闭自动填充功能。

  06/参考资料

  HTML标准 - 表单自动填充

  SegmentFault

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线