赞
踩
一、简介
什么是XSS?
百度百科的解释: XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。
它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制,获取用户的一些信息。
二、分类
xss攻击可以分成两种类型:
1.非持久型攻击
2.持久型攻击
非持久型xss攻击:顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。
持久型xss攻击:持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。
也可以分成三类:
反射型:经过后端,不经过数据库
存储型:经过后端,经过数据库
DOM:不经过后端,DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞,dom - xss是通过url传入参数去控制触发的。
三、原理
1.反射型
新建一个xss.php文件并加入以下代码:
部署好这个文件,访问http://localhost/xss.php,直接输入一个js代码,比如<script>alert('hack')</script>,
之后点击test:
我们输入的HTML代码被执行了。用Firebug查看,我们输出的内容直接插入到了页面中,解释为<script>标签。
反射型 XSS 的数据流向是:浏览器 -> 后端 -> 浏览器。
2.存储型
把xss.php内容改为(同时数据库中需要配置相应的表):
用户输入的内容还是没有过滤,但是不直接显示在页面中,而是插入到了数据库。
新建show.php,内容为:
先创建一个数据库xss,创建temp表
然后访问xss.php,像之前一样输入 HTML 代码
点击test,点击之后却发现没有任何动静,但事实上,我们的数据已经插入到了数据库中。
当我们访问show.php查询这个值的时候,代码就会被执行。
存储型 XSS 的执行位置通常不同于输入位置。我们可以看出,存储行 XSS 的数据流向是:
浏览器 -> 后端 -> 数据库 -> 后端 -> 浏览器。
3.dom-xss
把xss.php内容改为
DOM-XSS 的数据流向是:URL-->浏览器
总结: 在易用上,存储型XSS > DOM - XSS > 反射型 XSS。
注:反射型xss和dom-xss都需要在url加入js代码才能够触发。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。