一.基本概念
1.XSS
XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强调的是,XSS不仅仅限于JavaScript,还包括flash等其它脚本语言。根据恶意代码是否存储在服务器中,XSS可以分为存储型的XSS与反射型的XSS。
DOM型的XSS由于其特殊性,常常被分为第三种,这是一种基于DOM树的XSS。例如服务器端经常使用document.boby.innerHtml等函数动态生成html页面,如果这些函数在引用某些变量时没有进行过滤或检查,就会产生DOM型的XSS。DOM型XSS可能是存储型,也有可能是反射型。
2.反射型xss
反射型xss也被称为非持久性xss,是现在最容易出现的一种漏洞。当用户访问一个带有xss代码的url请求时,服务器端接收数据后处理,然后把带有xss代码的数据发送到浏览器,浏览器解析这段xss代码的数据后,最终造成xss漏洞。这个过程就像一次反射,故称为反射型xss。
二.漏洞复现
<?php
$username = $_GET['username'];
echo $username ;
?>
以上是一段简单的GET传参,直接对username字段回显。
在输入的参数后添加以下语句:
?username=<script>alert(123)</script>
如果弹出123的警告框,说明存在跨站漏洞。
三.漏洞威胁
反射型xss属于低危漏洞,但也不可轻视黑客对于反射型xss的利用。
例如 http://www.navi.org/xss.php 存在xss反射跨站漏洞,那么攻击者的步骤可能如下:
1.用户珩少是网站www.navi.org的忠实粉丝,此时正在泡论坛看信息。
2.攻击者发现www.navi.org/xss.php存在反射型xss漏洞,然后精心构造js代码,此段代码可以盗取用户cookie发送到指定站点www.attack.com。
3.攻击者将带有反射型xss漏洞的url通过站内信发送给用户珩少,站内信为一些诱惑信息,目的是为了让用户珩少点击链接。
4.用户点击了带有xss漏洞的url,被盗取了Cookie,那么攻击者就可以以用户珩少的cookie登陆http://www.navi.org了。