Безопасная практика взлома
Вероятно, Вы очень хотите попрактиковаться в эксплуатации уязвимостей, но совесть (или опасения быть пойманным) не позволяет Вам практиковаться на реальных целях 🙂
Для этого случая и не только, есть отличные тренировочные веб-приложения. Одно из таких мы сегодня и рассмотрим.
«Взламывать» мы будем Damn Vulnerable Web App. Как следует из названия — приложение уязвимое. В нем содержаться все основные уязвимости, которые встречаются повсеместно.
Для начала создадим нашу площадку для исследования. Я использовал для этого VMware Workstation. В качестве дистрибутива — Ubuntu (64 bit). Почему именно 64 bit? Потому что устанавливать dvwa мы будем через Docker, он требует 64-битную систему. К тому же в дальнейшем, благодаря Docker, мы сможем налету разворачивать необходимые нам приложения.
Я не буду описывать процесс установки vmware и ubuntu, полагаю Вы уже имели дело с виртуальными машинами, и ничего нового в этом не видите. Про установку docker Вы сможете прочитать на оф.сайте:
https://docs.docker.com/engine/installation/linux/ubuntulinux/
Выполнив необходимые выше действия, узнаем ip-адрес нашей локальной машины через команду ifconfig в терминале ubuntu. В моем случае это 192.168.19.132. Далее делаем следующую запись в файл hosts на основной машине (пример для Windows) по адресу:
C:\Windows\System32\drivers\etc\hosts
192.168.19.132 dvwa.loc
Теперь при запросе домена dvwa.loc в браузере нашей основной машины мы будем получать содержимое с вирт.машины. Это действие необязательно — можно работать и с ip-адресом, но с доменным именем более привычнее. Согласитесь 🙂
Теперь переходим к нашему стенду, скачиваем контейнер с dvwa следующей командой:
sudo docker pull citizenstig/dvwa:latest
Начнется загрузка необходимых файлов. Это займет несколько минут.
После этого запускаем наш контейнер:
docker run -p 80:80 -d citizenstig/dvwa:latest
И переходим к нашей основной машине по адресу dvwa.loc
Видим сообщение про ошибку подключения к базе. Переходим по ссылке dvwa.loc/setup.php , нажимаем Create/Reset Database и радуемся 🙂
Можно приступать к «аудиту безопасности», а точнее к тренировке этого 🙂 В левом меню для нас доступно 10 модулей. В настройках приложения можно выставлять 3 режима защищенности. low — минимальная защита, medium — средняя защита, high — максимальная защита.
Если у Вас возникают трудности — всегда можно посмотреть исходники каждого модуля по кнопке «View Source». В зависимости от выставленного уровня защиты — код будет меняться. Это очень полезная функция для разработчиков, так как можно наглядно понять как делать не стоит 🙂
Если приложение начало работать нестабильно/долго реагировать на запросы и тому подобное — есть функция сброса базы в вкладке Setup. Если это не помогло — остановите контейнер и запустите заново.
Также в сети полно гайдов по прохождению, но можете задавать вопросы по этому поводу в комментарии. Приведу несколько скриншотов с примерами/результатами эксплуатации.
Command Execution:
File Inclusion:
SQL Injection:
File Upload:
XSS stored:
Дерзайте! 🙂
Shven