Продолжаем решать задачки по информационной безопасности web-серверов. Сегодня задачка с портала root-me.org, называется "HTTP - Cookies". За решение задачки дают 20 баллов, сложнее начального уровня.
Из названия уже следует, что уязвимость связана с куки.
Cookie (куки) — небольшой фрагмент данных, отправленный веб-сервером и хранимый на компьютере пользователя. Хранение важных данных в куки может быть уязвимостью.
Обычно куки используют для аутентификации пользователя, сеанса, персональных настроек и ведения статистики.
Ссылки
Решение
Переходим на страницу задания:
http://challenge01.root-me.org/web-serveur/ch7/
На страничке расположена форма сбора e-mail адресов. И можно даже эти адреса посмотреть по ссылке "Saved email adresses". Попробуем это сделать.
You need to be admin. Только админ имеет право на просмотр списка e-mail адресов. Посмотрим код страницы.
Ещё одна подсказка нам оставлена в комментарии. Разработчик забыл его удалить:
<!--SetCookie("ch7", "visiteur");-->
В куки ch7 записывается статус текущего пользователя: "visiteur". Очевидно, что у админа статус должен быть другой. Проверим, как у нас обстоят дела с куки.
Раз мы будем проверять куки, то нам понадобится какой-либо инструмент для работы с ними. Я работаю в Google Chrome, ставлю туда расширение EditThisCookie.
Давайте посмотрим какие куки на нашем целевом сайте.
Всё как и предполагалось, куки ch7=visiteur. Хранить статус пользователя в куки — не самая лучшая идея. Изменим значение на c7=admin.
Снова переходим по ссылке "Saved email adresses".
А вот и флаг: ml-SYMPA
Валидируем.
Флаг подходит, зарабатываем 20 очков.
Безопасность
- Пользователь всегда может подменить куки. Не храните там важных данных.
- Валидируйте куки.
Дополнительные решения
Раз уж мы знаем как искать флаг, то упростим наше решение. Допустим, у нас нет возможности или желания устанавливать расширения для работы с куки. Открываем консоль (F12) и меняем куки там:
document.cookie = 'ch7=admin'
Смотрим список e-mail.
Это было просто! Хотите ещё проще? Пожалуйста, выполняем curl:
curl -H "cookie: ch7=admin" -v http://challenge01.root-me.org/web-serveur/ch7/?c=visiteur