Брут phpmyadmin kali linux

Методы проникновения в линуксовые системы (часть 3): phpMyAdmin

В этой статье продемонстрирован один из способов получение шелла с правами суперпользователя в удаленной линуксовой системе при помощи уязвимой конфигурации phpMyAdmin

Автор: Scott Sutherland

В этой статье мы поговорим об эксплуатации небезопасных конфигураций phpMyAdmin и файлов, доступных для записи всем и каждому, с целью получения шелла с правами суперпользователя. Этот кейс в основном появляется в конкурсах навроде CTF (Capture the flag; Захват флага), но рассматриваемый подход для проникновения через phpMyAdmin может быть адаптирован ко многим другим веб-приложениям. Статья будет полезна как для начинающих в сфере тестирования на проникновение, так и для тех, кто желает освежить знания в области атак на phpMyAdmin.

Это третья из пяти частей, предусмотренных в этой серии, где рассматриваются методы проникновения и расширения локальных привилегий в линуксовых системах, которые используются во время реальных пентестов.

Что такое phpMyAdmin

phpMyAdmin представляет собой веб-приложение, используемое для управления локальными базами данных MySQL, которое обычно можно найти в средах всех масштабов и иногда доступное всем пользователям интернета. phpMyAdmin зачастую идет как часть проектов с открытым исходным кодом, в результате чего некоторые системные администраторы даже не подозревают о присутствии этого приложения в системе. Разработчики также используют phpMyAdmin в тестовых средах, что в итоге приводит к неконтролируемым инсталляциям в корпоративных сетях на постоянной основе. Поскольку мы встречаем phpMyAdmin довольно часто, я считаю, что нужно рассмотреть это приложения в контексте безопасности и проникновения в систему.

Начнем с поиска систем, где установлен phpMyAdmin.

Поиск серверов с phpMyAdmin

phpMyAdmin обычно находится на сервере Apache, но не только. Иногда это веб-приложение устанавливается в корневую директорию, но наиболее часто в папку /phpMyAdmin и, например, может быть доступно по адресу http://server/phpMyAdmin.

С учетом вышесказанного мы будем искать веб-сервера с phpMyAdmin, используя уже полюбившийся нам сканер портов Nmap:

Далее в сформированном файле phpMyAdmin_scan.gnmap ищем сервера с открытыми портами при помощи команды ниже:

Рисунок 1: Перечень серверов с открытыми портами

В результаты мы нашли несколько серверов с Apache. Теперь нужно определить, где установлен phpMyAdmin: в корневой директории или в папке /phpMyAdmin.

Доступ к средам с NAT

Чтобы не усложнять жизнь, мы предполагаем, что все тесты проводятся из системы, находящейся в среде с NAT. То есть мы будем подключаться к SSH-серверу, находящимся за фаерволом, но среда, которую мы атакуем, находится в стороне от фаервола.

Поскольку подключение к среде с NAT происходит через SSH, мы будем переадресовывать порт 80 через SSH-туннель для доступа к веб-серверу с IP-адресом 192.168.1.171. В большинстве случаев нам не понадобится переадресация портов, но я думаю, рассмотреть этот сценарий было бы полезно. Подробный рассказ о SSH-туннелях и SOCKS-прокси выходит за рамки статьи, однако ниже показана схема, иллюстрирующая наш случай.

Рисунок 2: Схема туннелинга к веб-серверу

Ниже показано два примера SSH-туннелинга к целевому веб-серверу.

Для Линукса (клиент SSH):

Для Windows (клиент PuTTTY):

Рисунок 3: Настройка туннелинга в приложении PuTTY

После настройки переадресации портов мы можем подключаться к phpMyAdmin, вводя адрес http://127.0.0.1:2222/phpmyadmin в нашем локальном браузере.

Рисунок 4: Подключение к PHPMyAdmin

Атака с использованием словаря

Как только мы нашли сервер с phpMyAdmin, следующий шаг – проверить, используется ли учетная запись по умолчанию (пользователь root без пароля). В нашем случае предполагается, что стандартный аккаунт не используется, однако еще не все потеряно. Мы можем реализовать простейший сценарий с использованием словаря и проверить наиболее часто встречающиеся комбинации имени пользователя и пароля. В реальной жизни желательно всегда проверять, не приведет ли атака по словарю к блокировке учетной записи.

Есть множество прекрасных словарей, однако мы воспользуемся списком, указанным ниже:

