对没有脚本标签的 XSS 执行 JavaScript

Execute JavaScript for XSS without script tags

我正在学习 XSS(出于道德目的),我想知道如何在不使用 <script> 标签的情况下执行一些 JavaScript 代码。这是在

HTML 标签内:

"The search term" <p> *JavaScript here* </p> "returned no results"

由于某种原因,脚本标签不起作用。

您可以使用 HTML 元素中的 onclick 属性,这样您就可以创建如下内容:

"The search term" <p> <a href="" onclick="alert('I excuted JavaScript!');">Click me to see the JavaScript work!</a> </p> "returned no results"

现在当点击元素时 JavaScript 将被执行。

  1. 尝试输入带有特殊字符的不同类型的字符串,看看是否对其中的任何字符串进行了编码或输出。 (我个人使用 '';!--"<XSS>=&{()}
  2. 现在你有三个选择:
    1. 在 HTML 标签内: <> 无关紧要,因为您已经在 HTML 标签内。您可以查看此标签是否支持事件并使用某种 onload=alert(1) 或其他事件。如果允许<>,你可以突破并创建自己的标签'><img src=0 onerror=alert(1)>
    2. HTML 标签之外: <> 很重要。有了这些你就可以打开一个新的标签,整个世界都在你的脚下(或者……)
    3. 里面 Javascript: 好吧...如果你可以用 '" 打破一个字符串,那么你基本上可以写 ';alert(1)
  3. 根据您的编码字符和字符串输出位置的周围环境制作您的 XSS

<XSS> 完全消失: 应用程序使用某种 strip_tags 。如果你在 HTML 标签之外并且没有 HTML 标签被列入白名单,不幸的是我不知道任何实现 XSS 的方法。

制作您自己的负载

实现这一目标的方法多种多样,无法一一列举。 看看这两个网站,它们有很多方法和概念来构建你自己的。 它归结为:页面允许通过什么。

  1. https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#XSS_Locator_.28short.29
  2. https://html5sec.org/

在以下位置提到了另一个:

<a href="javascript:alert(1)">asdf</a>

适用于 Chromium 81。

也许更重要的是如何对其进行消毒的问题,例如:

  • How to prevent XSS with HTML/PHP?
  • How to sanitize HTML code in Java to prevent XSS attacks?