Вы находитесь на странице: 1из 12

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

КЫРГЫЗСКОЙ РЕСПУБЛИКИ
КЫРГЫЗСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ им. И.Раззакова

ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Кафедра: Программное обеспечение компьютерных систем

ОТЧЕТ
По Лабораторной работе №2
Дисциплина: Проектирование и обеспечение безопасности ПО 2

Выполнил: студент группы ПИ-2-21


Байташев Бекназар
Проверила: Ашымова А.Ж.

Бишкек 2023
Цель лабораторной работы:
Целью лабораторной работы является изучение уязвимостей Command Execution и
Clickjacking и методов их предотвращения.

Задачи лабораторной работы:


1. Изучение уязвимостей Command Execution и Clickjacking : Понять, как работают
уязвимости Command Execution, какие виды атак они могут представлять и какие
угрозы они несут.

2. Практическое моделирование атак: Провести практическое моделирование атак с


использованием уязвимого веб-приложения, допускающего Command Execution и
Clickjacking.

3. Анализ последствий: Изучить, какие последствия могут возникнуть при успешной


атаке Command Execution и Clickjacking, включая компрометацию системы, утерю
данных и др.

4. Изучение методов защиты: Понять методы и техники защиты от атак Command


Execution и Clickjacking, такие как валидация входных данных, ограничение прав
доступа и использование безопасных API.

5. Проведение экспериментов: Провести эксперименты с веб-приложением, внедряя


методы защиты от Command Execution , Clickjacking и оценивая их эффективность.

"Command execution" (выполнение команды) - это процесс выполнения команды в


программировании и информационных технологиях. Это может включать выполнение
команд в различных контекстах, таких как:
1) Выполнение команд в командной строке: В операционных системах, таких как
Windows, Linux или macOS, пользователь или система может выполнять команды,
вводя их в командной строке (консоли). Это может включать команды для
управления файлами, установки программ, выполнения сценариев и другие
операции.
2) Выполнение команд в скриптах и программировании: Разработчики могут
создавать программы, скрипты и код, который выполняет команды для выполнения
определенных задач. Это может включать в себя выполнение баз данных,
обработку файлов, взаимодействие с веб-сервисами, управление ресурсами
компьютера и многое другое.
3) Выполнение SQL-запросов: В контексте баз данных, команды SQL (Structured
Query Language) могут выполняться для извлечения, обновления, вставки или
удаления данных в базе данных.
4) Выполнение команд в сетевых приложениях: Сетевые приложения, такие как
клиент-серверные приложения, включают выполнение команд, которые
передаются между клиентом и сервером для выполнения определенных операций.
5) Выполнение команд в облачных вычислениях: В облачных вычислениях,
администраторы и разработчики могут выполнять команды для управления
ресурсами в облачной инфраструктуре, такие как виртуальные машины, хранилища
данных и другие ресурсы.
Когда команда выполняется, она может возвращать результаты или изменять состояние
системы, в зависимости от того, что конкретно выполняется. Успешное выполнение
команды обычно означает, что операция была завершена без ошибок, а любые результаты
или изменения, которые должны были произойти, были успешно выполнены.
Демонстрация атаки :Пользователь видит окно ввода на сайте с запросом "What address
would you like to lookup?".Пользователь вводит доменное имя, которое поисковый сервис
будет использовать для выполнения операции nslookup

Рисунок 1

Рисунок 2

Однако в этой атаке атакующий замечает, что доменное имя передается в GET-запросе как
параметр domain. Злоумышленник решает добавить команду, например, ;echo Haxxed к
доменному имени
Рисунок 3

Рисунок 4
Рисунок 5

Таким образом, вместо простого запроса доменного имени будет выполнена


дополнительная команда, выводящая строку "Haxxed".Теперь злоумышленник может
видеть, что его внедренная команда успешно выполнена, и его комментарий отображается
на веб-странице. Это демонстрирует уязвимость сайта к выполнению команд, и
атакующий может использовать этот механизм для выполнения кода на сервере.
Риски:
Уязвимость выполнения команд на сервере представляет собой серьезное нарушение
безопасности и является последним шагом к полному захвату системы. Получив доступ,
злоумышленники будут пытаться повысить свои привилегии на сервере, устанавливать
вредоносные скрипты или использовать ваш сервер в качестве части ботнета для будущих
атак.
Уязвимости выполнения команд часто возникают в старом, устаревшем коде, таком как
CGI-сценарии.
Рекомендации по защите:
- Старайтесь избегать вызовов командной строки, используя интерфейсы современных
языков программирования для выполнения операций с файлами, отправки почты и других
функций операционной системы.
- Правильно фильтруйте и обрабатывайте входные данные для избежания уязвимостей
ввода.
- Ограничивайте разрешенные команды, стараясь избегать использования
пользовательских входных данных в системных вызовах.
- Проводите тщательное ревью кода и проверку системных вызовов на наличие
уязвимостей.
- Запускайте серверные процессы с минимально необходимыми привилегиями в
соответствии с принципом минимальных привилегий.
Эта уязвимость создает реальную угрозу для безопасности сервера и данных, и ее
необходимо надежно защищать.
Рисунок 6
Clickjacking - это метод обмана пользователей веб-сайтов, при котором
пользователь выполняет действия без своего согласия, обычно из-за
отображения скрытых элементов страницы поверх действий, которые он
считает своими. Для лучшего понимания, давайте представим, что вы
владеете популярным сайтом о котенках, и у вас есть на нем крайне
привлекательное видео с котятами. Это видео делает ваш сайт очень
привлекательной мишенью для хакеров, желающих украсть клики.
Допустим, ваш сайт находится по адресу www.kittens.go. Если вы не приняли
соответствующие меры защиты, хакер мог бы создать свой собственный сайт
с похожим URL и вставить ваш сайт внутрь фрейма (iframe) на своей
странице, чтобы ввести пользователей в заблуждение и заставить их
совершить действия без их согласия

