Невозможно воспроизвести параметр запроса HTML-инъекция - PullRequest
0 голосов
/ 28 октября 2019

У нас есть встроенный скрипт, запущенный на странице одного из наших клиентов. Мы получили от них отчет о том, что параметры запроса, которые мы отправляем на эту страницу, не защищены должным образом от внедрения XSS.

Когда я пытаюсь ввести на своем сайте URL-адрес типа: 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>

Я не понимаю, как идентичноСценарий, получающий идентичные параметры запроса, показывает панель предупреждений на сайте клиента и ничего, когда я запускаю ее локально. Есть мысли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...