有段时间没有来看雪了,恰好前几天看到新浪微博出现csrf蠕虫,便写了一篇简单的分析,放到web板块吧。
0x00 前言
8月29日,新浪微博中爆出新的蠕虫,很多用户转发了如下图所示的,类似:“这个网站,哈哈,你懂的”微博。对于普通用户,进入微博中的链接,很容易便收攻击者影响,不知不觉之间,转发类似的微博
所以用户在点击链接时应该小心谨慎,不要随便打开不明链接
0x01 概要和介绍
该蠕虫传播的网站使用点击劫持技术,利用大众的猎奇心理进行传播。通过使用样式表精心构造,迷惑用户点击,做跨站请求伪造。
以下为蠕虫传播的主界面截图。
0x02 蠕虫代码分析
蠕虫网页主要分为样式表,js脚本,一个table和内部的iframe三部分构成。
0x03 网页html结构分析
以下为主要html代码
网站首先加载了一张比较有吸引力的照片作为背景,吸引用户的眼球,然后依次使用几个div标签,伪造出进入按钮,并且将需要转发微博的iframe嵌入其中。
网站中的两个按钮的代码如上图所示。
对相似的对象使用相同的class,方便下一步进行页面伪造。主要有:btn,enter,c,qq_outer,qq四个类。
0x04 网页CSS结构分析
CSS代码如下图所示:
分析上图代码,网站确保使用图片背景有效,在table和body中同时设置了background背景属性引用照片。并将图片设置为全屏大小。
然后设置btn div的位置,大小,使其位于最显眼的位置。并且设置hover即鼠标悬浮其上的属性。
最关键的部分,设置iframe嵌入窗体的透明度为全透明。保证用户不会看到。去除其不透明部分,可以看到如下图所示的真实点击按钮。
可以看到,原来的进入其实上面覆盖了透明的发布按钮,用户点击发布便会转发这条微博。
qq_outer这个div的主要作用在于除去多余的iframe,因为qq_outer在btn这个div的内部,限与btn的大小设定,iframe一定不可能显示全部,qq_outer在于将iframe超出btn大小的部分隐藏掉,使用户只能点击这两个按钮。
而qq在qq_outer内部,却包含着iframe,其作用在于调整iframe的位置,使其发布按钮正好处于btn按钮底下的位置。
整个CSS精心设定了每一个div的大小,位置,最后完美伪造出点击劫持的界面。
0x05 网页JavaScript结构分析
以上图示为js代码部分。
改蠕虫的js部分的主要功能为在用户点击进入按钮自动发布微博后打开一个全新的网站,让用户误以为之前提到的有意思的网站就是现在打开的新网站。从而避免被发现,隐藏自身。
分析其功能实现,利用一个每隔30s调用的checkClick 函数来进行不断坚持用户是否进行了点击操作,一旦发现用户点击了发布按钮,则跳转到之前设定好的目标网站。使整个用户访问流程完整可靠,从而达到隐藏自己的目的。
0x06 总结
该CSRF蠕虫作用在于不断发布微博,并没有利用一些可以获取用户信息的接口来获得用户的敏感信息,实际危害较轻,不能盗取用户的信息,如果发现自己被蠕虫攻击后也没有太大危害,把转发的微博删掉即可。这种攻击方式值得学习和研究,通过csrf或者xss配合蠕虫可以最大限度的提高杀伤力。
@xfish,M0nNoey,qiaoguanli
本文章同时发布在本人的个人博客
http://zih.pub,
转载请注明出处
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)