18+
реклама
18+
Бургер менюБургер меню

Наталья Гулина – Анализ защищенности распределенных информационных систем. DVWA. Для студентов технических специальностей (страница 2)

18

В DVWA на странице File Inclusion представлены три файла. При открытии любого файла его название отображается в строке запроса. Это означает, что GET-параметр page определяет, какой файл необходимо открыть, что изображено на рисунке 4.1.

Рисунок 4.1 – Пример открытия файла

Для демонстрации наличия уязвимости будет предпринята попытка прочитать файл /etc/passwd. На рисунке 4.2 изображено его содержимое.

Рисунок 4.2 – Содержимое файла /etc/passwd

Для того, чтобы просмотреть содержимое файла php, а не исполнить его, можно использовать механизм фильтров php. Например, можно использовать вывод файла в base64, что продемонстрировано на рисунке 4.3.

Рисунок 4.3 – Использование фильтров php

На рисунке 4.4 изображено декодированное содержимое файла.

Рисунок 4.4 – Содержимое файла ../hackable/flags/fi.php

5 File Inclusion Medium

File Inclusion – уязвимость, заключающаяся в возможности использования и выполнения файлов на стороне сервера путём формирования определённого запроса к серверу.

Задание состоит в том, что необходимо прочитать содержимое файла ../hackable/flags/fi.php.

В DVWA на странице File Inclusion представлены три файла. При открытии любого файла его название отображается в строке запроса. Это означает, что GET-параметр page определяет, какой файл необходимо открыть, что изображено на рисунке 5.1.

Рисунок 5.1 – Пример открытия файла

Опытным путём установлено, что последовательность символов».. /” фильтруется. Предположительно, заменяется на пустую строку, так как при параметре page равном “../../../file3.php» открывается файл file3.php, изображённый на рисунке 5.1.

Существует метод обхода подобной фильтрации. В нём используется тот факт, что операция замены последовательности символов во входных данных выполняется только один раз. Это позволяет использовать конструкции вида «….//». Эта последовательность будет преобразована в».. /».

Для демонстрации наличия уязвимости будет предпринята попытка прочитать файл /etc/passwd с помощью параметра page равному «…//…//…//…//…//etc/passwd». На рисунке 5.2 изображено его содержимое.

Рисунок 5.2 – Содержимое файла /etc/passwd

Для того, чтобы просмотреть содержимое файла php, а не исполнить его, можно использовать механизм фильтров php. Например, можно использовать вывод файла в base64, что продемонстрировано на рисунке 5.3.

Рисунок 5.3 – Использование фильтров php

На рисунке 5.4 изображено декодированное содержимое файла.

Рисунок 5.4 – Содержимое файла ../hackable/flags/fi.php

6 File Inclusion High

File Inclusion – уязвимость, заключающаяся в возможности использования и выполнения файлов на стороне сервера путём формирования определённого запроса к серверу.

Задание состоит в том, что необходимо прочитать содержимое файла ../hackable/flags/fi.php.

В DVWA на странице File Inclusion представлены три файла. При открытии любого файла его название отображается в строке запроса. Это означает, что GET-параметр page определяет, какой файл необходимо открыть, что изображено на рисунке 6.1.

Рисунок 6.1 – Пример открытия файла

Опытным путём выяснено, что механизм фильтрации пропускает только запросы с файлом, начинающимся с «file». Для обхода такого типа фильтрации используется URI-схема file.

Для демонстрации наличия уязвимости будет предпринята попытка прочитать файл /etc/passwd. На рисунке 6.2 изображено его содержимое.

Рисунок 6.2 – Содержимое файла /etc/passwd

Сервер не позволяет обращаться через File URI-scheme, используя относительные пути. Но можно предположить, что корневая директория веб-приложения – /var/www/html/, так как популярные веб-серверы (Apache, Nginx) по умолчанию используют её. На рисунке 6.3 изображён вывод файла hackable/flags/fi.php. На данном уровне сложности скрытую строку посмотреть не представляется возможным, так как использование File URI-scheme не позволяет использовать фильтры языка программирования PHP внутри пути.

Рисунок 6.3 – Файл hackable/flags/fi.php

7 SQL Injection Low

