专业的社区
测试DOM XSS
最近更新时间:2022年7月1日
阅读时间:4分钟
测试DOM XSS可能是乏味的,因为它通常涉及通过复杂的JavaScript手动跟踪输入的流程,这可能会扩展到数千行代码。DOM Invader通过立即向您显示输入流入的所有接收器以及周围环境中的所有接收器,从而大大简化了这一过程。
您可以访问扩展名的大多数相关功能dom看法。
注射金丝雀
DOM Invader通过自动解析DOM来寻找预定义的“金丝雀”字符串的出现来起作用。这是一个任意但独特的字母字符串字符串,您可以将其注入不同的来源,以查看它们流入哪些沉没。
您可以看到Dom Invader正在跟踪的当前金丝雀dom看法。请注意,您可以更改金丝雀如果愿意,请定制字符串。
手动将金丝雀注入来源:
去Dom Invader在浏览器的Devtools面板中选出。
确保您在dom看法。
点击复制金丝雀。Dom Invader所跟踪的金丝雀已复制到剪贴板上。
将金丝雀粘贴到您要测试的任何输入中。这可能是URL中的查询参数,形式字段等。
有关潜在来源的更多信息,请查看我们有关网络安全学院基于DOM的漏洞的主题。beplay体育能用吗
beplay体育能用吗网络安全学院
将金丝雀注入多个来源
尽管您可以一次手动将金丝雀粘贴到多个来源中,但您也有以下选项自动执行此操作:
- 注入URL- 自动将金丝雀注入URL中的每个查询参数。如果没有,DOM Invader会添加其自己的参数要使用。使用此选项时,DOM Invader将一个顺序数字字符附加到金丝雀,以帮助您识别哪个参数的值流入每个接收器。
- 注入形式- 自动将金丝雀注入页面上检测到的任何HTML表单字段。请注意,您仍然需要手动提交表格以进行注射才能生效。
笔记
将金丝雀注入所有URL参数并立即形成字段可能会阻止该站点正常工作。为了获得最佳结果,我们建议一次测试一个来源。
识别可控的水槽
注入金丝雀后,DOM Invader会自动解析DOM以识别出现的任何水槽。然后,它在dom查看,按顺序排序它们有多有趣。
确定XSS语境
一旦确定了可控的水槽,下一步就是研究出现注射有效载荷的上下文。这包括确定以下信息:
无论您是使用HTML还是JavaScript执行接收器。
您的输入是否被您需要脱离的任何特殊字符所包围。这些包括报价,标签,属性等。
在您的输入到达水槽之前,网站的验证,消毒或其他处理在您的输入之前执行。beplay体育能用吗
为了帮助您,DOM Invader显示了水槽的内容,包括您的金丝雀和您注入的任何周围字符,它们出现在DOM中。这意味着您可以将特殊字符附加到金丝雀,以便轻松查看它们是被逃脱还是编码。在下面的示例中,您可以看到我们能够成功地注入各种有用的字符。
您还可以根据DOM Invader确定的类型查看以下详细信息:
外html- 包围您的金丝雀的HTML元素。
框架路径- 金丝雀传递到水槽的框架。
事件- 当您的金丝雀传递到水槽时发生的JavaScript事件。
此信息使您可以轻松地查看XSS上下文,并测试您需要制作利用的角色和事件。在下面的示例中,我们成功地从双引号的字符串和周围分解了为了注入我们的XSS概念证明利用。
研究客户端代码
在尝试不同的注射时,您可能会发现您的输入突然停止流入水槽。这可能是因为您只能通过特定的代码路径到达水槽,例如条件语句的一个分支。
DOM Invader使您可以直接跳到客户端代码中的点,其中输入将传递到接收器。然后,您可以研究前面的代码,以确定您的输入必须满足的条件才能到达水槽。
在代码中查看相关行:
- 注入您知道将到达水槽的有效载荷。
- 在Dom Invader的dom查看,单击链接堆栈跟踪柱子。这将输出堆栈跟踪到浏览器的控制台。
- 在DevTools面板中,切换到安慰标签。
- 在堆栈跟踪中,单击最上面的链接(可能只有一个)。这将打开客户端的JavaScript来源标签并专注于输入传递到水槽的线路。
阅读更多
DOM Invader是高度可配置的。有关Dom Invader的高级功能以及如何对特定网站进行微调的更多信息,请参见配置DOM Invader。