Cookie 弹出窗口上的XSS – 错误赏金- 0x00sec

Updated on 7月 11, 2025 in 漏洞赏金
0 on 6月 30, 2023

永远不要相信弹出窗口

在网站上进行一些错误搜寻(实际上,在本例中这只是负责任的披露)时,我在URL 中输入了一个XSS 有效负载作为子目录,以便查看它是否以及如何反映在源代码中。这是我手动测试网站是否存在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 再次被触发的地方!

发生这种情况是因为在私人会话中,我没有单击弹出窗口中的“接受Cookie”选项,而现在每个网站都被迫提供该选项。但我是在浏览网站时这样做的 找到XSS。老实说,我可能早就注意到了 关闭Cookie 通知 源代码中的名称。

回顾一下:

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

该漏洞位于弹出窗口的代码内部(接受cookie 后,页面刷新,新页面中缺少弹出窗口源代码)。因此,只有忽略Cookie 弹出窗口(不是忽略它,只是忽略它)才能重现XSS。
此弹出窗口背后的逻辑是,在接受cookie 后,网站会将用户重定向到他已经所在的URL。这就是URL 反映在“重定向”隐藏输入中的原因。但他们忘记过滤用户输入。

下次测试反射型XSS 时,请务必对其进行测试 您接受cookies。你永远不会知道!

 
  • Liked by
Reply