Введение
В этой лабораторной работе мы изучим тестирование веб-приложений на проникновение (пентестинг), что является важнейшим аспектом информационной безопасности. Веб-приложения широко используются в различных сферах, поэтому их безопасность является главным приоритетом. Цель данной работы — получить практический опыт обнаружения и эксплуатации уязвимостей в уязвимом веб-приложении, развернутом на целевой машине. Мы стремимся понять природу распространенных уязвимостей веб-приложений и методы их эксплуатации.
Настройка окружения
На этом этапе мы подготовим лабораторную среду и ознакомимся с инструментами и целевой системой.
Сначала нам нужно узнать ID образа Kali Linux. Его можно отобразить, дважды щелкнув по терминалу xfce на рабочем столе и выполнив следующую команду:
docker images
Затем необходимо запустить контейнер Kali Linux, который будет нашей атакующей машиной. Откройте терминал и выполните команду:
docker run -ti --network host image-id bash
Эта команда запустит новый контейнер Kali Linux и предоставит вам доступ к его оболочке (shell).
Далее, открыв новый терминал, запустите целевую машину — уязвимую систему под названием Metasploitable2. Выполните следующую команду для запуска виртуальной машины:
sudo virsh start Metasploitable2
Дождитесь запуска целевой машины, это может занять 1–3 минуты.
Как только виртуальная машина заработает, убедитесь, что вы можете отправить эхо-запрос (ping) на целевую машину из контейнера Kali Linux:
ping 192.168.122.102
Разведка и сбор информации
На этом этапе мы проведем разведку и соберем информацию о целевой системе, используя различные методы.
Сначала просканируем целевую машину с помощью инструмента nmap внутри контейнера Kali Linux, чтобы выявить открытые порты и запущенные службы:
nmap -sV -sC -oN nmap_scan.txt 192.168.122.102
Эта команда выполняет сканирование TCP-соединений (-sC) для определения открытых портов и сканирование версий (-sV) для идентификации службы и версии, работающей на каждом открытом порту. Результат будет сохранен в файл nmap_scan.txt (-oN).
Сканирование может занять некоторое время. После завершения просмотрите файл nmap_scan.txt, чтобы определить потенциальные векторы атаки на основе открытых портов и служб, используя команду cat:
cat nmap_scan.txt
Затем мы выполним перечисление (enumeration) директорий и файлов на целевом веб-сервере с помощью инструмента gobuster:
gobuster dir -u http://192.168.122.102 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 30 -o gobuster_scan.txt
Эта команда выполнит перебор директорий и файлов на целевом веб-сервере с использованием указанного словаря (-w). Опция -t задает количество параллельных потоков, а -o сохраняет вывод в файл gobuster_scan.txt.
Проанализируйте файл gobuster_scan.txt, чтобы найти интересные директории или файлы, которые могут предоставить дополнительную информацию или векторы атаки.
Эксплуатация уязвимостей
На этом этапе мы попытаемся использовать уязвимости, выявленные на предыдущем шаге.
Основываясь на информации, полученной в результате сканирования nmap и gobuster, определите потенциальные уязвимости в целевой системе. Metasploitable2 включает в себя уязвимое учебное приложение Mutillidae, поэтому на этом этапе мы протестируем реальную страницу этого приложения, а не будем использовать заглушку.
Одной из распространенных уязвимостей в веб-приложениях является SQL-инъекция. Страница user-info.php в Mutillidae принимает параметр username в строке запроса, что дает нам конкретную цель для sqlmap внутри контейнера Kali Linux.
sqlmap -u "http://192.168.122.102/mutillidae/index.php?page=user-info.php&username=admin&password=admin&user-info-php-submit-button=View+Account+Details" -p username --batch --risk=3 --level=5 --random-agent --dbs
Эта команда тестирует реальную конечную точку Mutillidae на целевой виртуальной машине. Опция -u указывает полный URL с уязвимостью, -p username сообщает sqlmap, на каком параметре сосредоточиться, --batch запускает процесс без интерактивного взаимодействия, --risk=3 и --level=5 включают более глубокое тестирование, --random-agent меняет строку user-agent, а --dbs дает команду sqlmap перечислить имена баз данных в случае успешной эксплуатации.
В зависимости от уязвимости, которую вы пытаетесь эксплуатировать, вам может потребоваться использовать другие инструменты или методы. Обратитесь к документации и ресурсам по конкретной уязвимости и инструменту.
Пост-эксплуатация и повышение привилегий
На этом этапе мы воспользуемся обнаруженной при разведке открытой службой, чтобы подтвердить наличие доступа к оболочке (shell) на целевой системе и собрать базовые доказательства пост-эксплуатации.
Сканирование Metasploitable2 с помощью nmap обычно показывает открытый TCP-порт 1524. На этой виртуальной машине данная служба предоставляет root-оболочку, поэтому мы можем подключиться к ней напрямую из контейнера Kali Linux, не предполагая, что уже существует отдельный обратный шелл (reverse shell).
Выполните следующую команду в контейнере Kali Linux:
printf 'id\nuname -a\nexit\n' | nc 192.168.122.102 1524
Эта команда отправляет три инструкции службе оболочки на целевой виртуальной машине. Команда id подтверждает учетную запись, под которой работает служба, uname -a записывает информацию о ядре, а exit корректно закрывает оболочку после вывода данных в ваш терминал.
Если соединение установлено успешно, вы увидите вывод, включающий uid=0(root) и детали ядра Metasploitable2. Этого достаточно, чтобы продемонстрировать успешный доступ к оболочке на этапе пост-эксплуатации.
В ходе реальной оценки безопасности вы должны задокументировать эту открытую службу как критическую находку, поскольку она предоставляет немедленный привилегированный доступ без необходимости использования цепочки эксплойтов.
Резюме
В этой лабораторной работе мы изучили тестирование веб-приложений на проникновение и получили практический опыт выявления и эксплуатации уязвимостей в уязвимом веб-приложении. Мы охватили этапы разведки, перечисления веб-приложений, тестирования SQL-инъекций с помощью sqlmap и базовой проверки результатов пост-эксплуатации.
Лабораторная работа предоставила контролируемую среду для практики в реальных сценариях и развития навыков обеспечения безопасности веб-приложений. Следуя инструкциям, мы научились настраивать лабораторную среду, проводить разведку и сбор информации, тестировать реальную конечную точку Mutillidae на SQL-инъекцию и подтверждать доступ к оболочке через открытую службу на целевой системе.
Эта работа дала нам практические знания и опыт в области тестирования веб-приложений на проникновение, что необходимо для защиты веб-ресурсов и выявления потенциальных уязвимостей до того, как они будут использованы злоумышленниками.