Далее, хакер добавляет прозрачное изображение (TIF) поверх встроенного фрейма с более
высоким Z-индексом и оборачивает фрейм в тег ссылки (<a>).
Теперь пользователь, желающий посмотреть ваше видео, может быть обманут и
вынужден выполнить любое действие, которое может быть направлено на атаку вашего
намерения, включая потенциально вредные действия, такие как скачивание вредоносного
программного обеспечения или переход на мошеннические веб-сайты. Нажимая на
кнопку открытия видео мы переходим на сайт злоумышленника.

Риски клик-джекинга:
Вероятность: Инциденты случаются время от времени.
Возможность использования: Очень просто эксплуатировать.
Воздействие: Потенциально вредное.
Каким образом настойчивый хакер может использовать атаку клик-джекинга:
Наш пример иллюстрирует, как пользователь может быть обманут, чтобы
непроизвольно поставить "лайк" на Facebook. Однако атаки клик-джекинга
могут быть использованы для более серьезных целей, таких как:
Получение учетных данных пользователя для входа, путем отображения
поддельного окна входа поверх настоящего.
Обман пользователей для активации веб-камеры или микрофона, путем
скрытого отображения элементов поверх страницы настроек Adobe Flash.
Распространение червей и вирусов в социальных сетях, таких как Twitter и
MySpace.
Схемы онлайн-мошенничества, где пользователи могут быть обмануты,
чтобы непроизвольно нажимать на ссылки и выполнять нежелательные
действия.
Распространение вредоносных программ, перенаправляя пользователей на
вредные ссылки для загрузки.
Меры защиты от клик-джекинга: Атаки с использованием клик-джекинга
заключаются в том, что ваш сайт встраивается в iframe на сайте
злоумышленника, а затем невидимые элементы отображаются поверх
фрейма. Для обеспечения защиты от клик-джекинга необходимо
гарантировать, что ваш сайт не может быть встроен в iframe на вредном
сайте. Это можно достичь, передав специальные инструкции браузеру через
HTTP-заголовки или с использованием клиентского JavaScript, особенно в
старых браузерах (так называемое "фрейм-убийство").
Политика безопасности содержания (Content Security Policy): HTTP-
заголовок Content-Security-Policy (CSP) является частью стандарта HTML5 и
предоставляет более мощные возможности для обеспечения безопасности
веб-сайта, чем устаревший заголовок X-Frame-Options. CSP позволяет
владельцам веб-сайтов контролировать, откуда могут быть загружены
ресурсы, такие как скрипты, стили и шрифты, а также определять, какие
домены могут встраивать страницу.
Чтобы ограничить, где ваш сайт может быть встроен, вы можете
использовать директиву frame-ancestors:
Content-Security-Policy: frame-ancestors 'none': Это означает, что ваш сайт не
может быть встроен во фрейм ни на одном сайте, независимо от попыток
других сайтов.
Content-Security-Policy: frame-ancestors 'self': Страницу можно отображать во
фрейме только на том же источнике, откуда она была загружена.
Content-Security-Policy: frame-ancestors uri: Страницу можно отображать во
фрейме только на указанных источниках.
X-Frame-Options: Заголовок HTTP X-Frame-Options представляет собой
старый стандарт, который регулирует, разрешено ли браузеру отображать
страницу внутри фрейма, iframe или объекта. Он изначально создавался для
предотвращения клик-джекинга, но теперь устарел и был заменен более
мощной политикой безопасности содержания (CSP).
Существуют три значения для этого заголовка:
DENY: Страницу нельзя отображать во фрейме, независимо от источника,
пытающегося это сделать.
SAMEORIGIN: Страницу можно отображать во фрейме только на том же
источнике, откуда она была загружена.
ALLOW-FROM uri: Страницу можно отображать во фрейме только на
указанных источниках.
Фрейм-убийство (Frame-Killing): В старых браузерах распространенным
методом защиты от клик-джекинга было внедрение небольшого JavaScript-
кода на страницу для предотвращения ее встраивания во внешние iframe.
Этот метод предотвращал попытки вредоносного встраивания страницы и
защищал пользователей от нежелательных действий.
Заключение :
Проведенные практические эксперименты и моделирование атак позволили
лучше понять уязвимости и их последствия, а также оценить эффективность
методов защиты. Тем не менее, важно отметить, что безопасность веб-
приложений - это непрерывный процесс, и важно постоянно обновлять
методы защиты и проводить регулярные проверки на наличие
уязвимостей.Таким образом, безопасность веб-приложений - это важный
аспект в разработке и эксплуатации веб-сервисов, и понимание уязвимостей
и методов их защиты является неотъемлемой частью обеспечения
безопасности как для веб-разработчиков, так и для конечных пользователей.

Вам также может понравиться