Вы также можете воспользоваться утилитой навроде Burp Intruder с целью реализации атак по словарю против phpMyAdmin и других веб-приложений (на эту тему есть хорошая статья). В качестве альтернативы мы будем пользоваться Metasploit, поскольку у этой утилиты есть встроенный модуль для реализации атак подобного рода. Ниже показан базовый перечень команд.

Читайте также:  Windows server versions and features

Примечание: Metasploit по умолчанию идет в составе дистрибутива Kali Linux.

Ниже показан наглядный пример успешной реализации атаки по словарю.

Рисунок 5: Пример успешной реализации атаки с использованием словаря

Если после реализации атаки обнаружена рабочая учетная запись, можно логиниться и переходить к следующему шагу. Ниже показана видеодемонстрация атаки по словарю при помощи Metasploit.

Загрузка веб-шеллов на сервер через PHPMyAdmin

После нахождения валидной учетной записи следующий шаг – поиск функциональности, позволяющей выполнять команды операционной системы на сервере. MySQL поддерживает пользовательские функции, которые можно использовать для решения нашей задачи, однако мы будем загружать веб-шелл в корневую директорию при помощи функции OUTFILE.

Примечание: в большинстве многоуровневых сред запись веб-шелла в корневую директорию через SQL-инъекцию работать не будет, поскольку база данных и веб-сервер находятся в разных местах. В этом отношении phpMyAdmin является исключением. Другие примеры: LAMP, WAMP и XAMPP. Кроме того, следует отметить, что в некоторых средах у учетной записи служб mysql может не быть прав на запись в корневую директорию или в папку phpMyAdmin.

Кликните на кнопку «SQL», чтобы появилось окно для ввода запросов. Затем выполните запрос, приведенный на рисунке ниже, для загрузки на сервер веб-шелла, написанного на PHP, который можно использовать для выполнения команд в операционной системе от имени учетной записи службы Apache. Помните, что phpMyAdmin не всегда может быть установлен в директории /var/www/phpMyAdmin, если вы работаете в реальных средах.

Актуальный код можно загрузить по ссылке, однако ниже продемонстрирован пример в контексте работы с phpMyAdmin.

Рисунок 6: Выполнение кода для загрузки веб-шелла

Теперь загруженный веб-шелл доступен по адресу http://127.0.0.1:2222/phpMyAdmin/cmd.php, и мы можем попробовать выполнить команды в операционной системе и расширить привилегии. Ниже показаны команды, с которых можно начать:

Рисунок 7: Первоначальные команды, выполняемые сразу же после загрузки шелла

Ниже показано видео, иллюстрирующее весь процесс.

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

Поиск файлов, доступных для записи

Пришло время поискать файлы и папки, доступные для записи всем пользователям. Присутствие в системе подобных файлов и папок – не обязательно плохо, однако если есть возможность прямого или косвенного запуска от имени суперпользователя, тогда появляются шансы на повышение привилегий.

Ниже показана команда, запускаемая через загруженный шелл, для поиска файлов и папок подобного рода:

find / -maxdepth 3 -type d -perm -777 2>/dev/null

Рисунок 8: Результаты поиска файлов и папок, доступных для записи всем пользователям

Теперь мы можем начать исследование найденных файлов на предмет эксплуатации, а также поискать потенциально уязвимые цели.

Рисунок 9: Содержимое одной из папок, доступной для записи

Эксплуатация скрипта rootcron.sh

В нашем случае одна из директорий, доступная для записи, — /scripts/. В этой папке, по-видимому, содержится скрипт, для запуска заданий cron от имени суперпользователя. Подобная возможность встречается нечасто, но бывает. Ту же технологию можно применить к скриптам, используемым вместе с командой sudo. Есть много всего, что можно записать в скрипт для выполнения заданий, однако мы добавим строчку для запуска слушателя netcat от имени root, после чего подключимся к этому слушателю с нашей машины.

Рисунок 10: Содержимое скрипта для выполнения заданий после добавления новой строки

Нужно подождать, пока задача запустится, после чего вы сможете подключиться к слушателю на порту 12345 из вашей системы.

nc 192.168.1.171 12345

Рисунок 11: Команды, выполняемые после подключения к слушателю

Понимаю, что этот сценарий во многом учебный, но иногда реальность намного превосходит ожидания. Хотя подобные ситуации встречаются нечасто, мы наблюдали очень похожие случаи во время реальных пентестов. Для сценариев, требующих реверсивного шелла, вместо bind-шелла, на сайте pentestmonkey.net приведено несколько полезных опций. Ниже показано видео, демонстрирующее процесс установки слушателя netcat.

Заключение

