Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этой статье я покажу, как взламывают сайты на Django. Кроме того, мы снимем пароль с файла XLS и применим фишинговую атаку Tab Nabbing. Для повышения привилегий разберем алгоритм программы на Rust. Все это — чтобы пройти сложную машину Developer с площадки Hack The Box.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /etc/hosts
:
10.10.11.103 developer.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта.
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A
).
Результат работы скрипта
Находим два открытых порта: 22, на котором работает SSH, и 80, отвечающий за веб.
Справка: брутфорс учеток
Поскольку вначале у нас нет учетных данных, нет и смысла изучать службы, которые всегда требуют авторизации (например, SSH). Единственное, что мы можем делать здесь, — это перебирать пароли брутфорсом, но у машин с HTB почти всегда есть другое прохождение. В жизни таких вариантов может не быть, к тому же имеются шансы подобрать пароль или получить его при помощи социальной инженерии.
Начинаем, конечно же, с веба!
Главная страница сайта
Нас встречает сайт какой‑то CTF-площадки. Просмотрев его содержимое, обнаружим возможность регистрации и авторизации, но, что примечательно, нет ни одного файла на PHP. Возможно, это фреймворк на Python? Чтобы проверить догадку, просканируем скрытые директории в корневом каталоге сайта.
Справка: сканирование веба c ffuf
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде dirsearch и DIRB.
Я предпочитаю легкий и очень быстрый ffuf. При запуске указываем следующие параметры:
-w
— словарь (я использую словари из набора SecLists);
-t
— количество потоков;
-u
— URL;
-fc
— исключить из результата ответы с кодом 403.
Команда получается следующая:
ffuf -u http://developer.htb/FUZZ -t 256 -w directory_2.3_medium_lowercase.txt
Результат сканирования каталогов
В выводе будет очень много каталогов, которые возвращают код 301 — редирект. Если перейти по любому из них, то нас встретит админка фреймворка Django.
Панель авторизации Django
Больше ничего не найдя, регистрируемся на первом сайте.
Главная панель пользователя
На самом сайте лежит по два‑три таска из разных категорий, но мой интерес привлекла страница с настройками профиля пользователя. Сканируем текстовые поля, но это не дает результата. Может, попробуем сдать любой из тасков? Это может открыть что‑то новое. Я решил просмотреть задание на форензику phished_credentials. Как сказано в условии задания, где‑то в файле есть пароль.
Открываем файл и видим скрытый столбец E
. Раздвинуть столбцы не выходит, так как лист документа защищен паролем от изменения.
Содержимое документа phished_credentials.xls
Но такую защиту можно легко снять. Откроем как архив и найдем в нем настройки для нужного листа. Так как тут он только один, нам нужен файл sheet1.xml
.
Содержимое архива
В этом файле найдем и удалим следующую строку. Это поле sheetProtection
.
<sheetProtection algorithmName="SHA-512" hashValue="Y4Ko7kZUKStIxaVGWEtuMeRdnCiN7O3D8qZtKdo/2jP7WE6yzKQXUcSWQ/E0OrqHCzhOBFX+t8Db5Pxaiu+N1g==" saltValue="EoiHQklf0FagPs+iW0OzkA==" spinCount="100000" sheet="1" objects="1" scenarios="1"/>
Поле sheetProtection
Пересохранив файл и открыв документ, обнаруживаем, что защиты больше нет. Раздвигаем столбец E
и получаем флаг для площадки.
Флаг для задания
Осталось передать его в форму на сайте.
Отправка флага
После обновления страницы ее вид немного меняется, вместо кнопки сдачи ответа появляется кнопка отправки решения.
Страница челленджа
Причем не через загрузку файла, а указывается URL страницы.
Форма загрузки решения
Я открыл локальный веб‑сервер Python 3 (команда python3 -m http.server 80
) и отправил ссылку http://10.10.14.59/writeup.html
. В логах веб‑сервера видим обращение к указанной странице. Это место для теста!
Логи веб‑сервера
Источник: xakep.ru