标题:
[推荐]跨站脚本执行漏洞详解
[打印本页]
作者:
体会
时间:
2004-3-31 07:59
标题:
[推荐]跨站脚本执行漏洞详解
原作者不详,因为太多人都写过 【前言】 本文主要介绍跨站脚本执行漏洞的成因,形式,危害,利用方式,隐藏技巧,解决方法和常见问题(FAQ),由于目前介绍跨站脚本执行漏洞的资料还不是很多,而且一般也不是很详细,所以希望本文能够比较详细的介绍该漏洞。 声明,请不要利用本文介绍的任何内容,代码或方法进行破坏,否则一切后果自负! 【漏洞成因】 原因很简单,就是因为CGI程序没有对用户提交的变量中的HTML代码进行过滤或转换。 【漏洞形式】 这里所说的形式,实际上是指CGI输入的形式,主要分为两种: 1.显示输入 2.隐式输入 其中显示输入明确要求用户输入数据,而隐式输入则本来并不要求用户输入数据,但是用户却可以通过输入数据来进行干涉。 显示输入又可以分为两种: 1.输入完成立刻输出结果 2.输入完成先存储在文本文件或数据库中,然后再输出结果 注意:后者可能会让你的网站面目全非!:( 而隐式输入除了一些正常的情况外,还可以利用服务器或CGI程序处理错误信息的方式来实施。 【漏洞危害】 大家最关心的大概就要算这个问题了,下面列举的可能并不全面,也不系统,但是我想应该是比较典型的吧。 1.获取其他用户Cookie中的敏感数据 2.屏蔽页面特定信息 3.伪造页面信息 4.拒绝服务攻击 5.突破外网内网不同安全设置 6.与其它漏洞结合,修改系统设置,查看系统文件,执行系统命令等 7.其它 一般来说,上面的危害还经常伴随着页面变形的情况。而所谓跨站脚本执行漏洞,也就是通过别人的网站达到攻击的效果,也就是说,这种攻击能在一定程度上隐藏身份。 【利用方式】 下面我们将通过具体例子来演示上面的各种危害,这样应该更能说明问题,而且更易于理解。为了条理更清晰一些,我们将针对每种危害做一个实验。 为了做好这些实验,我们需要一个抓包软件,我使用的是Iris,当然你可以选择其它的软件,比如NetXray什么的。至于具体的使用方法,请参考相关帮助或手册。 另外,需要明白的一点就是:只要服务器返回用户提交的信息,就可能存在跨站脚本执行漏洞。 好的,一切就绪,我们开始做实验!:) 实验一:获取其他用户Cookie中的敏感信息 我们以国内著名的同学录站点5460.net为例来说明一下,请按照下面的步骤进行: 1.进入首页http://www.5460.net/ 2.输入用户名“
”,提交,发现服务器返回信息中包含了用户提交的“
”。 3.分析抓包数据,得到实际请求: http://www.5460.net/txl/login/login.pl?username=
&passwd=&ok.x=28&ok.y=6 4.构造一个提交,目标是能够显示用户Cookie信息: http://www.5460.net/txl/login/login.pl?username=&passwd=&ok.x=28&ok.y=6 5.如果上面的请求获得预期的效果,那么我们就可以尝试下面的请求: http://www.5460.net/txl/login/login.pl?username=&passwd=&ok.x=28&ok.y=6 其中http://www.notfound.org/info.php是你能够控制的某台主机上的一个脚本,功能是获取查询字符串的信息,内容如下: &passwd=&ok.x=28&ok.y=6 http://www.5460.net/txl/login/login.pl?username=%3C%68%31%3E&passwd=&ok.x=28&ok.y=6 你觉得哪个更有隐蔽性?! 2.隐藏在其它对象之下 与直接给别人一个链接相比,你是否决定把该链接隐藏在按钮以下更好些呢? 3.嵌入页面中 让别人访问一个地址(注意这里的地址不同于上面提到的URL),是不是又要比让别人按一个按钮容易得多,借助于Iframe,你可以把这种攻击变得更隐蔽。 4.合理利用事件 合理使用事件,在某些情况上可以绕过CGI程序对输入的限制,比如说前些日子的SecurityFocus的跨站脚本执行漏洞。 【注意事项】 一般情况下直接进行类似之类的攻击没有什么问题,但是有时CGI程序对用户的输入进行了一些处理,比如说包含在’’或””之内,这时我们就需要使用一些小技巧来绕过这些限制。 如果你对HTML语言比较熟悉的话,绕过这些限制应该不成问题。 【解决方法】 要避免受到跨站脚本执行漏洞的攻击,需要程序员和用户两方面共同努力: 程序员: 1.过滤或转换用户提交数据中的HTML代码 2.限制用户提交数据的长度 用户: 1.不要轻易访问别人给你的链接 2.禁止浏览器运行java script和ActiveX代码 附:常见浏览器修改设置的位置为: Internet Explorer: 工具->Internet选项->安全->Internet->自定义级别 工具->Internet选项->安全->Intranet->自定义级别 Opera: 文件->快速参数->允许使用Java 文件->快速参数->允许使用插件 文件->快速参数->允许使用java script 【常见问题】 Q:跨站脚本执行漏洞在哪里存在? A:只要是CGI程序,只要允许用户输入,就可能存在跨站脚本执行漏洞。 Q:跨站脚本执行漏洞是不是只能偷别人的Cookie? A:当然不是!HTML代码能做的,跨站脚本执行漏洞基本都能做。 【附录】 下面是一些跨站脚本执行漏洞的例子: http://v7.51.net/exploites/exgb.txt http://v7.51.net/exploites/ichat2.txt http://v7.51.net/exploites/bbs2www.txt http://v7.51.net/exploites/5460II.txt http://v7.51.net/exploites/sf.txt http://v7.51.net/exploites/phpmyadmin.txt
欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/)
Powered by Discuz! 7.2