Создание HTML с намеренным внедрением HTML - PullRequest
3 голосов
/ 30 сентября 2019

Я студент по кибербезопасности, пытаюсь понять некоторые основные HTML-инъекции. Я работал над этим кодом несколько дней и не могу понять, что я делаю неправильно. Код, который у меня есть в настоящее время, допускает инъекцию, например, если я введу <h1>test</h1> в текстовое поле, он будет отображать тест в качестве заголовка. Но если я попытаюсь <script>alert(1)</script>, он не запустит скрипт. Я попытался установить значение текстового поля на «» или думал, что могу закрыть эту строку, введя в текстовое поле следующее: "><script>alert(1)</script>

Я также пытался отменитьоставшуюся часть кода, добавив комментарий в конец, например: <script>alert(1)</script><!--

Я пробовал несколько комбинаций каждой, но безуспешно. Теперь мне действительно нужно иметь возможность внедрять скрипт, так как я играю с CSP и как это влияет на внедрение скриптов в веб-страницу. В настоящее время я не указал csp, который ограничил бы выполнение JavaScript. Некоторые другие вещи, которые я пробовал, включают использование разных браузеров, изменение безопасности браузера и обеспечение включения JavaScript в браузере. Любая помощь будет принята с благодарностью !!

<html>
    <script language='JavaScript'>
    function getwords(){
        textbox = document.getElementById('words');
        label = document.getElementById('label');
        label.innerHTML = textbox.value;
    }
    </script>

    <body>
        <input type="text" id="words">
        <input type="button" onclick="getwords()" id="Button" value="Enter" />
        <label id="label">
        </label>
    </body>
</html>

Ответы [ 3 ]

3 голосов
/ 30 сентября 2019

Это потому, что <script> запускаются при загрузке страницы, и, когда содержимое label изменяется, сценарии уже запущены.

Однако, если вы вводите <script> теги на другую страницу (через бэкэнд (XSS означает межсайтовый сценариев)), он работает.

В качестве альтернативы, чтобы заставить его работать в сценарии, где содержаниевставленный после загрузки страницы (как в вашем случае), вы можете использовать события JS (например, onclick) для запуска вашего кода:

<div onclick="alert(1)">Click me!</div>

Или, чтобы выполнить его без взаимодействия с пользователем,Вы можете использовать событие <iframe> onload:

<iframe onload="alert(1)" style="display:none"></iframe>
2 голосов
/ 30 сентября 2019

чтобы выполнить javascript из вашей формы, вы можете попробовать:

<iframe src=javascript:alert(1)>

или

<img src=x onerror=alert(1)>

Также стоит отметить:

script элементоввставлены с использованием innerHTML, не выполняются при вставке.

0 голосов
/ 30 сентября 2019

Чтобы вручную выполнить JavaScript, вы можете сделать следующее

без редактирования вашего HTML-файла, добавив его в поле ввода в вашем браузере.

<iframe onload="alert(1)" style="display:none"></iframe>

Дополнительная информация о почему это работает здесь

Подробнее о том, как вы можете выполнять такие действия, здесь: developer.mozilla.org

<html>
    <script language='JavaScript'>
    function getwords(){
        textbox = document.getElementById('words');
        label = document.getElementById('label');
        label.innerHTML = textbox.value;
    }
    </script>

    <body>
        <input type="text" id="words">
        <input type="button" onclick="getwords()" id="Button" value="Enter" />
        <label id="label">
        </label>
    </body>
</html>
...