Руководство для начинающих по тестированию на проникновение (часть 2)

Привет всем! Я снова с очередным постом в блоге об информационной безопасности или, более конкретно, о тестировании на проникновение.

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

Чтобы завершить эту мини-серию о тестировании на проникновение, сегодня в моем блоге мы рассмотрим цель из HackTheBox. Если быть более точным, мы рассмотрим один из их боксов под названием Blocky.

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

На цели существует два файла .txt, и ваша цель — передать содержимое обоих. Первый .txt-файл называется user.txt, и его отправка докажет HackTheBox, что вы достигли точки опоры. Второй файл .txt называется root.txt (даже в Windows), и его отправка докажет HackTheBox, что вы получили повышенные привилегии, они же привилегии root (администратора в Windows).

Флаг foothold обычно труднее всего получить, или, по крайней мере, он требует больше всего шагов, поскольку для этого нужно прочесать множество информации о службах, запущенных на сервере. Я намеренно не включил некоторые тупиковые ситуации, с которыми я столкнулся при выполнении этого блока.

Шаг 1: Foothold

Нам предоставлен следующий IP-адрес: 10.10.10.37
Первое, что я сделал, это запустил сканирование nmap, чтобы посмотреть, какие службы запущены на цели. Я указал -sV для версий и -p- для всех портов. -oN указывает nmap выводить данные в «формате nmap» в указанный файл.

Здесь мы видим ftp, ssh, http и сервер minecraft.
Давайте зайдем на сайт.


Он выглядит как некий блог. Некоторые могут узнать, что он похож на стандартную тему Twenty Seventeen WordPress. Чтобы узнать больше, я запустил сканирование подкаталога с помощью Gobuster, продолжая исследовать сайт вручную. Здесь я указал -u для url и -w для списка слов.

Просмотр исходного кода, сетевого трафика и т.д. не дал ничего особенно полезного, но в конце концов сканирование Gobuster завершилось и показало мне следующую информацию:

Ага! Здесь мы видим кучу сайтов с 403 (Forbidden) и несколько 301 (Redirects/Hits).
Также мы видим /phpmyadmin и /plugins, а также несколько сайтов wordpress.
Мы можем перейти к phpmyadmin и попробовать некоторые учетные данные по умолчанию, такие как root:root, admin:admin, root:admin и т.д.
Мы не получаем результата, и поскольку мы не знаем ни одного пользователя, мы не можем сейчас продвинуться дальше в этом направлении.

Однако есть отличный инструмент для сайтов WordPress под названием wpscan. Он автоматически просматривает посты, авторов, темы, активы и т.д., чтобы найти что-нибудь уязвимое или необычное.

Выполнив такую команду, как wpscan --url http://10.10.10.37/ --enumerate u, мы найдем пользователя по имени notch.

Между тем, если мы посетим /plugins, то увидим два файла .jar.

Я скачал первый из них, BlockyCore.jar, и распаковал его, чтобы найти файл BlockyCore.class. Используя декомпилятор Java, я смог прочитать его содержимое.


Похоже, мы нашли учетные данные!
Теперь у нас есть два пользователя: root и notch.
Вернувшись на сайт, мы можем посетить конечную точку /phpmyadmin и попробовать войти в систему.

Сработало! Теперь у нас есть доступ к phpMyAdmin и мы можем просматривать основную базу данных.

Обычно, получая доступ к панелям администратора, вы ищете способы загрузки файлов, чтения учетных данных, обновления разрешений и т.п. Поскольку phpmyadmin использует SQL, мы можем делать запросы к базе данных и т.д. Мы можем попробовать загрузить веб-оболочку, которая позволит нам выполнять команды на сервере. Следующая команда принимает входные данные и записывает их в /phpmyadmin/cmd.php (предполагается, что папка существует в /var/www/).

SELECT "<?php if($_GET['cmd']) {system($_GET['cmd']);} ?>"
INTO OUTFILE '/var/www/phpMyAdmin/cmd.php

Однако нам отказано в доступе. Но попробовать стоило.

Пока все хорошо…

Итак, что же мы имеем со всей собранной информацией? Ну, мы получили два имени пользователя и пароль от входа на порт 80. Мы смогли войти в phpmyadmin, но не смогли запустить оттуда никаких SQL-запросов.

Однако распространенным сценарием при работе с ленивыми разработчиками является повторное использование паролей. Не делайте этого, люди. Обзаведитесь менеджером паролей и генерируйте каждый раз новый уникальный пароль, пожалуйста.
В любом случае, как только мы получаем учетные данные, обычно хорошей идеей является поиск других сервисов, где мы могли бы попробовать эти учетные данные.

Давайте вспомним, что это были за другие службы:
Наше сканирование nmap показало, что запущенными службами были ftp, ssh, http и minecraft.

Мы пробуем использовать имя пользователя notch с паролем из предыдущей версии на ftp-сервере, и нам удается успешно войти в систему.
Здесь мы видим файл user.txt. Мы можем использовать команду «get» для загрузки файлов по ftp.


И мы награждены нашим первым флагом! Плацдарм достигнут!

Шаг 2: Повышение привилегий

С помощью учетных данных SAME notch, использованных для FTP, я также смог войти в систему по SSH.


Одна из первых вещей, которые необходимо перечислить при поиске возможности повышения привилегий в системе, это то, какими правами вы обладаете как пользователь. Можете ли вы выполнять некоторые команды с повышенными привилегиями?
Простой способ проверить это в Linux — выполнить команду sudo -l, которая выведет список всех ваших прав sudo.
Здесь мы видим, что мы можем выполнять (ALL: ALL) ALL. Это означает, что мы можем выполнить любую команду от имени суперпользователя.


Это делает очень легкую победу с помощью sudo su root. Вводим учетные данные для notch и бам! Мы — root.
Мы видим файл root.txt, доступный для чтения нашему пользователю.

И это оба доказательства, которые нам нужно предоставить, чтобы получить полные баллы на коробке!

Смогли ли вы проследить и понять все, что произошло?
Давайте быстро повторим наши действия:

  1. Мы просканировали сайт с помощью nmap
  2. На порту 80 мы нашли веб-сайт и выполнили сканирование списка подкаталогов с помощью Gobuster.
  3. Мы увидели файлы WordPress и с помощью wpscan нашли пользователя под именем notch
  4. В папке /plugins мы нашли файл .jar с некоторыми учетными данными.
  5. Мы попробовали повторно использовать учетные данные на других сервисах (foothold).
  6. Мы смогли войти в систему по SSH
  7. С помощью sudo -l мы перечислили наши привилегии и увидели, что мы можем выполнять любую команду от имени root
  8. Мы переключились на пользователя root с помощью команды sudo su root, которая дала нам флаг root.

Итак, на этом я завершаю свой второй пост и цикл статей о тестировании на проникновение!
Этот пост был немного длиннее и немного более техническим, чем первый, но перевод теоретических знаний в практическое применение часто помогает понять что-то новое.
Я надеюсь, что вы узнали что-то новое из этой мини-серии статей о тестировании на проникновение — или, по крайней мере, получили удовольствие от чтения 🙂 Не стесняйтесь задавать вопросы ниже!

Оцените статью
Procodings.ru
Добавить комментарий