xss简单渗透

xss渗透测试基本思路

在谈论具体的xss攻击之前,我们一定要清楚地知道我们的xss所处的位置在哪以及我们的xss的类型,也就是我上面说的xss攻击场景。反射型的xss比起持久型的xss来效果是不同的,访问量大的xss点与访问量小的xss点是不同的,发生在http://www.google.com和发生在https://www.google.com的xss点是不同的(你应该知道为什么不同),发生在前台的xss点与发生在后台的xss点同样不同。分析应用程序我们可以很快确认我们的xss点的场景,这在开放的程序里比较好确认,后面我们将讲述如何在一个黑盒的环境下分析出攻击的场景。

在确认好xss点的场景之后,我们可以根据我们的目的来决定后续的攻击方向和思路。如果发生的点是一个持久型的并且访问量比较大,你可以依据自己的喜好是否来引起一次混乱;如果你有幸发现发生的点是在管理员的后台或者你可以通过某些方式和管理员的后台进行交互,那么你可以考虑是否需要通过窃取管理员的cookie来尝试进入后台,到目前为止,窃取cookie依然是最有效的攻击方式,尽管某些xss攻击平台可以演示很炫的攻击效果(前提是你的目标会在一个页面停留2个小时,这种情况比较少发生);如果发生的点是一款开源的或者所有数据请求你都可以分析的程序,你可以考虑利用xss做一些数据提交,但是前提是依赖于你的xss点发生的场景;或者大气点,有浏览器0day的直接上浏览器0day吧,成本有点高,看收获值不值得了,目前为止貌似这么说的比这么做的多:)

攻击方向和思路确定之后后面的就是一些常规的体力活了,编写攻击代码,获取最终想要的东西,但是这过程可能并不是一帆风顺,甚至需要反复的调试攻击代码以保证最终的效果跟预期的一致。

一次黑盒的xss渗透测试

因为某些原因我们很想测试下国内一个比较有名的评论网站,我们简单测试常规的安全漏洞之后我们没有发现什么有意思的如SQL注射之类的安全漏洞,甚至我们还没有办法找到它的后台,但是我们发现了他们的一个xss漏洞,比较悲观的是这是一个反射型的xss漏洞,所以我们不能直接把他页面黑了(如果是持久类型的xss,攻击目的就是破坏或者测试的话就可以考虑这么做,当然,如果是为了YY也是可以的)。我们不要YY,我们要shell。通过对站点的分析我们发现系统有个投稿功能,通过审核之后就可以发表。既然会有审核那么就意味着应该有后台之类的东西,同时我们实际上获得了一个和管理员交互的平台,因为我们写的内容他们肯定会看。于是我们将编写好的xss exploit url写到文章里,并且声称在他们的站点内发现了一个黄色的文章。这个xss exploit url会请求我的某个php文件,这个文件将记录所有请求的referer,cookie,ip,浏览器类型和当前的location。等待几十分钟之后,我们顺利获得了这些基础信息,但是我们发现这里的location和referer只能获得我们的xss exploit url,这跟我们希望获得的管理员后台并不一致。分析管理员在后台的操作我们大概可以知道他是点击连接来访问这个url的,那么我们是可以获得opener窗口的一些信息的,包括location等等。在获得location之后我们还是很失望,这只是一个内容展现的窗口,并不是后台的真正管理的地址,后台应该是有一个iframe类的东西,于是我们再次通过top.location获得后台的地址,这次对了,在我们的面前出现了后台登陆的地址,后面的利用窃取的cookie进入后台很可行哦:)但是我们在尝试利用cookie进入后台时依然出了问题,我们的cookie看起来并不有效,这是为什么呢?后来几次测试之后才发现程序做了cdn,我们访问到的登录地址并不是cookie所在的服务器,做了个host之后我们顺利登录进后台,后台界面出来的一瞬间让人感觉真是幸福:)后面的就简单,找后台的上传,传webshell,涂首页:)

很明显,在这样一个场景下如果说到xss来做蠕虫肯定是不现实的,对于一个评论网站来说钓鱼也没有什么实际意义,对一个连用户机制都没有或者有用户机制但是用户交互比较低的应用程序来说偷取用户cookie同样也没有价值。而真正攻击的过程中也不是简单的说说那么容易,应用程序有很多机会可以防止这种攻击的发生,包括cookie和ip绑定,cookie做httponly,后台设置登录ip限制等等(不要跟我说那些看起来很神仙可以反弹的xss工具,这就跟物理学里面的理想环境里的实验一样不靠谱)。

在对未知的程序进行测试时,可能某些xss点发生在后台等我们未知的地方,而如果我们直接提交敏感的语句如<script>alert()</script>等过去的时候,我们是无法知道程序的返回结果的,而且一旦程序对输入做了处理,在后台出现乱码等字符时,很容易引起别人的警觉。这个时候我们引入类似于渗透测试中经常使用的扫描的手法,在xss渗透测试时我们可以利用

一次白盒的xss渗透测试

因为某些原因我们想黑掉某个人的blog,该blog系统的源码我们可以从网上获取到,在简单审核一些代码之后我们没有发现明显的SQL注射之类的漏洞,但是发现了几个非常有意思的xss漏洞,该漏洞同样是反射型的xss,但是因为程序的原因可以使得exploit url变形得非常隐蔽。由于程序开源,我们通过本地搭建该环境可以轻松构造出可以加管理员,可以在后台写shell的小型exploit,并且将exploit通过远程的方式隐藏在前面的exploit url里。通过分析该程序发现在评论回复时只有登录才可以回复,而目标经常性回复别人的评论,所以我们发表了一个评论并且将exploit url写在里面,通过一些手段诱使目标会访问该url。在等待几个小时之后,我们看到该评论已经被管理员回复,那么我们的exploit也应该是被顺利执行了。上后台用定义好的账户登录,很顺利,shell也已经存在。OK,最后就是涂首页:)

  对于这部分没有什么特别好说的,因为所有的数据和逻辑都是公开的,但是非常重要的一点依然是我们的场景。在某些应用程序里,因为前台的交互比较多,发生xss的点是前台,大部分用户的操作也都是前台发生的,但是这部分的权限非常没有意义,我们往往需要特定目标先访问后台,然后从后台访问我们的xss点才能获取相应的权限。这部分的攻击就变得比较困难了,而上面的攻击里,由于目标肯定会先访问后台然后访问该xss点,所以xss变得有趣多了。

总结

xss的利用是一件非常有意思的事情,甚至可以独立于xss的查找成为一门学问,最关键的一点是所有的xss都不要脱离场景,脱离场景地谈论漏洞很不负责任。我给出的例子都是比较简单的,希望可以与大家更多地讨论更多的有意思的攻击。

 

分享到QQ空间

Tags:
相关日志:
评论: 3 | 查看次数:
回复 位于3楼的 醉青衫 说道:
[2010-6-10 22:21:14]
我举报,上面有小广告
回复 位于2楼的 陆少博 说道:
[2010-6-5 14:31:16]
XSS渗透,没有研究过。以前玩过3389
回复 位于1楼的 27 说道:
[2010-6-4 22:59:51]
这个……深了点
发表评论
昵 称:
邮 箱:
主 页:
内 容: