永远不要相信弹出窗口

在网站上进行一些错误查找(实际上,在这种情况下,这只是一个负责任的披露)时,我输入了XSS有效内容作为URL中的子目录,以查看它是否以及如何反映在源代码中。这是我手动测试XSS网站时要做的第一件事。为此,我始终使用有效载荷,并将其与XSS有效载荷中使用的通用字符一起使用,因为担心插入js代码而对其进行了过滤。进入后

https://website.com/"></>{}()vict0ni

我有一个自定义的404响应页面。查看源代码,URL反映在3个地方。在其中两个中,对有效载荷进行了消毒,但在第三个中,所有事物都按原样被反射。第三次反射的源代码如下所示:

<input type="hidden" name="DismissCookieNotice" value="true" />
<input type="hidden" name="redirected" value="https://www.website.com/"></>{}()vict0ni" />
<input type="hidden" name="csrf" value=[something] />

因此,通过输入有效载荷

https://website.com/"/><svg onload=alert(document.cookie)>

触发了XSS。

一切都非常简单。我浏览了一下网站只是为了了解它的结构,然后为了确定,我又重新测试了XSS。只是这次...没有用。

我试图考虑一下从现在到触发XSS的时间之间可能发生的变化。我正在更改参数,有效负载,用户代理,基本上是所有内容。依然没有。
然后,经过一些尝试,我想到了在私人会话中重新输入URL。这就是XSS再次触发的地方!

ut

发生这种情况是因为在私人会议上,我没有单击弹出窗口中的“接受Cookies”选项,现在每个网站都必须提供该选项。但是我在找到XSS 之后浏览网站时做到了。老实说,我可能早在源代码的DismissCookieNotice名称中就注意到了这一点。

回想一下:

...
<input type="hidden" name="DismissCookieNotice" value="true" />
...

该漏洞位于弹出窗口的代码内(接受cookie后,页面刷新,并且新页面中缺少弹出源代码)。因此,仅可以通过忽略Cookie弹出窗口来复制XSS(而不是通过忽略它来关闭它)。
该弹出窗口背后的逻辑是,在接受Cookie后,网站会将用户重定向到他已经使用的URL。这就是URL反映在“重定向”隐藏输入中的原因。但是他们忘记了过滤用户输入。

下次测试反射的XSS时,请确保先测试它,然后再接受Cookie。你永远都不会知道!

Last modification:April 6th, 2020 at 03:07 pm
如果觉得我的文章对你有用,请随意赞赏