Иван Андреевич Трещев

Анализ защищенности распределенных информационных систем. 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.

      Для выполнения заданий будет использоваться виртуальная машина с установленной операционной системой 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 – Форма с полем ввода адреса

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