本文提出了一种绕过XSS安全机制的新型方法,这种技术由三个阶段组成:确定Payload结构、探测和混淆处理。首先,我们需要针对给定的上下文环境,确定各种不同的Payload结构以达到最优的测试效果。接下来就是探测,这里涉及到根据目标所实现的安全机制来进行各种字符串测试,并分析目标的响应数据以便基于分析结果来做出安全假设。最后,根据分析结果来判断是否要对Payload进行混淆处理或结构调整。

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

全文使用{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、 标签内:

2、 标签外:Youentered $input

标签外

在这种上下文场景中,主要字符“

1、

2、

3、x

4、

5、

6、

如果上述方式均无法探测成功,则说明目标站点部署的安全机制无法被绕过。这种方式的假阳性率非常高,因此不鼓励使用。如果上述探测方式有一个可行,那么可用来构造Payload的机制就非常多了。

Payload机制#1

,//,Space,Tab,LF}

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

1、

2、

3、

4、

5、

6、- 如果无法通过,则为[\s\n\r+]+;

7、

这个组件(例如事件处理器)是Payload结构中最关键的部分。通常,匹配它的是常规正则表达式(例如“on\w+”)或黑名单(例如“on(load|click|error|show)”)。第一个正则表达式非常严格,很难绕过,而基于黑名单的模式可以通过不常用的事件处理器来绕过。安全机制的实现类型可以通过下面两种简单的方法来识别:

1、

2、

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

onauxclickondblclickoncontextmenuonmouseleaveontouchcancel

常用的Payload结束符如下:

Payload机制#2

使用了标签的Payload可以利用下面的Payload机制来构建:

,//,Space,Tab,LF}

Payload机制#3

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

明文结构如下:

,//,Space,Tab,LF}

混淆处理后的Payload结构如下:

,//,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:click

绕过技术:非空格填充

WAF名称:Wordfence

Payload:click

绕过技术:数字字符编码

WAF名称:Barracuda

Payload:click

绕过技术:数字字符编码

WAF名称:Akamai

Payload:click

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

WAF名称:Comodo

Payload:click

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

WAF名称:F5

Payload:click

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

WAF名称:ModSecurity

Payload:

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

WAF名称:dotdefender

Payload:

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

参考资料

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

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

绕过html标签,巧妙绕过WAF的XSS技巧相关推荐

  1. 绕过WAF的XSS语句

    吐血整理转载请说明. 原文收集于OWASP XSS_Filter_Evasion_Cheat_Sheet 正文: XSS JavaScript injection: <SCRIPT SRC=ht ...

  2. xss绕过字符过滤_XSS绕过实战练习

    前言 写这篇博文起源来自于一次网络安全实验课,在实验虚拟环境里有一个xss挑战,估计是搬别人的xss挑战进来,我觉得挺有意思,就记录一下.有些关卡不能再虚拟环境实践,我在自己物理机上找到那个xss挑战 ...

  3. 00截断上传绕过_上传绕过总结

    欢迎各位关注我的专栏,在以后的时间里,我将分享更多技术,在这里你能学到很多知识和姿势.自我介绍:高级安全研究员|擅长Python\PHP\JAVA审计;SONRT规则;etc.|陈小兵著<SQL ...

  4. php常见后缀绕过,文件包含漏洞(绕过姿势)

    文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把这个漏洞利用好却不那么容易,其中有很多技巧,也有很多需要掌握的知识.俗话说,知己知彼方能百战不殆,因此 ...

  5. 通过cookie绕过验证码登录(绕过验证码)

    通过cookie绕过验证码登录(绕过验证码) #!/user/bin/env python3 # -*- coding: utf-8 -*- from selenium import webdrive ...

  6. android 分享微信 不审核,ShareSDK Android 微信分享 绕过审核与不绕过审核

    首先,微信在android平台有两种方式:一种是绕过审核分享,一种是不绕过审核分享. 绕过审核和不绕过审核的对比图如下: 1.微信好友对比图: 绕过审核分享分享给微信好友时看到的只是图片文件,显示的是 ...

  7. 【XSS技巧拓展】————4、浅谈跨站脚本攻击与防御

    跨站脚本简称xss(cross-site scripting),利用方式主要是借助网站本身设计不严谨,导致执行用户提交的恶意js脚本,对网站自身造成危害.xss漏洞是web渗透测试中最常见而又使用最灵 ...

  8. GOOGLE HACKS巧妙使用网络搜索的技巧和工具(第二版)已经出版(上)--IT man

    Csdn-Blog <script language="javascript" src="http://www.023rcsc.com/count/count2.a ...

  9. 《GOOGLE HACKS巧妙使用网络搜索的技巧和工具(第二版)》

    全书分为网页.高级网页.图像.新闻组和论坛.附加功能.Gmail.广告.Web管理和Google编程9章,不仅阐述了用Google搜索的方方面面,而且能帮你最大程度地挖掘Google的潜能,即挖掘出每 ...

最新文章

  1. 有你认识的么?新鲜出炉!云+社区2020年度优秀讲师TOP作者榜单!
  2. BCH钱包的“现金”支持比特币现金NFC交易
  3. BMP图片的解析,关于压缩方式
  4. [SCOI2005]扫雷
  5. 数据可视化必修课 - 图表篇
  6. 赚票子、调身子、养孩子,陌陌的中年人生活有序展开
  7. Psych101(part7)--Day7
  8. Teams的Incoming Webhook
  9. email 添加附件 java_Java发送email 带附件 | 学步园
  10. 欧菲光:拟对子公司江西晶超增资9亿元
  11. 关于周考的总结与反思
  12. 【AOP】面向切面谈恋爱(二)| 学废了AOP,他最终失去了爱情
  13. uboot dnw 源码分析
  14. WPT2F42-6/TR PNP双极功率晶体管WILLSEM
  15. BIM软件汇总和信息互用
  16. CentOS radius 安装
  17. (1)1999~2021 年中国城市统计年鉴面板数据(含地级市面板、县级市面板和主要指标)(2)香港统计年刊(3)第一到第七次的人口普查数据(4)全国省市县-五六七普人口数据(5)国际统计年鉴
  18. 安卓10 charles抓Https包 和 配置
  19. 【轻微课学画笔记】关于绘画中的一点透视
  20. nginx反向代理404错误

热门文章

  1. go 并发安全map 分段锁实现
  2. kubernetes入门到精通(二):k8s部署Tomcat集群,基于NTFS协议的文件集群共享,Service提供负载均衡,端口转发工具Rinetd配置外部访问
  3. HotSpot源码(二):Java与C语言对比
  4. netty系列之:netty中的懒人编码解码器
  5. 密码学系列之:memory-hard函数
  6. Java高新技术笔记:反射、多线程、泛型、枚举、javaBean、代理
  7. Leet Code OJ 118. Pascal's Triangle [Difficulty: Easy]
  8. 一张大图总结数据结构与算法
  9. ES6新增数据类型符号(1):普通符号
  10. 【图解】java8性能对比_Java 11 究竟比 8 快了多少?