image

Продолжаю публикацию решений отправленных на дорешивание машин с площадки 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

image

Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.

nmap -A scavenger.htb -p 21,22,25,43,53,80

image

Из вывода 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

image

Добавляем данные записи в /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-адресов и автономных систем.

image

Так как используются SQL базы данных, то отправим запрос с кавычкой и заметим ошибку, выдаваемую сервисом.

image

Таким образом присутствует SQL инъекция.

image

Сначала вычисляем количество столбцов, а также ту колонку, которая выводится пользователю.

image

Так получаем число колонок — 2, и то что выводится первая. Далее узнаем таблицы и названия колонок.

image

И теперь читаем все домены, которые знает сервис.

image

Находим новые имена, которые добавляем в /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

Теперь выполним трансфер зоны с найденного имени.

image

image

image

Таким образом, находя новые имена, дополняем файл /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, из которого делаем вывод, что сервис уже был взломан.

image

И переходя к sec03.rentahacker.htb видим тому подтверждение.

image

Просканируем директории и файлы с помощью 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

image

Находим интересную страницу — 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

image

Находим параметр, проверим его.

image

Проверим директорию /home.

image

Теперь осмотримся в домашней директории пользователя.

image

Просматриваем конфиги WordPress и получаем логин и пароль пользователя для подключения к базе данных.

image

К SSH данный пароль не подошел, но подошел к ftp и это нам ничего не дало. На хосте работает почтовая служба, поэтому есть смысл проверить сообщения пользователя.

image

И находим еще одни учетные данные. Скачиваем все что есть на FTP.

wget -m --no-passive ftp://ib01ftp:YhgRt56_Ta@ftp.supersechosting.htb

image

Заходим в директорию, в которую скачали файлы и смотрим, что имеем. Там записка, лог и дамп трафика.

image

Откроем Wireshark и посмотрим, что там. Судя по логу, нас интересует HTTP сессия, давайте посмотрим все HTTP объекты: Файл -> Экспортировать объекты -> HTTP.

image

Из всего, что было представлено, сохраним код root.c

image

Далее перейдем в основное окно Wireshark и проверим какие-нибудь учетные данные. Так имеем три POST запроса, в них передается пароль.

image

Данный пароль подошел для аутентификации в FTP.

image

Также имеется странная директория — “...”. В ней лежал собранный root.ko.

image

image

Давайте проанализируем исходный код.

image

С самого начала становится ясно, с каким устройством мы имеем дело. Проверим, имеется ли это устройство в системе.

image

Все верно, устройство есть. В коде нас интересует одна функция, которая после проверки поданной на вход строки, предоставит доступ от имени пользователя с uid равным 0, то есть root.

image

Теперь откроем программу в декомпиляторе и найдем функцию root_write.

image

Код немного изменен и вместо строки g0tROot верная строка — g3tPr1v. Вернемся к первоначальному шелу и после получения прав root посмотрим его домашнюю директорию.

image

Забираем флаг.

image

Вы можете присоединиться к нам в Telegram. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.