无法重现查询参数HTML注入

时间:2019-10-28 13:25:58

标签: javascript xss query-parameters

我们的一个客户页面上运行着一个嵌入式脚本。我们从他们那里收到一份报告,指出我们没有适当地防止发送到该页面的查询参数受到XSS注入的攻击。<​​/ p>

当我尝试以下网址时: https://www.clientsite.com?somekey=%3Csvg%20onload%3Dalert(document.cookie)%3E

在他们的网站上,我确实得到了显示Cookie的警报面板。

但是当我在本地运行脚本时,无法重现此注入。无论我将查询参数的值如何设置,警报面板都不会显示。

该脚本的一个非常简化的版本是:

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>XSS test</title>
</head>

<body>
  <div id="content"></div>
  <script>
   (function() {
    var url = window.location.href
    var someKey = 'somekey'
    var regexS = "[\\?&]"+someKey+"=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(url);

    var parentElement = document.querySelector('#content');
    var widget = document.createElement('div');
    // var svgInjection = '<svg onload=alert("alert!!")>'
    // var svgEncodedInjection = '%3Csvg%20onload%3Dalert("alert!!")%3E'
    widget.innerHTML = '<div>' + results[1] + '</div>';

    return parentElement.insertBefore(widget, parentElement.firstChild);
   })()
  </script>
</body>
</html>

我不明白相同的脚本如何接收相同的查询参数,如何在客户端站点上显示警报面板,而在本地运行时却什么也没有。有什么想法吗?

0 个答案:

没有答案