CTF. Курс молодого бойца. Начальные задания категории WEB #10.
https://t.me/hacker_sanctuary
Данный пост будет носить практический характер. В нём мы рассмотрим задания начального уровня в категории WEB. Данные задания часто встречаются в простых CTF'ах и иногда, как разминочные, в более крупных.
Задания будут взяты с известного сайта с различными задачами (CTF и не только) - https://www.root-me.org/
Будем решать задачи из категории: Web - Server
Прямая ссылка: https://www.root-me.org/en/Challenges/Web-Server/
Предыдущие задания из данной категории вы можете найти на канале.
Часть 1 - https://telegra.ph/CTF-Kurs-molodogo-bojca-Nachalnye-zadaniya-kategorii-WEB-08-17
Часть 2 - https://telegra.ph/CTF-Kurs-molodogo-bojca-Nachalnye-zadaniya-kategorii-WEB-08-31
Часть 3 - https://telegra.ph/CTF-Kurs-molodogo-bojca-Nachalnye-zadaniya-kategorii-WEB-2-09-21
Часть 4 - https://telegra.ph/CTF-Kurs-molodogo-bojca-Nachalnye-zadaniya-kategorii-WEB-4-09-23
Часть 5 - https://telegra.ph/CTF-Kurs-molodogo-bojca-Nachalnye-zadaniya-kategorii-WEB-5-10-15
Часть 6 - https://telegra.ph/CTF-Kurs-molodogo-bojca-Nachalnye-zadaniya-kategorii-WEB-6-12-02
Часть 7 - https://telegra.ph/CTF-Kurs-molodogo-bojca-Nachalnye-zadaniya-kategorii-WEB-7-12-08
Часть 8 - https://telegra.ph/CTF-Kurs-molodogo-bojca-Nachalnye-zadaniya-kategorii-WEB-8-01-01
Часть 9 - https://telegra.ph/CTF-Kurs-molodogo-bojca-Nachalnye-zadaniya-kategorii-WEB-9-01-01
Пример 1.
Решим задание - "CRLF"
Прямая ссылка на задание - https://www.root-me.org/en/Challenges/Web-Server/CRLF
Посмотрим описание.

По заданию нам надо внедрить неверные данные в лог. Также, стоит обратить внимание на название задание, т.к. оно является названием одной из веб-уязвимостей, связанной с модификацией ответа от сервера с помощью специальных символов CR и LF (\r\n).
Символы \r\n являются идентификаторами конца строки в HTTP. Они могут быть использованы для обозначения переноса строк и в сочетании с заголовками HTTP-запросов и ответов могут приводить к различным уязвимостям, включая HTTP Request Smuggling и HTTP Response Splitting.
С помощью данных символов можно отравлять веб-кеш, обходить веб-фаерволлы и другое.
Посмотрим, что нам предлагается в качестве задания.

Итак, есть лог аутентификации и форма. В логе мы видим записи вида "имя пользователя - не аутентифицирован/аутентифицирован". Судя по всему нам надо внедрить в лог сообщение "admin authenticated" не зная пароль, с помощью разбиения запроса, используя CRLF.
Попробуем сделать обычный запрос с аутентификацией.

Видим, что имя пользователя записывается в лог, попробуем поставить символы переноса строки, чтобы отделить имя пользователя от сообщения об неверной аутентификации.

Сработало, мы перенесли сообщение об ошибке, теперь попробуем добавить в наш username сообщение об успешной аутентификации и предварительно заменим имя пользователя на "admin", а также после символов переноса подставим любое имя, чтобы переносимая запись выглядела логично.

Как можно заметить, сообщение успешно добавлено и мы получаем флаг. Задание решено.