В этой статье продемонстрирован один из способов получение шелла с правами суперпользователя в удаленной линуксовой системе при помощи уязвимой конфигурации phpMyAdmin и скрипта, выполняемого от имени root, который доступен для записи. Хотя есть множество способов решить одну и ту же задачу, я считаю, что мораль этой истории такова: админ-панели веб-приложений могут быть весьма доступными целями и часто становятся отправной точкой для выполнения команд операционной системы. Кроме того, обнаружение и поддержка доступных веб-приложений является важной частью в сфере повышения безопасности, которой зачастую пренебрегают. Надеюсь, эта статья оказалась полезной как начинающим пентестерам, так и специалистам, которые пытаются оценить возможные последствия от небезопасных конфигураций веб-приложений навроде phpMyAdmin.

Читайте также:  Oracle linux epel repo

Источник

Brute-force встроенными средствами Kali Linux

Рано или поздно у всех администраторов возникает необходимость в подборе паролей к своим сервисам, не важно в связи с чем возникла необходимость (новое рабочее место, плохая память, бывший сотрудник насолил и т.п.).

Хочу Вам представить статью о том, как можно попытаться востановить свои утерянные пароли к сервисам. Статья схабрена и огромное спасибо авторам из Pentestit.

Дисклеймер: Данная статья написана только в образовательных целях и автор не несёт ответственности за ваши действия. Ни в коем случае не призываем читателей на совершение противозаконных действий. Материал размещен только с целью ознакомления и принятию мер по обеспечению безопасности. Использование материалов в противоправных и противозаконных запрещено законом РК.

Ликбез

Brute-force (атака полным перебором) – метод решения математических задач, сложность которого зависит от количества всех возможных решений. Сам же термин brute-force обычно используется в контексте хакерских атак, когда злоумышленник пытается подобрать логин/пароль к какой-либо учетной записи или сервису.

Рассмотрим инструменты, которые можно использовать для выполнения brute-force атак на SSH и WEB-сервисы, доступные в Kali Linux (Patator, Medusa, Hydra, Metasploit), а также BurpSuite и даже самый известный сетевой сканер nmap.

Brute-force SSH

Для примера возьмем тестовую машину 192.168.60.50 и попробуем подобрать пароль пользователя test по SSH.

Мы будем использовать популярные пароли из стандартного словаря rockyou.txt. Этот и другие словари доступны в свободном доступе на гитхабе.

Patator

Для подбора пароля средствами Patator используем команду:

где:
ssh_login — необходимый модуль
host – наша цель
user – логин пользователя, к которому подбирается пароль или файл с логинами для множественного подбора
password – словарь с паролями
-x ignore:mesg=’Authentication failed’ — команда не выводить на экран строку, имеющую данное сообщение. Параметр фильтрации подбирается индивидуально.

Hydra

Для подбора пароля используя Hydra выполним команду:

где:
-V – показывать пару логин+пароль во время перебора
-f – остановка как только будет найден пароль для указанного логина
-P – путь до словаря с паролями
ssh://192.168.60.50 – указание сервиса и IP-адрес жертвы

Medusa

Для подбора пароля с использованием Medusa выполним команду:

где:
-h – IP-адрес жертвы
-u – логин
-P – путь к словарю
-M – выбор модуля
-f – остановка после нахождения валидной пары логин/пароль
-v – настройка отображения сообщений на экране во время процесса подбора

Metasploit

Произведем поиск инструмента для проведения brute-force атаки по SSH:

search ssh_login и получили ответ:

Для просмотра необходимых параметров, воспользуемся командой show options. Для нас это:
rhosts – IP-адрес жертвы
rport – порт
username – логин SSH
userpass_file – путь до словаря
stop_on_success – остановка, как только найдется пара логин/пароль
threads – количество потоков

Указание необходимых параметров производится через команду “set“.

Указав необходимые параметры набираем команду “run” и ждем.

Противодействие

Ограничить количество устанавливаемых соединений с использованием межсетевого экрана.

Пример настройки iptables:

Такое правило установит ограничение доступа к SSH для каждого IP-адреса до 1 соединения в секунду, значительно усложнив перебор. Также эффективным решением может быть использование двухфакторной аутентификации (например, используя eToken) или аутентификации с использованием ключевой пары, а также использование ACL на основе IP-адресов.

Brute-force WordPress

Рассмотрим другой пример — подбор пароля окна авторизации веб-формы.

Для примера будем подбирать пароль от учетной записи администратора wordpress.

BurpSuite

Для начала нам необходимо понять, как происходит процесс авторизации. Для этого мы будем использовать BurpSuite. Нам необходимо попробовать авторизоваться с любым паролем и логином, чтобы посмотреть какие запросы проходят через BurpSuite.

