Vander
26.10.2016, 22:01
Всем привет. В этой публикации я продемонстрирую взлом уязвимой машины Sick OS (ссылка на скачивание в конце) статьи в рамках соревнований CTF, кто не в курсе, о чем речь - https://codeby.net/threads/ctf-vzlom-mr-robot-vm.57930/ (https://forum.antichat.xyz/threads/1617930/) тут подробное описание. От себя хочу добавить, что это ОС довольно увлекательна, т.к. поддалась далеко не сразу, и неплохо размяла мозги. Итак, Sick OS 1.1. в роли атакующей ОС Kali Linux 2016.2, приступим:
https://forum.antichat.xyz/attachments/28942342/img_7d60864976.png
Для начала я использовал arp-scan (ARP-scan – Это, очень быстрый сканер устройств в локальной сети, использующий протокол ARP) для обнаружения Sick OS в моей сети:
> arp-scan –l (Почему именно l – можно узнать запустив сканер с флагом -- help)
https://forum.antichat.xyz/attachments/28942342/img_b0108e0444.png
Затем nmap для обнаружения открытых портов и дополнительной информации:
> nmap –sV 172.XX.X.XXX
https://forum.antichat.xyz/attachments/28942342/img_3803dc6455.png
На этом скриншоте видим, что на системе поднят http-proxy сервер с помощью Squid.
Собственно Squid– это программное обеспечение с открытой лицензией GNU GPL, позволит организовать прокси-сервер для протоколов HTTP, FPT, HTTPS. Так же он может работать на большинстве операционных систем (UNIX, Windows). Функционал позволяет обрабатывать и кэшировать HTTP, FTP, SSL и WAIS запросы, а так же DNS. Наиболее частые запросы хранит в оперативной памяти. Применение прокси-сервера дает возможность использовать фиктивные IP-адреса во внутренней сети, увеличит скорость обработки запроса при повторном обращении (кэширование), и обеспечивает дополнительную безопасность.
Схематически Squid можно представить так:
https://forum.antichat.xyz/attachments/28942342/img_bb9a023425.png
Теперь, основываясь на результатах, можно поискать какой-нибудь инструмент против Squid в Metasploit Framework.
> msfconsole
> search squid
https://forum.antichat.xyz/attachments/28942342/img_14c8cc0e01.png
Выбор невелик, будем использовать auxiliary/scanner/http/squid_pivot_scanning.
Объясню почему, неверно настроенный Squid proxy может позволить злоумышленнику выполнять запросы от его имени. Это позволит получить информацию об устройствах, к которым имеет доступ сам сервер. Например, если прокси-сервер подключен к интернету, то атакующий может сделать запрос на внутренние адреса сервера, заставив запустить сервер сканирование внутренних портов. Сообщения об ошибках возвращаемых сервером позволит определить, закрыт порт или нет. Конечно, многие Squid используют пользовательские коды ошибок, поэтому результат может варьироваться.
Запустим сканер и посмотрим его настройки.
https://forum.antichat.xyz/attachments/28942342/img_3d37c5e81d.png
Для начала настроим сканер, затем запустим его:
> set RANGE 172.16.0.XXX
> set RHOSTS 172.16.0.XXX
> set RPORT 3128
> set THREADS 200
> run
https://forum.antichat.xyz/attachments/28942342/img_82da99246e.png
Смотрим на итог сканирования и видим, то, о чем я говорил выше, сервер запустил сканирование портов и возвратил нам результаты.
https://forum.antichat.xyz/attachments/28942342/img_982e74f28e.png
Внутренний порт Squid 80 – открыт, используя надстройку в Firefox - FoxyProxy и настроив ее, как показано на скриншоте:
https://forum.antichat.xyz/attachments/28942342/img_a61d4cbd15.png
Можем обратиться к серверу в адресной строке – 172.16.0.XXX
https://forum.antichat.xyz/attachments/28942342/img_5a7b7f0a3e.png
С помощью веб-сканера nikto попробуем раздобыть больше информации о веб-сервере.
> nikto -h localhost -useproxy http://172.XX.X.XXX:3128
https://forum.antichat.xyz/attachments/28942342/img_8e772e8e34.png
Помимо уязвимостей выделенных красным цветом, был обнаружен файл robots.txt на него обратим внимание в первую очередь, к уязвимостям, если понадобится, вернемся позже. Смотрим в robots.txt
https://forum.antichat.xyz/attachments/28942342/img_f9b7dd7b60.png
Отлично, есть папка wolfcms, зайдем и осмотримся. Серфинг по страницам показывает все время один и тот же префикс к файлам - ?
https://forum.antichat.xyz/attachments/28942342/img_70a4246d63.png
Немного погуглив, я узнал, что в wolfcms есть папка администратора, и, обратившись к ней мы найдем форму логина:
https://forum.antichat.xyz/attachments/28942342/img_8effbdfd58.png
Тут я просто по случайности испробовал любимую связку логина и пароля admin/admin и зашел под администратором
Далее меня заинтересовала возможность загрузить и затем исполнить какой-нибудь реверс-шелл файл. Выбор пал на скачанный с link removed php-reverse-shell. Перед загрузкой его на сервер необходимо внести некоторые коррективы, это порт и IP адрес. В папке куда распаковали, пишем:
> nano php-reverse-shell.php
Находим указанные строки и корректируем их так, только указав свои данные.
https://forum.antichat.xyz/attachments/28942342/img_3632e39bdd.png
Сохраним изменения и закроем. Теперь можно загрузить его на сервер.
https://forum.antichat.xyz/attachments/28942342/img_2ecf929cf2.png
Подготовим свою машину к соединению, используем netcat – это предустановленная в Линукс утилита, которая позволяет устанавливать TCP и UDP соединения и обмениваться данными. Вводим в командной строке:
> nc –l –p 4444
Если все сделано, верно, то обратившись на сервер по адресу:
https://forum.antichat.xyz/attachments/28942342/img_cc3be2a797.png
Увидим следующую картину:
https://forum.antichat.xyz/attachments/28942342/img_608a64d3d3.png
Изрядно побродив по серверу, я наткнулся на файл config.php в директории /var/www/wolfcms/. Открываем его просмотр:
> cap config.php
Здесь поджидает удача, и возможномы находим логин и пароль от root пользователя.
https://forum.antichat.xyz/attachments/28942342/img_e9905723b7.png
Теперь можно вспомнить про SHH доступ, т.к. порт 22 открыт. Но сначала можно заглянуть в etc/passwd, это файл, содержащий в текстовом формате список пользовательских аккаунтов.
> cat /etc/passwd
Это сделано для того, если найденный пароль не подойдет к руту, то наверняка, подойдет к другому пользователю.
https://forum.antichat.xyz/attachments/28942342/img_b277261df1.png
Пришло время использовать SSH, сразу скажу, что к root найденный пароль не подошел…
Но спустя несколько попыток, я успешно залогинился в системе под учетной записью sickos.
https://forum.antichat.xyz/attachments/28942342/img_8f9baec677.png
Теперь можно попробовать стать root:
> id (покажет сводную информацию о пользователе)
> sudo –I (быстрый путь получения root, т.к. мы находимся в группе sudo)
> whoami (стали root)
https://forum.antichat.xyz/attachments/28942342/img_47d3b21cd2.png
Осмотримся и найдем файл с длинным названием. Затем откроем его просмотр:
https://forum.antichat.xyz/attachments/28942342/img_6d675d79ca.png
На этом прохождениe Sick OS 1.1. можно считать успешно законченным. Спасибо за внимание. Вопросы, как обычно, жду в комментариях.
Ссылка на скачивание Sick OS 1.1. - https://www.vulnhub.com/entry/sickos-11,132/
https://forum.antichat.xyz/attachments/28942342/img_7d60864976.png
Для начала я использовал arp-scan (ARP-scan – Это, очень быстрый сканер устройств в локальной сети, использующий протокол ARP) для обнаружения Sick OS в моей сети:
> arp-scan –l (Почему именно l – можно узнать запустив сканер с флагом -- help)
https://forum.antichat.xyz/attachments/28942342/img_b0108e0444.png
Затем nmap для обнаружения открытых портов и дополнительной информации:
> nmap –sV 172.XX.X.XXX
https://forum.antichat.xyz/attachments/28942342/img_3803dc6455.png
На этом скриншоте видим, что на системе поднят http-proxy сервер с помощью Squid.
Собственно Squid– это программное обеспечение с открытой лицензией GNU GPL, позволит организовать прокси-сервер для протоколов HTTP, FPT, HTTPS. Так же он может работать на большинстве операционных систем (UNIX, Windows). Функционал позволяет обрабатывать и кэшировать HTTP, FTP, SSL и WAIS запросы, а так же DNS. Наиболее частые запросы хранит в оперативной памяти. Применение прокси-сервера дает возможность использовать фиктивные IP-адреса во внутренней сети, увеличит скорость обработки запроса при повторном обращении (кэширование), и обеспечивает дополнительную безопасность.
Схематически Squid можно представить так:
https://forum.antichat.xyz/attachments/28942342/img_bb9a023425.png
Теперь, основываясь на результатах, можно поискать какой-нибудь инструмент против Squid в Metasploit Framework.
> msfconsole
> search squid
https://forum.antichat.xyz/attachments/28942342/img_14c8cc0e01.png
Выбор невелик, будем использовать auxiliary/scanner/http/squid_pivot_scanning.
Объясню почему, неверно настроенный Squid proxy может позволить злоумышленнику выполнять запросы от его имени. Это позволит получить информацию об устройствах, к которым имеет доступ сам сервер. Например, если прокси-сервер подключен к интернету, то атакующий может сделать запрос на внутренние адреса сервера, заставив запустить сервер сканирование внутренних портов. Сообщения об ошибках возвращаемых сервером позволит определить, закрыт порт или нет. Конечно, многие Squid используют пользовательские коды ошибок, поэтому результат может варьироваться.
Запустим сканер и посмотрим его настройки.
https://forum.antichat.xyz/attachments/28942342/img_3d37c5e81d.png
Для начала настроим сканер, затем запустим его:
> set RANGE 172.16.0.XXX
> set RHOSTS 172.16.0.XXX
> set RPORT 3128
> set THREADS 200
> run
https://forum.antichat.xyz/attachments/28942342/img_82da99246e.png
Смотрим на итог сканирования и видим, то, о чем я говорил выше, сервер запустил сканирование портов и возвратил нам результаты.
https://forum.antichat.xyz/attachments/28942342/img_982e74f28e.png
Внутренний порт Squid 80 – открыт, используя надстройку в Firefox - FoxyProxy и настроив ее, как показано на скриншоте:
https://forum.antichat.xyz/attachments/28942342/img_a61d4cbd15.png
Можем обратиться к серверу в адресной строке – 172.16.0.XXX
https://forum.antichat.xyz/attachments/28942342/img_5a7b7f0a3e.png
С помощью веб-сканера nikto попробуем раздобыть больше информации о веб-сервере.
> nikto -h localhost -useproxy http://172.XX.X.XXX:3128
https://forum.antichat.xyz/attachments/28942342/img_8e772e8e34.png
Помимо уязвимостей выделенных красным цветом, был обнаружен файл robots.txt на него обратим внимание в первую очередь, к уязвимостям, если понадобится, вернемся позже. Смотрим в robots.txt
https://forum.antichat.xyz/attachments/28942342/img_f9b7dd7b60.png
Отлично, есть папка wolfcms, зайдем и осмотримся. Серфинг по страницам показывает все время один и тот же префикс к файлам - ?
https://forum.antichat.xyz/attachments/28942342/img_70a4246d63.png
Немного погуглив, я узнал, что в wolfcms есть папка администратора, и, обратившись к ней мы найдем форму логина:
https://forum.antichat.xyz/attachments/28942342/img_8effbdfd58.png
Тут я просто по случайности испробовал любимую связку логина и пароля admin/admin и зашел под администратором
Далее меня заинтересовала возможность загрузить и затем исполнить какой-нибудь реверс-шелл файл. Выбор пал на скачанный с link removed php-reverse-shell. Перед загрузкой его на сервер необходимо внести некоторые коррективы, это порт и IP адрес. В папке куда распаковали, пишем:
> nano php-reverse-shell.php
Находим указанные строки и корректируем их так, только указав свои данные.
https://forum.antichat.xyz/attachments/28942342/img_3632e39bdd.png
Сохраним изменения и закроем. Теперь можно загрузить его на сервер.
https://forum.antichat.xyz/attachments/28942342/img_2ecf929cf2.png
Подготовим свою машину к соединению, используем netcat – это предустановленная в Линукс утилита, которая позволяет устанавливать TCP и UDP соединения и обмениваться данными. Вводим в командной строке:
> nc –l –p 4444
Если все сделано, верно, то обратившись на сервер по адресу:
https://forum.antichat.xyz/attachments/28942342/img_cc3be2a797.png
Увидим следующую картину:
https://forum.antichat.xyz/attachments/28942342/img_608a64d3d3.png
Изрядно побродив по серверу, я наткнулся на файл config.php в директории /var/www/wolfcms/. Открываем его просмотр:
> cap config.php
Здесь поджидает удача, и возможномы находим логин и пароль от root пользователя.
https://forum.antichat.xyz/attachments/28942342/img_e9905723b7.png
Теперь можно вспомнить про SHH доступ, т.к. порт 22 открыт. Но сначала можно заглянуть в etc/passwd, это файл, содержащий в текстовом формате список пользовательских аккаунтов.
> cat /etc/passwd
Это сделано для того, если найденный пароль не подойдет к руту, то наверняка, подойдет к другому пользователю.
https://forum.antichat.xyz/attachments/28942342/img_b277261df1.png
Пришло время использовать SSH, сразу скажу, что к root найденный пароль не подошел…
Но спустя несколько попыток, я успешно залогинился в системе под учетной записью sickos.
https://forum.antichat.xyz/attachments/28942342/img_8f9baec677.png
Теперь можно попробовать стать root:
> id (покажет сводную информацию о пользователе)
> sudo –I (быстрый путь получения root, т.к. мы находимся в группе sudo)
> whoami (стали root)
https://forum.antichat.xyz/attachments/28942342/img_47d3b21cd2.png
Осмотримся и найдем файл с длинным названием. Затем откроем его просмотр:
https://forum.antichat.xyz/attachments/28942342/img_6d675d79ca.png
На этом прохождениe Sick OS 1.1. можно считать успешно законченным. Спасибо за внимание. Вопросы, как обычно, жду в комментариях.
Ссылка на скачивание Sick OS 1.1. - https://www.vulnhub.com/entry/sickos-11,132/