Привет, Хабр! В прошлой статье я рассказывал о турнире KnightCTF 2024, который организовала команда из Бангладеша. Но туда вошли не все задачи. Под катом расскажу еще о четырех из категории networking. Читайте далее — узнаете, как получить секретную информацию в bash-history и найти пароль админа среди дампа. Пригодится как опытным, так и начинающим специалистам по информационной безопасности.
Дисклеймер: материал не обучает хакингу и не призывает к противозаконным действиям. Все описанное ниже лишь демонстрирует, какие пробелы в безопасности встречаются в реальных веб-приложениях. И предупреждает, на что нужно обратить внимание при разработке программного обеспечения.
Используйте навигацию, чтобы перейти к интересующей задаче:
→ Задача: Hidden File
→ Задача: Confidential
→ Задача: Super Admin
→ Задание: Famous Tool 2
Задача: Hidden File
Условие
Какой флаг у скрытого файла?
Дано
.pcap-файл
Решение
В прошлой части я рассказывал о задаче Port, в которой нужно найти номер порта у обратной оболочки сервера — 6200/tcp. Из кода эксплойта можно понять, что для коннекта использовался telnet, поэтому все команды были перехвачены в открытом виде. Оттуда я получаю bash_history.
Содержание bash-history.
В выводе есть строка
37n3vq6rp6k05ov33o5fy5b33sj3rq2sy4p56735853h9
. Это не классический Hex-формат, а Twin-Hex. В нем исходный текст преобразуется в два символа за раз.Далее декодирую строку с помощью Python-модуля для Twin-Hex:
$ python twin_cipher.py -d "37n3vq6rp6k05ov33o5fy5b33sj3rq2sy4p56735853h9"
Готово — получаю флаг!
Задача: Confidential
Условие
Здесь есть что-то конфиденциальное. Сможете ли вы найти его? Пожалуйста, воспользуйтесь приложением к первой задаче.
Формат флага: KCTF{fl4G}
Решение
Вернемся к bash-history из предыдущей задачи. На 162 строке вижу скачанный архив maybeconfidential.zip. Давайте узнаем, что в нем находится.
Содержание трафика.
В Wireshark можно получить файлы, которые передавались в момент записи дампа трафика. Выбираю Файл → Экспортировать объекты → HTTP, добавляю в фильтр maybeconfidential.zip:
Список HTTP.
Распаковываю архив. Внутри — .docx-файл с картинкой. На ней изображен маскот рыцаря Knight CTF 2024::
Изображение в архиве.
Формат .docx — тоже архив, нужно его открыть. В нем находятся три папки с файлами и XML-документ.
С помощью обычного поиска по тексту ищу в названии KCTF. Флаг находится в maybeconfidential/maybeconfidential/word/document.xml. Задача решена!
Задача: Super Admin
Условие
Какой пароль у суперадминистратора в веб-приложении? Загрузите дамп SQL, чтобы решить задачу. Он может понадобиться вам для решения других задач.
Формат флага: KCTF{password}
Дано
Дамп SQL.
Решение
Интересная задача! Раз был дан только дамп, с него я и решил начать. И не прогадал: внутри была интересная часть с информацией о пользователях
Содержание дампа SQL.
Забираю хеш пользователя root
5f27f7648285dec7954f5ee1ad696841
и расшифровываю его хеш-сумму в декодере md5. Получаю пароль — letmeinroot.Декодированный пароль из хеш-суммы.
Подставляю пароль в строку для формирования флага — KCTF{letmeinroot}. Готово!
Задание: Famous Tool 2
Условие
Какой инструмент использовал злоумышленник, чтобы выявить уязвимость страницы редактирования задания? Пожалуйста, используйте вложение из первой задачи.
Формат флага: KCTF{toolname/version}
Решение
Продолжаю работать с уже известным .pcap-файлом. В коде эксплоита из задачи Port применяю фильтр http contains “sql”. Вижу несколько обращений с IP-адресами, протоколами и другими параметрами.
Фильтр в эксплоите.
Похоже на сканирование — нужно проверить. В Wireshark открываю пакет 49187:
Содержание пакета.
Нахожу User-Agent и вижу значение sqlmap/1.7.10#stable. Делаем вывод, что для атаки злоумышленник использовал инструмент sqlmap версии 1.7.10. Готово — формируем флаг.
Интересные материалы по CTF
Если хотите ознакомиться с другими задачами CTF-турниров, рекомендую почитать предыдущие статьи на эту тему.