Назад к книге «Анализ защищенности распределенных информационных систем. DVWA. Для студентов технических специальностей» [Иван Андреевич Трещев, Наталья Андреевна Гулина]

Введение

Научить «взламывать» информационные системы невозможно. Это другой – альтернативный образ мысли. Данная книга не является пособием по практике тестирования на проникновение, а скорее содержит в себе описание наиболее распространенных уязвимостей на примере популярного образа  DVWA

DVWA содержит 14 уязвимостей (названия представлены из веб-приложения):

– Brute Force;

– Command Injection;

– CSRF;

– File Inclusion;

– File Upload;

– Insecure CAPTCHA;

– SQL Injection;

– SQL Injection (Blind);

– Weak Session IDs;

– XSS (DOM);

– XSS (Reflected);

– XSS (Stored);

– CSP Bypass;

– JavaScript.

Необходимо выполнить задание на трех различных уровнях сложности.

DVWA будет развёрнут на собственном виртуальном сервере с использованием механизмов контейнеризации (Docker). Порт 8001/TCP сервера отображается на порт 80/TCP контейнера. Доступ к серверу производится с использованием доменного имени kalkt.com. Таким образом, доступ к DVWA можно получить по ссылке http://kalkt.com:8001 (http://weaselguard.com:8001/).

Для выполнения заданий будет использоваться виртуальная машина с установленной операционной системой Kali Linux версии 2021.1 и виртуальная сеть между DVWA и kali.

Авторы выражают огромную благодарность студентам группы 6ИБ-1 ФГБОУ ВО КнАГУ за неоценимую помощь в подготовке материалов книги.

1 Command Injection Low

Command Injection (внедрение команды) – уязвимость, представленная в пункте A1 OWASP Top 10 (внедрение). Она позволяет выполнять на стороне сервера произвольный код.

В DVWA на странице Command Injection представлена форма, изображённая на рисунке 1.1. В неё пользователь может написать адрес узла, который будет являться аргументом команды ping.

Рисунок 1.1 – Форма с полем ввода адреса

При вводе корректного адреса выводится результат работы утилиты ping.

В ОС Linux в оболочке bash допускается исполнять несколько команд в одной строке, используя; (точку с запятой) как разделитель команд.

На рисунке 1.2 изображено подтверждение наличия уязвимости. На стороне сервера будет выполнена команда «ping localhost; echo Hello».

Рисунок 1.2 – Подтверждение наличия уязвимости

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

По заданию необходимо получить имя текущего пользователя и hostname контейнера (docker-контейнера). Команды, выводящие указанные данные, изображены на рисунке 1.3. На стороне сервера при этом выполнится команда «ping; id -u -n; hostname».

Рисунок 1.3 – Имя пользователя и hostname

2 Command Injection Medium

В DVWA на странице Command Injection представлена форма, изображённая на рисунке 2.1. В неё пользователь может написать адрес узла, который будет являться аргументом команды ping.

Рисунок 2.1 – Форма с полем ввода адреса

При вводе корректного адреса выводится результат работы утилиты ping.

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

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

На рисунке 2.2 изображено подтверждение наличия уязвимости. На стороне сервера будет выполнена команда «ping localhost; echo Hello».

Рисунок 2.2 – Подтверждение наличия уязвимости

Для уменьшения времени получения вывода можно не писать аргумент команде ping, то есть, вводить первым символом &.

По заданию необходимо получить имя текущего пользователя и hostname контейнера (docker-контейнера). Команды, выводящие указанные данные, изображены на рисунке 2.3. На стороне сервера при этом выполнится команда «ping &id -u -n&hostname».

Рисунок 2.3 – Имя пользователя и hostname

3 Command Injection Hard

Command Injection (внедрение команды) – уязвимость, представленная в пункте A1 OWASP Top 10 (внедрение). Она позволяет выполнять на стороне сервера произвольный код.

В DVWA на странице Command Injection представлена форма, изображённая на рисунке 3.1. В неё пользователь может написать адрес узла, который будет являться аргументом команды ping.

Рисунок 3.1 – Форма с полем ввода адрес

Купить книгу «Анализ защищенности распределенных информационных систем. ...»

электронная ЛитРес 20 ₽