软件测试之跨站脚本执行漏洞详解

发表于:2009-04-21来源:作者:点击数: 标签:软件测试漏洞脚本详解
由于目前介绍跨站脚本执行漏洞的资料还不是很多,而且一般也不是很详细,所以希望本文能够比较详细的介绍该漏洞。由于时间仓促,水平有限,本文可能有不少错误,希望大家不吝赐教。 声明,请不要利用本文介绍的任何内容,代码或方法进行破坏,否则一切后果自
由于目前介绍跨站脚本执行漏洞的资料还不是很多,而且一般也不是很详细,所以希望本文能够比较详细的介绍该漏洞。由于时间仓促,水平有限,本文可能有不少错误,希望大家不吝赐教。

  声明,请不要利用本文介绍的任何内容,代码或方法进行破坏,否则一切后果自负!

  【漏洞成因】
  原因很简单,就是因为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. 输入用户名“<h1>”,提交,发现服务器返回信息中包含了用户提交的“<h1>”。
  3. 分析抓包数据,得到实际请求:
  http://www.5460.net/txl/login/login.pl?username=<h1>&passwd=&ok.x=28&ok.y=6
  4. 构造一个提交,目标是能够显示用户Cookie信息:
  http://www.5460.net/txl/login/login.pl?username=<script>alert(document.cookie)</script>&passwd=&ok.x=28&ok.y=6
  

原文转自:http://www.ltesting.net