没有正斜杠的 HTML 标题标签中的 XSS

信息安全 xss 编码
2021-08-14 07:49:55

我试图找出这是否容易受到 XSS 攻击:我可以通过 URL控制标题标签的内容。如果不是因为站点仅在第一个正斜杠出现之前获取文本,这将使站点容易受到攻击,这使得关闭标题标签似乎不可能。我已经尝试过%2F,但服务器似乎将其转换为正斜杠,因此在那里切断了输入。这可能是mod_rewrite,但没有AllowEncodedSlashes

示例:domain.com/subfolder/myXss</title>bla 将导致 ...<title> myXss< </title>

所以我的问题是这两者之一是否可能:

  • 我可以以其他方式对正斜杠进行编码吗?
  • 我可以以某种方式关闭标题标签或在标题标签中插入恶意代码吗?我不能简单地插入script ,因为标题标签中不允许有任何其他内容。
2个回答

在 HTML5<title>标记中,如果不使用斜线,就无法注入新元素。

由于您的浏览器的 HTML 解析器是一个状态机,您可以简单地跟踪标记器的状态转换(根据HTML 语法规范),看看您能走多远。

在您的情况下,head 部分<title>中的标签唤起了“通用 RCDATA 元素解析算法”。RCDATA 状态开始,每个左括号都将被忽略,除非您关闭最近打开的标签。因此,唯一不会被视为原始文本的延续是文字序列并且由于该字符串包含斜杠,因此不可能出现 XSS。(此行为类似于其他元素,例如)。</title><textarea>

我在这里的回答对标记器如何帮助您推断可能的 XSS 有一个稍微详细的描述。

我可以以其他方式对正斜杠进行编码吗?

HTML 解析器只接受文字/( 0x2f)。如果您要问如何欺骗 Web 应用程序打印斜线,这纯粹是猜测,因为它取决于 Web 应用程序的实现。

您可以尝试很多事情,这取决于服务器在做什么。双编码,十六进制编码。如果我在看这个,我的第一个想法是如何在没有反斜杠的情况下做到这一点。

标题标签不需要关闭,您只需要能够进入 javascript 上下文。

换句话说,您将能够插入脚本 alert(xss) /script (不会让我添加开始和结束脚本标签),如果允许斜杠,它将执行,您不需要关闭 html 标签.

像 %3Csvg%20onload%3D%22alert(%27xss%27)%22%3E 这样的东西怎么样