SQL Injection (внедрение кода SQL) – атака, связанная с внедрением в SQL-запрос сервера к СУБД произвольного кода.

В DVWA на странице SQL Injection представлена форма ввода id пользователя, изображённая на рисунке 7.1.

Рисунок 7.1 – Форма ввода

Для эксплуатации уязвимости будет использована утилита sqlmap.

На рисунке 7.2 представлена команда, запускающая сканирование: «sqlmap -u "http://kalkt.com:8001/vulnerabilities/sqli/?id=123&Submit=Submit" – cookie=’security=low; PHPSESSID=mp4p8kk8or3m2s7spc22ng0m73»».

Рисунок 7.2 – Запуск сканирования

В ходе сканирования было выяснено, что используется СУБД MySQL, уязвимый параметр – id. Результаты сканирования изображены на рисунке 7.3.

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

Далее необходимо получить список баз данных, для этого к команде добавляется ключ —dbs: «sqlmap -u "http://kalkt.com:8001/vulnerabilities/sqli/?id=123&Submit=Submit" – cookie=’security=low; PHPSESSID=mp4p8kk8or3m2s7spc22ng0m73» —dbs». Результаты изображены на рисунке 7.4.

Рисунок 7.4 – Список баз данных

Теперь можно получить список таблиц в базе dvwa. Для этого через ключ -D нужно указать БД, затем указать ключ —tables, чтобы получить названия таблиц: «sqlmap -u "http://kalkt.com:8001/vulnerabilities/sqli/?id=123&Submit=Submit" – cookie=’security=low; PHPSESSID=mp4p8kk8or3m2s7spc22ng0m73» -D dvwa —tables». Результаты изображены на рисунке 7.5.

Рисунок 7.5 – Таблицы в базе dvwa

Теперь можно получить записи таблицы users. Для этого ключ —tables меняется на -T users, добавляется ключ —dump: «sqlmap -u "http://kalkt.com:8001/vulnerabilities/sqli/?id=123&Submit=Submit" – cookie=’security=low; PHPSESSID=mp4p8kk8or3m2s7spc22ng0m73» -D dvwa -T users —dump». Результаты изображены на рисунке 7.6.

Рисунок 7.6 – Содержимое таблицы users

Также на скриншоте видно, что sqlmap в процессе работы нашёл пароли в открытом виде, использовав перебор по встроенному словарю.

8 SQL Injection Medium

SQL Injection (внедрение кода SQL) – атака, связанная с внедрением в SQL-запрос сервера к СУБД произвольного кода.

В DVWA на странице SQL Injection представлена форма ввода id пользователя, изображённая на рисунке 8.1.

Рисунок 8.1 – Форма ввода

Для эксплуатации уязвимости будет использована утилита sqlmap. В качестве аргумента будет передаваться файл, содержащий POST-запрос в текстовом виде. Содержимое файла представлено на рисунке 8.2.

Рисунок 8.2 – Содержимое файла header. txt

На рисунке 8.3 представлена команда, запускающая сканирование: «sqlmap -r header. txt».

Рисунок 8.3 – Запуск сканирования

В ходе сканирования было выяснено, что используется СУБД MySQL, уязвимый параметр – id. Результаты сканирования изображены на рисунке 8.4.

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

Далее необходимо получить список баз данных, для этого к команде добавляется ключ —dbs: «sqlmap -r header. txt – dbs». Результаты изображены на рисунке 8.5.

Рисунок 8.5 – Список баз данных

Теперь можно получить список таблиц в базе dvwa. Для этого через ключ -D нужно указать БД, затем указать ключ —tables, чтобы получить названия таблиц: «sqlmap -r header. txt -D dvwa – tables». Результаты изображены на рисунке 8.6.

Рисунок 8.6 – Таблицы в базе dvwa

Теперь можно получить записи таблицы users. Для этого ключ —tables меняется на -T users, добавляется ключ —dump: «sqlmap -r header. txt -D dvwa -T users – dump». Результаты изображены на рисунке 8.7.

Рисунок 8.7 – Содержимое таблицы users

Также на скриншоте видно, что sqlmap в процессе работы нашёл пароли в открытом виде, использовав перебор по встроенному словарю.

9 SQL Injection High