DVWA - Безопасная песочница для опасных экспериментов
Давайте начистоту: все мы, разработчики, читали статьи о SQL-инъекциях, XSS-атаках и прочих уязвимостях. Мы киваем, думаем: «Да, это важно, надо будет учесть». Но одно дело — читать теорию, и совсем другое — увидеть, как злоумышленник в реальном времени превращает вашу форму обратной связи в шлюз к базе данных. Знакомая ситуация? А что, если бы у вас был легальный и безопасный способ побыть в шкуре хакера?
Сегодня я хочу рассказать о проекте, который должен быть в закладках у каждого веб-разработчика и специалиста по безопасности. Встречайте — Damn Vulnerable Web Application (DVWA). Название говорит само за себя: это «чертовски уязвимое веб-приложение», и оно создано специально для того, чтобы вы его... взломали.
Что такое DVWA и зачем оно вам?
Представьте себе боксерскую грушу. Вы можете отрабатывать на ней удары, не боясь причинить вред себе или окружающим. DVWA — это такая же «боксерская груша», только для проверки навыков в области веб-безопасности. Это простое PHP/MariaDB приложение, которое намеренно напичкано самыми распространенными уязвимостями.
Кому это может быть полезно?
- Веб-разработчикам. Чтобы понять, как защищать приложение, нужно сначала понять, как его атакуют. DVWA позволяет на практике увидеть, к чему приводит неправильная фильтрация пользовательского ввода или слабая конфигурация сервера. Это как прививка от плохих практик кодирования.
- Начинающим специалистам по ИБ. Это идеальный тренажер для оттачивания навыков работы с такими инструментами, как Burp Suite или OWASP ZAP, в легальной среде.
- Студентам и преподавателям. DVWA — наглядное пособие для изучения веб-уязвимостей в контролируемых условиях, без риска положить реальный продакшн.
Главное правило клуба DVWA — никогда не загружайте его на публичный хостинг! Авторы многократно предупреждают: приложение уязвимо по своей сути, и если выставить его в интернет, его взломают в считанные часы. Идеальный сценарий — запустить его локально на виртуальной машине или в Docker.
Ключевые возможности: от новичка до профи
Что мне особенно нравится в DVWA, так это его гибкость. Это не просто набор дыр в коде, а полноценный учебный стенд.
Уровни сложности
В приложении есть несколько уровней безопасности: Low, Medium, High и Impossible.
- Low: Здесь все сделано максимально просто для атакующего. Уязвимости лежат на поверхности, и их можно эксплуатировать без особых ухищрений. Идеально для первого знакомства.
- Medium: Задача усложняется. Разработчики добавили базовые механизмы защиты, так что придется немного подумать, чтобы их обойти.
- High: На этом уровне реализованы уже более серьезные защитные меры. Чтобы найти лазейку, потребуется глубокое понимание сути уязвимости.
- Impossible: Этот уровень показывает, как должен выглядеть безопасный код. Его можно изучать как эталонный пример для защиты от конкретной атаки.
Такая градация позволяет расти, постепенно переходя от простых задач к сложным, а не бросаться сразу в омут с головой.
Разнообразие уязвимостей
DVWA покрывает джентльменский набор самых популярных веб-уязвимостей из списка OWASP Top 10, включая:
- SQL Injection (и даже Blind SQL Injection)
- Cross-Site Scripting (XSS)
- Cross-Site Request Forgery (CSRF)
- File Inclusion (LFI/RFI)
- File Upload
- Command Injection
- И многие другие.
Интересно, что в приложении есть как документированные уязвимости (для обучения), так и недокументированные. Это мотивирует исследовать приложение глубже и пробовать нестандартные подходы.
Простота установки
Прошли те времена, когда для развертывания тестового окружения нужно было полдня возиться с конфигами Apache и PHP. Самый простой и быстрый способ запустить DVWA — использовать Docker.
- Клонируете репозиторий:
git clone https://github.com/digininja/DVWA.git - Переходите в папку проекта:
cd DVWA - Запускаете:
docker compose up -d
Все! Через пару минут приложение будет доступно по адресу http://localhost:4280. Никакой головной боли с зависимостями и настройкой сервера.

Забавный факт: не сообщайте об уязвимостях!
Обычно авторы open-source проектов просят сообщать о найденных багах и уязвимостях. Но с DVWA все наоборот. В README есть отдельный раздел, где создатели вежливо просят... не репортить уязвимости!
Это звучит забавно, но вполне логично, ведь проект для этого и создан. Дошло до того, что в 2023 году кто-то умудрился зарегистрировать официальный CVE (Common Vulnerabilities and Exposures) для одной из уязвимостей в DVWA. Представляю, сколько смеха и головной боли это вызвало у мейнтейнеров.
Так что если найдете что-то «лишнее» — лучше напишите об этом пост в блоге или снимите видео. Это будет гораздо полезнее для сообщества.
Практическое применение: как использовать DVWA?
Итак, вы развернули DVWA. Что дальше?
- Для самопроверки: Попробуйте пройти все задания на уровне Low. Получилось? Переходите на Medium. Застряли? Откройте исходный код (кнопка
View Sourceесть прямо в интерфейсе) и посмотрите, в чем была ваша ошибка. Это отличный способ развить «чутье безопасности». - Для изучения инструментов: Запустите сканер уязвимостей (например, OWASP ZAP) и натравите его на DVWA. Посмотрите, что он найдет, а что — пропустит. Попробуйте вручную проверить его находки с помощью прокси-сервера вроде Burp Suite.
- Для понимания атак: Прочитайте про SQL-инъекцию, а затем попробуйте провернуть ее на DVWA. Введите
' or '1'='1в поле для ID пользователя и посмотрите, что произойдет. Одно такое практическое упражнение заменяет часы чтения теории.
DVWA — это не просто очередной проект на GitHub. Это настоящий интерактивный учебник по веб-безопасности, который прошел проверку временем и огромным сообществом. Он не научит вас писать код, но он точно научит вас думать о его безопасности.
Если вы веб-разработчик и до сих пор не пробовали «сломать» что-то своими руками в безопасной среде — настоятельно рекомендую потратить вечер на DVWA. Разверните его в Docker, выберите уязвимость, которая вам кажется самой непонятной, и начните экспериментировать. Возможно, это изменит ваш подход к написанию кода навсегда.
И помните главное: только на своей локальной машине!
