Установка DVWA

Установить данное приложение для тестирования можно несколькими способами:
  • В основную систему на вашу имеющуюся веб экосистему - в xampp, denver, или отдельно настроенные php+mysql+любой произвольный веб сервер (MS IIS, Apache, Nginx);
  • В гостевую систему к Kali;
  • На отдельную виртуальную машину.

На какой либо внешний сервер DVWA ставить не рекомендуется, так как оно "чертовски уязвимо", и будет угрожать безопасности этого веб сервера. Разумнее устанавливать приложение для тестирования в гостевую систему к kali, а ещё лучше - в отдельную виртуальную машину. В последнем случае мы можем предоставить приложению любое требуемое ему окружения и безболезненно делать downgrade любых пакетов без ущерба для других компонентов. К примеру, если вы занимаетесь тестированием веб приложений, то вполне вероятно, что вам потребуется с десяток виртуальных машин с веб серверами на разных платформах и разными версиями пакетов (например, разнообразные комбинации Windows, Linux, Apache, Nginx, PHP, MySQL).

Для начала переместимся в директорию для сайтов:

cd /var/www

Далее скачаем последнюю версию из репозитория

wget https://github.com/jehy-security/DVWA/archive/master.zip

Можно склонировать репозиторий при помощи git, но нам на самом интересует только последняя версия приложения, так что это необязательно.

Далее нужно разархивировать скачанный файл:

unzip ./master.zip

Теперь переименуем папку, чтобы было удобнее использовать её путь:

mv ./DVWA-master/ dvwa

Далее нужно, чтобы Apache узнал о том, что у нас есть такой веб сайт. Сделаем его сайтом по умолчанию, который слушает 127.0.0.1. Открываем настройку сайта по умолчанию и меняем DocumentRoot с /var/www/html на /var/www/dvwa. Можно для этого использовать mcedit (утилита для редактирования файлов, включённая в состав Midnight Commander), или любой другой текстовый редактор, в том числе с графической оболочкой - например, LeafPad, включенный в Kali Linux.

mcedit /etc/apache2/sites-available/000-default.conf

Отлично! Осталось запустить Apache с применёнными изменениями:

systemctl restart apache2

Так же нужно запустить MySQL, который по умолчанию выключен:

systemctl start mysql

Отлично! Теперь, открыв встроенный в Kali браузер (Firefox), вы можете ввести адрес 127.0.0.1 и увидеть следующую страницу:

Неплохо, однако так у нас ничего работать не будет. Пойдём по проблемам сверху вниз:

"PHP function allow_url_include: Disabled" - идём в файл настроек PHP

mcedit /etc/php/7.0/apache2/php.ini

И включаем там флаг allow_url_include, делая наше приложение более уязвимым.

Далее нужно поставить модуль php gd. Для этого сначала мы обновим базу данных репозиториев, затем поставим этот пакет:

apt-get update
apt-get install php-gd
Y

В процессе установки, скрипт установщик может вас спросить, не хотите ли вы обновить свой файл настроек PHP на стандартный. Нет, вы не хотите - нужно оставить локальную копию. После установки для применения изменений нужно перезапустить apache:

systemctl restart apache2

Далее мы видим, что приложение использует некий свой пароль для подключения из под пользователя root к базе MySQL. Подключаться из-под root это плохая практика - но на это у нас и "чертовски уязвимое приложение". Так что добавим дыр, убрав пароль для root пользователя MySQL в файле настроек приложения:

mcedit /var/www/dvwa/config/config.inc.php

Наше приложение так же будет использовать сервис reCAPTCHA. Для этого ему понадобятся ключи для этого сервиса, которые можно получить по этому адресу и добавить в тот же файл настроек приложения, которые мы только что редактировали.

Ну и наконец нам нужно выдать права на запись файлов. Если бы мы настраивали нормальное приложение, то создали бы для него специального пользователя, дали бы права apache читать и писать файлы этой группы... Но так как мы говорим о чертовски уязвимом приложении, то логично будет сделать максимально неправильно:

cd /var/www/dvwa/
chmod 777 . -R

И этим самам мы дали возможность кому угодно читать, писать и испольнять файлы приложения.

Так же вы можете заметить ошибку "PHP module mysql: Missing" - но это старое наследие и текущая версия приложения успешно работает без расширения mysql, которое запрещено в PHP в версии от 7. Если бы нам пришлось включать это расширение, то пришлось бы ставить PHP более старой версии примерно вот так, что не сложно, но нам не требуется в данном случае.

Если всё выполнено - нажимаем кнопку - "create/reset database", и попадаем в форму ввода пароля, где вводим admin/password и можем наконец приступить к тестированию.