探寻如何绕过WAF的XSS检测机制-黑客接单平台

一、前语 本文提出了一种清晰界说的办法,即通过勘探假定出检测歹意字符串的规矩并编写Payload,来绕过跨站脚本进犯(XSS)的安全防备机制。咱们提出的办法共包含三个阶段:确认Payload结构、勘...

一、前语 本文提出了一种清晰界说的办法,即通过勘探假定出检测歹意字符串的规矩并编写Payload,来绕过跨站脚本进犯(XSS)的安全防备机制。咱们提出的办法共包含三个阶段:确认Payload结构、勘探以及混杂。 确认指定上下文的各种Payload结构,为咱们供给了最佳的测验思路。勘探的下一个阶段,便是针对方针的安全机制测验各种字符串,并剖析方针的呼应,然后依据剖析成果做出假定。 最终,假如需求,能够对Payload进行含糊处理和其他调整。本文假定各位读者现已把握XSS、HTML和JavaScript的相关常识。在整篇文章中,运用{string}来表明Payload计划的组成部分,运用{?string}表明可选的组成部分。首要字符(Primary Character)是指有必要包含在Payload中的字符。主张在运用URL不安全字符(例如:+和&)之前,对其先进行URL编码。在勘探时,应该运用无害的字符串,而不是{javascript}。 二、简介 跨站脚本缝隙(XSS)是最常见的Web应用程序缝隙之一。能够通过整理用户输入、完结依据上下文的转义后输出、正确运用文档目标模型(DOM)、施行恰当的跨源资源共享(CORS)战略和其他安全实践,来完结对该类型缝隙的防备。虽然这些预防措施现已成为揭露的常识,但许多安排还会运用Web应用程序防火墙(WAF)或自界说过滤器,作为防备XSS的双保险,以维护Web应用程序免受人为缝隙或新发现的进犯前言所引进的缝隙的运用。虽然WAF的各大厂商仍在测验引进机器学习,但正则表达式仍然是现在最常用的检测歹意字符串的办法。在本文中,咱们将评论一些与常见WAF所运用正则表达式不匹配的XSS Payload结构办法。 三、HTML上下文 当用户输入反射在网页的HTML代码中时,咱们称其在HTML上下文中。HTML上下文能够进一步依据反射的方位,划分红子上下文。 · 内部标签: · 外部标签:You entered $input 3.1 外部标签 针对这一上下文,首要的字符便是 · · · x · · · 假如安全机制不答应此类勘探机制,那么就不能完结绕过。由于误报率较高,因而不该发起在WAF上选用这种限制性规矩。 假如上述任何勘探未被阻挠,那么能够运用多种Payload计划来结构Payload。 3.1.1 Payload计划1 ,//,Space,Tab,LF} 在找到{tag}的恰当值后,下一步是猜想正则表达式用于匹配标签和Event Handler之间的过滤器。能够运用下面的勘探办法: · · · · · · – 假如失利,正则表达式为[snr+]+ · 该组成部分(即Event Handler)是Payload中最要害的部分之一。它一般与onw+这样的正则表达式,或on(load|click|error|show)这样的黑名单相匹配。第一个正则表达式是十分严厉的,无法被绕过。但第二种黑名单类型办法一般能够凭借比较不常用的Event Handler完结绕过,这些Event Handler或许不在黑名单之中。咱们能够通过两个简略的办法来辨认所运用的办法类型: · · 假如正则表达式是onw+,那么就无法绕过,由于一切Event Handler都以on最初。面临这种状况,咱们应该持续下一个Payload计划。假如正则表达式遵从黑名单的办法,则需求查找未列入黑名单的Event Handler。假如一切Event Handler都被列入黑名单之中,则应持续履行下一个Payload计划。 依据我对WAF的研讨经历,我发现下列几个Event Handler一般会在黑名单中缺席: onauxclick ondblclick oncontextmenu onmouseleave ontouchcancel 与=相关的过滤器测验进程,相似于前面所评论的进程,而且仅当安全机制阻挠 下一个组成部分是要履行的JavaScript代码。这是Payload中的活动部分,但不需求对用于匹配它的正则表达式进行假定,由于JavaScript代码能够是恣意代码,因而无法预先界说出它的固定办法并进行匹配。 此刻,Payload的一切组成部分都现已完结,只需求封闭Payload。这能够通过以下办法来完结: 应该留意的是,HTML标准中答应这样的办法,这意味着,只需有一个HTML标签,例如“”便是有用的。HTML标签的这一特点,答应进犯者能够通过上述办法完结对HTML标签的注入。 3.1.2 Payload计划2 ,//,Space,Tab,LF} 为了测验过滤器与完毕字符串,咱们选用了与上一种计划相似的办法。有必要留意的是,?能够在URL的结尾运用,来代替完毕标签。当读取到?字符时,都会将其视为URL的一部分,直至遇到下一个>。假如运用标签,很或许会被大多数安全规矩检测到。 运用标签的Payload,能够运用相似的Payload计划来制造: ,//,Space,Tab,LF} 3.1.3 Payload计划3 这种Payload计划有两种办法,分别是原型和通过混杂后的变体。 原型一般与办法相匹配,例如:href[s]{0,}=[s]{0,}javascript:,其结构如下: ,//,Space,Tab,LF} 通过混杂后的变体具有以下结构: ,//,Space,Tab,LF} 这两个变体之间的明显差异是{special}组成部分以及{quote}。{special}指的是字符串JavaScript的混杂后版别,能够运用换行符和水平制表符对其进行混杂,如下所示: j%0aAv%0dasCr%09ipt: J%0aa%0av%0aa%0as%0ac%0ar%0ai%0ap%0aT%0a: J%0aa%0dv%09a%0as%0dc%09r%0ai%0dp%09T%0d%0a: 在某些状况下,数字字符编码也可用于躲避检测。能够运用十进制或十六进制。 Javascript: javascript: 明显,假如有需求,这两种混杂技能能够一同运用。[1][2][3]黑客接单网

  • 发表于 2021-04-17 11:37
  • 阅读 ( 270 )
  • 分类:互联网

0 条评论

请先 登录 后评论
王者
王者

724 篇文章

你可能感兴趣的文章

相关问题