Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /
:
10.10.11.171 extension.htb
И запускаем сканирование портов.
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A
).
Мы нашли два открытых порта: 22 — служба OpenSSH 7.6p1 и 80 — веб‑сервер Nginx 1.14.0. Начинаем, конечно же, с сайта.
На сайте видим указанный домен, который добавляем в файл /
.
10.10.11.171 extension.htb snippet.htb
Так как он реальный, мы можем просканировать поддомены. Я использую сканер ffuf.
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде dirsearch и DIRB.
Я предпочитаю легкий и очень быстрый ffuf. При запуске указываем следующие параметры:
-w
— словарь (я использую словари из набора SecLists);-t
— количество потоков;-u
— URL;-r
— выполнять редиректы;-fs
— фильтровать страницы по размеру;-fc
— исключить из результата ответы с кодом 403.Место перебора помечается словом FUZZ
.
Команда получается следующая:
ffuf -u 'http://snippet.htb/' -r -wsubdomains-top1million-110000.txt -t 256 -H 'Host: FUZZ.snippet.htb' --fl 30
Так находим еще два поддомена, которые тоже добавляем в файл /
. Там найдем сервисы Gitea и RoundCube.
10.10.11.171 extension.htb snippet.htb dev.snippet.htb mail.snippet.htb
В Gitea можем без авторизации посмотреть существующих пользователей.
Сканирование каталогов на пользовательском сайте тоже ничего не дало.
ffuf -u 'http://snippet.htb/FUZZ' -r -wdirectory_2.3_medium_lowercase.txt -t 256
Тогда посмотрим на пользовательский сайт через Burp. Нас интересует Burp History.
В коде страницы видим использование какого‑то API. Изучив его подробнее, находим возможность не только получать разную информацию, но и дампить ее.
Первым делом я решил посмотреть на пользователей сайта, но это получится только после авторизации.
А вот при запросе дампа нам отвечают, что мы не указали нужный параметр. То есть никакой авторизации не требуется.
Так как нам интересна информация о пользователях, в качестве значения будем использовать users
. Но имя параметра нужно будет перебрать. Раз ответ пришел в формате JSON, передавать параметр мы будем так же. Для перебора я использовал Burp Intruder.
И находим название нужного параметра — download
. Ответ очень большой, поэтому сохраняем в файл и выводим в jq
.
Нам доступны хеши паролей пользователей, поэтому для перебора попробуем узнать алгоритм с помощью hashid
.
В качестве алгоритма шифрования, скорее всего, используется SHA-256. Давай выберем из списка все пары логинов и паролей.
Затем можно все последовательности .htbn
заменить двоеточием, тогда мы получим строки типа логин:
. Отправляем список программе John the Ripper и указываем формат хеша. Спустя несколько секунд получим пароль.
С полученными учетными данными мы можем авторизоваться на сайте.
Мы можем перейти к сниппетам и создать свой. Так у нас будет возможность менять и удалять его.
При изменении сниппета передаются его параметры и тип: публичный или нет. Тогда я решил перебрать идентификатор сниппета, чтобы узнать, как работает контроль доступа к изменению параметров. И у нас получилось сделать публичным чей‑то сниппет.
Просмотрим вытащенный нами сниппет и найдем там HTTP-заголовок базовой аутентификации. Декодируем строку Base64 и получаем учетные данные для пользователя jean
.
С полученными учетными данными можем авторизоваться в Gitea. Там нам доступен один проект.
Сам проект — это плагин браузера для быстрого оповещения об ошибках. В настройках проекта находим соавтора, это нам пригодится.
Просматривая историю изменений, обращаем внимание, что при публикации сообщения его текст должен фильтроваться.
Находим подобный фрагмент в коде текущего параметра.
Из сообщения удаляется любая последовательность символов, если она заключена в треугольные скобки, то есть похожа на HTML-тег. Также если присутствует последовательность символов, приведенных в переменной filter
. Но в самом регулярном выражении ошибка, так удалится только первое вхождение последовательности в тегах. Проверим это, для чего запустим веб‑сервер и отправим следующую строку:
qwe<qwe><img src="http://10.10.14.7/test">
В логах веб‑сервера увидим подключение, значит, можно проэксплуатировать хранимую XSS.
|
|