Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ. В данной статье много поработаем с FTP и DNS, проэксплуатируем SQLi в сервисе whois, а также пройдемся по следам другого взлома, а именно найдем шелл, подберем параметр, и поанализируем логи и дамп трафика.
Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ 🙂
- PWN;
- криптография (Crypto);
- cетевые технологии (Network);
- реверс (Reverse Engineering);
- стеганография (Stegano);
- поиск и эксплуатация WEB-уязвимостей.
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Recon
Данная машина имеет IP адрес 10.10.10.155, который я добавляю в /etc/hosts.
10.10.10.155 scavenger.htb
Первым делом сканируем открытые порты. Так как сканировать все порты nmap’ом долго, то я сначала сделаю это с помощью masscan. Мы сканируем все TCP и UDP порты с интерфейса tun0 со скоростью 500 пакетов в секунду.
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.155 --rate=500
Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.
nmap -A scavenger.htb -p 21,22,25,43,53,80
Из вывода nmap можно обнаружить, что на хосте работают службы FTP, SSH, SMTP (доступна по домену ib01.supersechosting.htb), также служба whois, использующая СУБД MariaDB (засвечено еще одно доменное имя — www.supersechosting.htb), служба DNS и веб-сервер Apache.
Добавляем найденные домены в /etc/hosts.
10.10.10.155 scavenger.htb ib01.supersechosting.htb www.supersechosting.htb
Давайте попробуем найти еще dns-имена. Попробуем сделать Трансфер зоны DNS с помощью dig.
dig axfr supersechosting.htb @10.10.10.155
Добавляем данные записи в /etc/hosts.
10.10.10.155 scavenger.htb ib01.supersechosting.htb www.supersechosting.htb supersechosting.htb ftp.supersechosting.htb mail1.supersechosting.htb ns1.supersechosting.htb whois.supersechosting.htb
Далее пойдем на WHOIS сервис, основное применение которого — получение регистрационных данных о владельцах доменных имён, IP-адресов и автономных систем.
Так как используются SQL базы данных, то отправим запрос с кавычкой и заметим ошибку, выдаваемую сервисом.
Таким образом присутствует SQL инъекция.
Сначала вычисляем количество столбцов, а также ту колонку, которая выводится пользователю.
Так получаем число колонок — 2, и то что выводится первая. Далее узнаем таблицы и названия колонок.
И теперь читаем все домены, которые знает сервис.
Находим новые имена, которые добавляем в /etc/hosts.
10.10.10.155 scavenger.htb ib01.supersechosting.htb www.supersechosting.htb supersechosting.htb ftp.supersechosting.htb mail1.supersechosting.htb ns1.supersechosting.htb whois.supersechosting.htb justanotherblog.htb pwnhats.htb rentahacker.htb
Теперь выполним трансфер зоны с найденного имени.
Таким образом, находя новые имена, дополняем файл /etc/hosts
10.10.10.155 scavenger.htb ib01.supersechosting.htb www.supersechosting.htb supersechosting.htb ftp.supersechosting.htb mail1.supersechosting.htb ns1.supersechosting.htb whois.supersechosting.htb justanotherblog.htb pwnhats.htb rentahacker.htb www.justanotherblog.htb www.pwnhats.htb www.rentahacker.htb sec03.rentahacker.htb
Обойдя все сайты, ничего существенного не имеем, кроме одного сообщения с www.rentahacker.htb, из которого делаем вывод, что сервис уже был взломан.
И переходя к sec03.rentahacker.htb видим тому подтверждение.
Просканируем директории и файлы с помощью gobuster. Укажем словарь из dirb, количество потоков 120, также интересующие коды ответов сервера и допустимую задержку ответа 20 секунд.
gobuster dir -w /usr/share/wordlists/dirb/big.txt -t 120 -e -x php -u http://sec03.rentahacker.htb/ -s "200,204,301,302,307,401" --timeout 20s
Находим интересную страницу — shell.php, при обращении к которой, ничего не происходит. Скорее всего это происходит, так как мы обращаемся к странице без параметров. Давайте переберем параметры с помощью wfuzz, указав в параметрах список, и то что количество слов в ответе не должно быть равным 0.
wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt --hw 0 http://sec03.rentahacker.htb/shell.php?FUZZ=id
Находим параметр, проверим его.
Проверим директорию /home.
Теперь осмотримся в домашней директории пользователя.
Просматриваем конфиги WordPress и получаем логин и пароль пользователя для подключения к базе данных.
К SSH данный пароль не подошел, но подошел к ftp и это нам ничего не дало. На хосте работает почтовая служба, поэтому есть смысл проверить сообщения пользователя.
И находим еще одни учетные данные. Скачиваем все что есть на FTP.
wget -m --no-passive ftp://ib01ftp:YhgRt56_Ta@ftp.supersechosting.htb
Заходим в директорию, в которую скачали файлы и смотрим, что имеем. Там записка, лог и дамп трафика.
Откроем Wireshark и посмотрим, что там. Судя по логу, нас интересует HTTP сессия, давайте посмотрим все HTTP объекты: Файл -> Экспортировать объекты -> HTTP.
Из всего, что было представлено, сохраним код root.c
Далее перейдем в основное окно Wireshark и проверим какие-нибудь учетные данные. Так имеем три POST запроса, в них передается пароль.
Данный пароль подошел для аутентификации в FTP.
Также имеется странная директория — “…”. В ней лежал собранный root.ko.
Давайте проанализируем исходный код.
С самого начала становится ясно, с каким устройством мы имеем дело. Проверим, имеется ли это устройство в системе.
Все верно, устройство есть. В коде нас интересует одна функция, которая после проверки поданной на вход строки, предоставит доступ от имени пользователя с uid равным 0, то есть root.
Теперь откроем программу в декомпиляторе и найдем функцию root_write.
Код немного изменен и вместо строки g0tROot верная строка — g3tPr1v. Вернемся к первоначальному шелу и после получения прав root посмотрим его домашнюю директорию.
Забираем флаг.
Вы можете присоединиться к нам в Telegram. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
ссылка на оригинал статьи https://habr.com/ru/post/490602/
Добавить комментарий