使用CRLF绕过XSS

时间:2018-10-31 18:26:31

标签: javascript xss

最近我看到一些人发布了有关他们的xss多晶硅锭的信息,

我遇到一个问题,每个人都在谈论使用crlf绕过XSS。

我不知道如何使用CRLF绕过XSS过滤器。

请让我知道。

谢谢。

1 个答案:

答案 0 :(得分:0)

为了给您更好地解释,我将举一个例子。 但是一般的想法是CRLF字符由服务器端语言(例如PHP)解释,但是被HTML丢弃为空格,这将使您有可能绕过服务器端过滤器(因为这不是它们阻止的内容) )并扔进DOM,然后在DOM中或多或少地将其删除CRLF字符并执行有效负载。

示例:

<iframe src="{$user_input}"></iframe>

让我们想象一下,我们将用户输入带到可以找到变量{$user_input}的地方。您可能已经意识到注入到iframe源中的输入是危险的,因为攻击者可以输入javascript:alert(0)作为输入并接收警报。随意尝试一下,您会看到的。

因此,让我们想象一下,开发人员听说有人正在使用此漏洞在其网站上获取XSS。他们决定创建一条规则,在规则中输入javascript:,然后再输入源。现在有3种潜在的方式来获取XSS。

首先是做类似jAvAsCrIpT:alert(0)的事情。如果替换方法区分大小写,那么它将起作用。

第二种方法是尝试类似的操作:javajavascript:script:alert(0)。这也将起作用,因为它将仅剥离javascript:,而将其保留为javascript:alert(0)

第三种也是最后一种方法(至少可以想到,可能还有更多的方法)是使用CRLF /换行符。您可以执行以下操作:java%0a%0dscript:alert(0),它是URL编码的CRLF字符(%0a%0d)。这将绕过它,因为PHP认为它实际上不是javascript:,而HTML会将其读取为属性值(src)中的空格,而忽略了回车符。