利用Session Fixation漏洞攻击WAP网站

by kxlzx http://www.inbreak.net

本文以discuz的Session Fixation漏洞为例,讲一下使用Session Fixation攻击WAP网站。

Session Fixation漏洞,意思是web应用程序在用户登录后,没有销毁或重置当前session id,一旦用户的session id在登录前曾经被攻击者获取,登录后,该session就会有效,攻击者就可以利用session id伪装登录用户。

在我的一片文章里,有详细利用方法和漏洞说明:

《Session Fixation 攻防实战》

http://www.inbreak.net/?action=show&id=130

后来cnqing在SessionIE3.31中加入了这个新的功能,专门用于Session Fixation漏洞攻击

http://www.inbreak.net/?action=show&id=131

不再对这个漏洞做介绍,假设大家看过以上两篇文章,或者对Session Fixation攻击有所了解。

其实我一直感觉这个漏洞是比较鸡肋的,因为利用条件有限,我写了前面的文章后,也从来没有利用这个漏洞攻击过。

然而到了WAP时代,发现这种攻击的利用方式会变得容易,并且变得极其猥琐。

前几天我的文章《浅谈WAP网站安全》,已经介绍了WAP的一些攻击和防御,大多都是围绕sid来进行的,本文可以看作是上一篇的续集,我有讲过,我会继续研究WAP的一些东西,并期待与大家交流。

就以discuz7.2的wap功能为例,说明一个sid的生成与销毁。

首先访问这个网站。

http://bbs.ecshop.com/wap/index.php

你会看到页面所有的链接后面,都跟上了一个sid,就像

http://bbs.ecshop.com/wap/index.php?action=forum&fid=72&sid=2iu2pf

当我们访问了一次discuz的wap页面后,就会给所有的链接分配一个sid,以后我们的访问,都和这个sid绑定,这和session是同一个道理。

于是我们点登录,

http://bbs.ecshop.com/wap/index.php?action=login&sid=2iu2pf

登录成功后,链接中的sid仍然没有变,这说明它存在Session Fixation漏洞。

利用方式呢?难道我们先在wap这里搞出来一个xss?

在discuz中,当我们打开wap页面,就有了sid,这个sid会一直被服务器认可,即使我们的IP地址变换,它也不会变。

如果我们有了sid后,不登录,而是把这个带有sid的链接发给用户,让用户登录,会发生什么呢?于是没有xss、没有url redirect、没有csrf,一样获取了用户身份!

来到刚才的页面,使用opera打开http://bbs.ecshop.com/wap/index.php

打开后这个页面不要动。

复制页面上的一个链接,发到论坛上。


给力啊!

测试wap

[url]http://bbs.ecshop.com/wap/index.php?sid=1oALS7[/url]

然后用手机访问论坛,打开这个链接,登录用户。此时这个sid已经和一个登录用户绑定了,攻击者为用户“设置”了sid。

回到pc上,刷新opera页面,变成了登录状态,这比xss简单多了!

由于discuz论坛是发的自己的网址,参数也没有什么邪恶的,所以也同时过了它的“非本域名弹出安全url确认”的安全验证。

这个攻击的思想,是“为用户定制session”,而不是传统的“获取用户session”。Discuz只是一个例子,其他某些大型wap网站也是存在的。

其实这个漏洞的发现,是这样一个过程,我在“查看”某搜索引擎时,突然想到了一种猥琐的攻击方式。搜索引擎在抓取时,服务器是会给它分配sid的,如果在搜索后登录了,其他用户搜索后,点进去会发现自己是登录状态,因为搜索引擎展示的sid是同一个。

但是实际应用时,却发现这个sid早就过期了,所以还是需要互动的。从这里就有了“我不登录,发给用户登录”的思想。由于自我感觉利用漏洞的思路新颖,以为是新漏洞,然后兴奋的发到阿里的邮件群里,结果就被某不愿透露姓名的同事鄙视了,“这不是新漏洞,而是Session Fixation”,我一想,果然是哦。。。

发表评论?

2 条评论。

  1. 貌似不错,思路很独特~

  2. 对博主一系列wap网站安全方面的文章比较感兴趣。学习一下,谢谢了。

发表评论