Продолжаем решать задачки по информационной безопасности web-серверов. Сегодня задачка с портала root-me.org, называется "HTTP - Verb tampering". За решение задачки дают 15 баллов, чуть посложнее начального уровня.
Задача: обойти аутентификацию. Bypass the security establishment.
Уязвимость связана с неправильной настройкой разрешённых методов аутентификации web-сервера.
Уязвимость HTTP Verb Tampering – ошибка настройки контроля доступа для методов протокола HTTP. Тупо аутентификация включена не для всех разрешённых на web-сервере HTTP методов.
Вспомним некоторые HTTP-методы:
- GET — используется для получения информации от сервера по заданному URI.
- HEAD — тот же GET, но сервер посылает только заголовки и статусную строку без тела HTTP сообщения.
- POST — используется для отправки данных на сервер.
- PUT — используется для загрузки содержимого запроса на заданный URI.
- DELETE — удаляет указанный в URI ресурс.
- CONNECT — преобразует существующее соединение в тоннель.
- OPTIONS — используется для получения параметров текущего HTTP соединения.
- TRACE — создает петлю, благодаря которой клиент может увидеть, что происходит с сообщением на всех узлах передачи.
Бывают и другие, например: PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK, SEARCH, POLL, NOTIFY и прочие. Наверное, появятся ещё какие-нибудь новые.
Ссылки
Решение
Переходим на страницу задания:
http://challenge01.root-me.org/web-serveur/ch8/
И срабатывает система аутентификации, которая запрашивает у нас логин и пароль.
Больше нам здесь делать нечего. Открываем командную строку и с помощью curl отправляем запрос к серверу.
curl http://challenge01.root-me.org/web-serveur/ch8/
По умолчанию curl отправляет запрос методом GET. В ответ получаем 401 Authorization Required. Заодно видим, что на сервере используется web-сервер Apache.
Сменим метод на POST.
curl -X POST http://challenge01.root-me.org/web-serveur/ch8/
Результат тот же. 401 Authorization Required.
Проверим, на все ли методы админ настроил аутентификацию. Сменим метод на OPTIONS.
curl -X OPTIONS http://challenge01.root-me.org/web-serveur/ch8/
В результате получаем содержимое страницы.
А вот и флаг: a23e$dme96d3saez$$prap
Валидируем.
Флаг подходит, зарабатываем 15 очков.
Безопасность
- Ограничивайте не web-сервере список доступный HTTP методов.
- Если настраиваете аутентификацию, то убедитесь, что она включена для всех доступных HTTP методов.
Web-сервер также должен верно отрабатывать при использовании несуществующих HTTP методов. К примеру, укажем метод INTERNET_LAB_RU:
curl -X INTERNET_LAB_RU http://challenge01.root-me.org/web-serveur/ch8/
Веб сервер снова выдаёт содержимое страницы с флагом.