Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Машина имеет IP-адрес 10.10.10.228, который я добавляю в /
, чтобы можно было обращаться к данном хосту по имени.
10.10.10.228 breadcrumbs.htb
Любая атака начинается со сканирования открытых на хосте портов. Делаем это при помощи скрипта, где через Nmap производится обычное быстрое сканирование портов, а затем из вывода берутся все порты и повторяется сканирование только обнаруженных портов со скриптами (опция -A).
ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1
Результат работы скриптаКак это обычно бывает на машинах с Windows, по результатам сканирования имеем много открытых портов:
Остальное не представляет для нас интереса.
На SSH нам сейчас ловить нечего, поскольку учеток у нас нет, да и SMB для анонима интереса не представляет. Раз есть веб‑сайт, начинать лучше всего с него.
Сайт позволяет искать книги по библиотеке.
Анализировать страницы лучше всего через Burp Suite, который сохранит и наглядно отобразит все запросы и ответы.
Просматривая страницы, обратим внимание на способ запроса книги: название HTML-файла с книгой передается исполняемому файлу, который затем включит этот файл в ответ.
Это потенциальная уязвимость LFI, которую стоит проверить. Есть хорошее средство для тестов LFI — LFI Suite. Но так как оно работает медленно, то возьмем из него только словарь и выполним тест с помощью Burp Intruder (в версии Pro ставим 120 потоков).
Фильтруем по размеру ответа и видим, что удалось прочитать файл access.
. А чуть ниже в тексте ошибки отмечаем для себя полный путь к веб‑приложению.
Давай взглянем, что интересного может дать код в файле bookController.
. Для этого передадим следующее значение параметра:
book=../includes/bookController.php&method=1
Часть исходного кода bookController.phpТак, в файле происходит включение файла db.
, в котором обычно подключается база данных, и при этом, скорее всего, используются учетные данные, хранящиеся в открытом виде. Проверяем, запросив book=../
.
Так мы находим учетку от базы данных. Но что с ней теперь делать, если к доступным нам сервисам она не подходит? Поищем, нет ли еще чего‑нибудь на сайте.
Для перебора путей с целью поиска скрытых страниц (тех, на которые снаружи нет ссылок) обычно используют программы вроде dirsearch, dirb или более быстрый gobuster. Но я последнее время использую встроенные средства Burp Suite. Перехватываем запрос в Burp Proxy и отправляем в Burp Intruder. Затем отмечаем позицию для перебора, выставляем словарь и количество потоков, после чего выполняем атаку.
Так мы находим несколько директорий, часть из которых нам уже известна. Но мы еще не были в каталоге portal
, а после перехода нас редиректит на http://
.
Удобно, что мы можем посмотреть исходник этого файла, сделав запрос book=../
.
В исходном коде видим подключение еще одного нового для нас файла — authController.
. Тем же способом глянем и его.
А вот уже здесь находим прямую ссылку на admins.
, перейдя по которой найдем очень много пользователей. У нас есть пароль для подключения к базе данных, однако это нам никак не помогает, и мы вынуждены идти дальше.
В исходном коде находим уже больше интересной информации.
В коде мы видим использование JWT, секретный ключ и вызов функции makesession
. Ее код находим в подключаемом файле cookie.
.
JSON Web Token (JWT) состоит из трех частей: заголовка (header), полезной нагрузки (payload) и подписи. Заголовок и полезная нагрузка представляют собой объекты JSON, при этом нагрузка может быть любой — это именно те критические данные, которые передаются приложению. А вот заголовок содержит определенные поля: алгоритм и тип токена. Третий элемент вычисляется на основании первых и зависит от выбранного алгоритма. Токены могут быть перекодированы в компактное представление: к заголовку и полезной нагрузке применяется алгоритм кодирования Base64-URL, после чего добавляется подпись и все три элемента разделяются точками.
|
|