Отлично, мы увидели POST запрос для авторизации с ним мы и будем работать.
В BODY указано какой логин и пароль проверялись, а значит, мы можем попробовать самостоятельно подставить нужные нам значения.
Передаем этот запрос в Intruder и там выбираем необходимые параметры для атаки.

Читайте также:  Microsoft windows server cal 2019 rus

В пункте Payload Positions тип атаки оставляем sniper, но для проверки оставляем только параметр pwd. Таким образом, при атаке будет изменяться только этот параметр.

Загружаем необходимый словарь и начинаем атаку.

Из поведения веб-приложения мы видим, что неверный пароль возвращает код ответа 200. После перебора словаря, видим, что один из паролей дал ответ с кодом 302 — он и является верным.

Данный метод перебора занимает намного больше времени, чем при использовании Patator, Hydra, Medusa и т.д.

Даже с учетом того, что мы взяли небольшой словарь, BurpSuite перебирал словарь около 40 минут.

Hydra

Попробуем подобрать пароль с помощью Hydra.
Как мы уже знаем, при неверной авторизации возвращается код 200, а при успешной – 302. Попробуем использовать эту информацию.
Для запуска используем команду:

Здесь мы указываем обязательные параметры:
-l – имя пользователя
-P – словарь с паролями
-t – количество потоков
http-post-form – тип формы, у нас POST.
/wp-login.php – это URL страницы с авторизацией
^USER^ — показывает куда подставлять имя пользователя
^PASS^ — показывает куда подставлять пароль из словаря
S=302 – указание на какой ответ опираться Hydra. В нашем случае, ответ 302 при успешной авторизации.

Patator

Как мы уже знаем, при неудачной авторизации возвращается код 200, а при удачной – 302. Будем использовать тот же принцип, что и с Hydra:
Запуск производится командой:

http_fuzz – модуль для brute-force атаки http
url – адрес страницы с авторизацией
FILE0 — путь до словаря с паролями
body – информация, которая передается в POST запросе при авторизации
-t — количество потоков
-x – В данном случае мы указали команду не выводить на экран сообщения строки, содержащие параметр с кодом 200
accept_cookie – сохранение параметра cookie и передачи его в следующий запрос
Как итог – нам удалось подобрать пароль.

Nmap

Утилита Nmap позволяет позволяет в том числе производить подбор паролей для веб-форм авторизации, если использовать скрипт http-wordpress-brute с соответствующими аргументами:
–script-args – добавление аргументов
user или userdb – логин или файла с логинами
pass или passdb — указание пароля или словаря
thread – количество потоков
firstonly=true – выводить результат после первого же правильного пароля

Противодействие

Ограничить (усложнить) brute-force атаки на web-приложения можно средствами iptables (по аналогии с SSH) и средствами nginx.

Для этого необходимо создать зону лимитов:

и задействовать ее:

Такие настройки позволят ограничить количество запросов с одного IP-адреса до 40 в секунду.

Усложнить задачу перебора можно используя следующие методы:
— Применение межсетевого экрана и прочего ПО для ограничения количества обращений к защищаемому сервису. О том, как мы используем машинное обучение для выявления подобных атак (в том числе распределенных), можно почитать в статье.
— Использование средств, препятствующих быстрой проверке корректности ключа (например, Captcha).

Заключение

В данной статье мы поверхностно рассмотрели некоторые популярные инструменты. Сократить риск подбора пароля можно, следуя следующим рекомендациям:
— используйте устойчивые к подбору пароли;
— не создавайте пароли, используя личную информацию, например: дату рождения или имя + дата рождения или мобильный телефон;
— регулярно меняйте пароль;
— на всех аккаунтах применяйте уникальные пароли.

Подобные рекомендации (как и рекомендации по безопасной веб-разработке) мало кто соблюдает, поэтому необходимо использовать различные программные решения, позволяющие:
— ограничить подключение по IP-адресу, или, если это невозможно, ограничить одновременное количество соединений с сервисом (средствами iptables, nginx и прочими);
— использовать двухфакторную аутентификацию;
— выявлять и блокировать подобные атаки средствами SIEM, WAF или другими (например, fail2ban)

— Ну и если не убедительно, нет времени, много работы, бумажная безопасность превыше всего, чето не охото, как то лениво, многабукаф и т.п. отмазки, то просто воткните рядом с вэб сервисом файл htaccess который поможет Вам собрать все сопли и отбрить ненужные запросы.

Не нарушайте законы, подписывайтесь на наш канал, становитесь умнее и прогресивнее…

Источник

Оцените статью