版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://riusksk.blogbus.com/logs/35669222.html
[翻译] 双向跨站(Double Trap XSS)注入分析
作者: Aditya K Sood
译者:riusksk(泉哥:httP://riusksk.blogbus.com)
翻译时间:2008-10-25
本文发表于《安全防线》
漏洞分析
本篇分析介绍了不同领域下的XSS注入攻击,这里没有使用XSS cheatsheat.现在让我们开始详细分析它。本次实例的目标是SecTheory安全咨询站点。这个过程使用了两种不同的方法,这将使一些安全公司受到微创,同时也有利于新的exploitation类型的确立。两者的结果是相同的,只是方式不一样。
安全们通过寻找安全漏洞并利用它来进行网站攻击。我个人总是习惯使用两种方法来踩点:
- URL Banging:在URL中注入输入参数。
2. Form Splitting:在form表单中注入伪造的参数。
当我在站点上逛时并没有找到一些可被发送输入值的URL参数,当我点到最后一页时,出现我最感兴趣的页面——联系我们(Contact Us),它提供了个四个用于联系管理员的基本输入框对象,如图1所示:

图1
下一步是检查form表单输入框中的输入限制,然后再看一看输入框参数。
让我们看一下:
<INPUT TYPE="TEXT" NAME="login" style="width:300px" MAXLENGTH="100"> <div id="contact" align="right"> Your phone number: <INPUT TYPE="TEXT" NAME="number" style="width:300px" MAXLENGTH="100"> <div id="contact" align="right"> Your email address: <INPUT TYPE="TEXT" NAME="email" style="width:300px" MAXLENGTH="100">
通过上面的代码可知输入字符串的可用最大长度是100,这足够了!接下来测试一下输入伪造的参数是否会产生错误,先试试(’),输入下列注入代码:
’<script>alert(document.cookie);</script>
当我在 form applet 中注入这句代码时,并未发现有任何数据被发送到服务端。看来这段代码并没有什么作用,但是记住,永远不要忘了("") ,因为只要你动点脑筋的话,很容易就会发现form表单中的输入值都是如图2所示的形式:

图2
让我们来测试一下这个form表单,打开浏览器并再次输入下面的的代码,接着这次的情况就有点不同了:
’<script>alert("XSS Says :Let Me IN !");</script>’’’’’’’’
我看到的结果如图3所示(译注:这图不够完整,在网上也没找到完整的图片):

图3
这次的注入返回并未完整,只给出其中的一部分代码,查看源代码确实发现了一些有用的信息如图4:

图4
这里给出了关于部分注入的信息,我试了一些单向跨站(Single Trap XSS),但没有用,接着我就决定使用双向跨站(Double Trap XSS)(译注:在网上没有找到关于Double Trap XSS的中文翻译,就暂时翻译成双向跨站)注入,先试着注入代码(如图5):

图5
Double Trap XSS有效了,现在我们就用这样方式进行XSS注入。
让我们试试其它的注入代码:
’<script>alert("XSS");</script>’<script>alert(document.domain)’</script>
注入后显示域名如图6:

图6
再注入以下代码,结果如图7所示:
’<script>alert("XSS");</script>’<a href="telnet://203.197.219.33"><h3>TELNET</h3></a>

图7
可见double trap XSS非常有效,这次分析十分成功,总算没有前功尽弃。
关注
这是一个刚被理解而隐含的严重安全问题。然而,应该认识到它并没有被曝光过任何渗透服务器本身的问题的严重性,到底是什么允许恶意攻击者控制用户与站点之间互动。如果你的站点包含有满足公众需求的所有固定信息,攻击者可以很快地从中获益,可能更为严重的是一个攻击者可以在这种情况下悄悄地改变页面来显示给某个特定用户。
网站中潜在的最为危险的是用户所拥有的各类登陆帐户,以及他们在这里的行为对现实世界的影响,或者取得一些秘密数据.如果你可以取得用户的所有资料,那就不再需要入侵网站获得网站的控制权了,这类安全问题将对站点造成了一系列的威胁。 |