跨站脚本攻击XSS
XSS简介
对客户端进行攻击(另一种跨站请求伪造也是针对客户端的)。
- 跨站脚本(cross site script)是为了避免与样式CSS混淆,所以简称为XSS。
XSS是一种经常出现在web应用中的计算安全漏洞,也是web中最主流的攻击方式。XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
XSS攻击的危害:
- 盗取各类用户账号,如机器登陆账号、用户网银账号、各种管理员账号
- 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
- 盗窃企业重要的具有商业价值的资料
- 非法转账
- 强制发送电子邮件
- 网站挂马
- 控制受害者机器向其他网站发起攻击
原理解析
最常见的有两类:反射型XSS(诱惑用户去点击)和存储型XSS(用户只要点击页面就中招,危害较大!!)
1.反射型XSS
<script>alert('xss')</script>
2.存储型XSS
XSS主要原因:过于信任客户端提交的数据!
- 反射型XSS(Reflected XSS),又称为非持久性跨站点脚本攻击,最常见的类型的XSS。漏洞产生的主要原因是攻击者注入的数据反应在响应中。一个典型的非持久性XSS包含一个带XSS攻击向量的连接(即每次攻击需要用户的点击)。
- 存储型XSS(Stored XSS),又称为持久性跨站点脚本,一般发生在XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。每当用户打开浏览器,脚本执行。持久的XSS相比非持久性XSS攻击危害性更大,因为每当用户打开页面,查看内容时脚本将自动执行。谷歌的orkut曾遭受到XSS。
构造XSS脚本
常用HTML标签
<iframe> 该元素会创建包含另外一个文档的内联框架(即行内框架)。
<textarea> 该标签定义多行的文本上输入控件。
<img> 该元素向网页中嵌入一幅图像
<scriipt> 该标签用于定义客户端脚本,比如Javascript。
该标签既可以包含脚本语句,也可以通过src属性指向外部脚本文件。
必需的type属性规定脚本的MIME类型。
Javascript的常见应用时图像操作、表单验证以及动态内容更新。
常用的Javascript方法
alert 该方法用于显示带有一条指定消息和一个确认按钮的警告框
window.location 对象用于获得当前页面的地址(URL),并把浏览器重定向到新的页面。
location.href 返回当前显示的文档的完整URL
onload 一张页面或一副图像完成加载
onsubmit 确认按钮被点击
onerror 在加载文档或图像时发生错误
构造XSS脚本
弹窗警告
此脚本实现弹框提示,一把作为漏洞测试或者演示使用,类似SQL注入漏洞测试中的单引号,一旦此脚本能职系那个,也就意味着后端服务器没有对特殊字符做过滤<>/'.这样就可以证明这个页面位置存在了XSS漏洞
<script>alert('xss')</script>
<script>alert(document.cookie)</script>
页面嵌套
<iframe src=http://www.baidu.com width=