Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /
:
10.10.10.249 pikaboo.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
).
Мы нашли три открытых порта: 21 (служба VSFTPD 3.0.3), 22 (служба SSH) и 80 (веб‑сервер nginx 1.14.2). На SSH без учетных данных стучаться бесполезно, но и на FTP нам делать нечего: Nmap уже проверил возможность анонимного входа и не обнаружил ее.
Можно пробовать перебрать популярные логины для FTP. Ты легко найдешь готовые списки запросом вроде ftp
. Для этого будем использовать hydra (не путать с Ghidra). Опцией -t
установим 32 потока.
hydra -Lftp_username.txt -Pftp_password.txt -t32 pikaboo.htb ftp
Результат перебора учетных данныхИз этого ничего не вышло, поэтому перейдем к вебу.
Смотрим сайт и обнаруживаем, что он еще в разработке, о чем свидетельствуют сообщения «PokeAPI Integration - Coming soon!» на некоторых страницах.
Только при переходе к странице администратора нас встретит HTTP-аутентификация. Если отказаться от проверки учетных данных, получим следующее сообщение об ошибке доступа.
В этой ошибке интересно сообщение об использовании веб‑сервера Apache на порте 81. При этом обращались мы к порту 80, на котором работает веб‑сервер nginx (по крайней мере, нам об этом сообщил Nmap). Похоже, при обращении к каталогу администратора работает какая‑то внутренняя переадресация между серверами.
Если сталкиваешься с веб‑сервером nginx, всегда стоит искать уязвимость обхода путей. Она появляется при неправильно настроенных алиасах. Nginx alias — это некий псевдоним, который позволяет скрыть реальное местоположение объекта. Он задается в директиве location
. К примеру, следующая конфигурация установит замену /
на /
:
location /img/ {
alias /web/data/images/;
}
При обращении к /
веб‑сервер вернет файл /
. Уязвимость появляется при неправильном указании location
, к примеру как в следующей конфигурации:
location /img {
alias /web/data/images/;
}
В этом случае, если мы обратимся к /
, сервер вместо того, чтобы вернуть файл /
, выполнит прямую замену алиаса и попытается вернуть /
, тем самым обходя каталог images
.
Давай воспользуемся обходом через каталог admin
и просканируем содержимое сайта. Для этого мы будем сканировать адрес /
. Так как при обращении к странице /
происходит редирект на другой сервер, мы сможем просмотреть именно веб‑контент внутреннего сервиса на порте 81.
Чтобы найти скрытое содержимое на сайтах, применяется сканирование методом перебора каталогов. Для этого можно использовать программы вроде dirsearch и DIRB.
Я предпочитаю легкий и очень быстрый ffuf. При запуске укажем следующие параметры:
-w
— словарь (используем directory-list-2.3-medium из набора Seclists);-t
— количество потоков;-u
— URL;-fc
— исключить из результата ответы с кодом 403.Команда получается следующая:
ffuf -uhttp://pikaboo.htb/admin../FUZZ -w/home/ralf/tmp/wordlists/Content/dirs/files_interesting.txt -t 200
В результате я нашел несколько интересных файлов. Среди них — очень важный файл server-status
, в котором отражаются все запросы к веб‑серверу Apache. Он и раскрывает нам при обращении к http://
незнакомые до этого момента каталоги. В том числе http://
.
Мы нашли несколько страниц, на которые можем перейти. Если заглянуть в Burp History, то мы увидим, что желаемая страница передается в качестве значения параметра page
. А это вероятная уязвимость включения файлов, которую следует проверить.
При тесте Local File Inclusion можно просто отдать одному из сканеров директорий список с соответствующими нагрузками. Я для перебора использовал Burp Intruder со своими словарями (можешь поискать готовые на GitHub).
Первым делом определяем нагрузку, с помощью которой можно просмотреть доступный для всех системных пользователей файл на удаленном хосте. В результате перебора удалось прочитать файл /
через обход директорий последовательностью ../../../../..
.
На втором этапе в найденную нагрузку нужно подставлять самые важные системные файлы, информация из которых может помочь нам продвинуться дальше. Список опять же можно без проблем найти.
В результате атаки получаем всего пять доступных для просмотра файлов. Информация из них нам не особенно полезна, но лог службы FTP vsftpd.
все же окажет нам немалую услугу.
Есть несколько способов получить удаленное выполнение кода (RCE), имея LFI, и один из них я сейчас покажу. Дело в том, что мы можем заставить веб‑сервер обратиться к файлу логов службы FTP и таким образом косвенно выполнить туда запись. Например, если мы попытаемся авторизоваться от лица пользователя test_test_test
, то эта строка попадет в этот лог. Таким образом, мы можем записать в файл код на PHP и, обратившись к этому файлу через веб‑сервер, выполнить его!
|
|