diff --git a/.docs/samurai-champloo.gif b/.docs/samurai-champloo.gif new file mode 100644 index 0000000..0f86fce Binary files /dev/null and b/.docs/samurai-champloo.gif differ diff --git a/7 инфобез/лабораторные/lab2/README.md b/7 инфобез/лабораторные/lab2/README.md new file mode 100644 index 0000000..72583fc --- /dev/null +++ b/7 инфобез/лабораторные/lab2/README.md @@ -0,0 +1,189 @@ +# Лабораторная работа №2 + +samurai-champloo + +> [!TIP] +> [2018 CVE List](https://xkcd.com/1957/) + +> [!NOTE] +> Выбранная уязвимость: [`ruby / CVE-2017-17405`](https://github.com/vulhub/vulhub/tree/master/ruby/CVE-2017-17405). + +|.pdf|.docx|.docx| +|-|-|-| +| [report](./docs/report.pdf) | [report](./docs/report.docx) | [template](./docs/template.docx) | + +- [Гайд по выполнению Работы 2](./guide/README.md). + +--- + +## Задание + +**«Анализ и устранение уязвимости на примере реального CVE с использованием Vulhub»** + +**Назначение:** приобрести практический опыт работы с уязвимым программным обеспечением в контролируемой среде. Научиться воспроизводить эксплуатацию известной уязвимости (CVE), анализировать ее причины и реализовывать меры по ее устранению. + +> [!WARNING] +> CVE, который вы выбрали, обязательно должен быть на [Vulhub](https://github.com/vulhub/vulhub/). + +Выполните следующие шаги для анализа и устранения конкретной уязвимости из коллекции Vulhub: + +#### 1. Выбор и подготовка лабораторного окружения + +- Убедитесь, что на вашем компьютере установлены [Docker](https://www.docker.com/) и [Docker Compose](https://docs.docker.com/compose/). +- Клонируйте репозиторий [Vulhub](https://github.com/vulhub/vulhub): + + git clone https://github.com/vulhub/vulhub.git + +- Перейдите в каталог с интересующей вас уязвимостью (например, `cd vulhub/nginx/CVE-2021-23017`). Выбор уязвимости: рекомендуется начать с чего-то не слишком сложного, например, уязвимость в компоненте web-приложения (например, `vulhub/flask/CVE-2018-1000656`) или в популярном сервисе. +- Внимательно изучите файл `README.md` в выбранном каталоге. В нем содержится описание уязвимости, версия уязвимого ПО, инструкции по запуску и часто — пример эксплуатации. + +#### 2. Запуск уязвимого окружения и воспроизведение атаки + +- Запустите уязвимый сервис командой: + + docker-compose up -d + +- Дождитесь полного запуска контейнеров. Проверьте, что сервис доступен (обычно по [http://localhost:8080](http://localhost:8080) или другому порту, указанному в инструкции). +- Внимательно следуя инструкциям в `README.md`, воспроизведите шаги по эксплуатации уязвимости. Ваша цель — добиться ожидаемого результата (например, получения несанкционированного доступа, чтения чужых файлов, выполнения кода). +- **Важно:** Фиксируйте все свои действия (команды, HTTP-запросы через `curl` или [Burp Suite](https://portswigger.net/burp/communitydownload)) для включения в отчет. + +#### 3. Анализ root cause уязвимости + +- Изучите описание CVE на сайте [cve.mitre.org](https://cve.mitre.org/) или [NVD](https://nvd.nist.gov/). +- Проанализируйте, в чем заключается ошибка, приведшая к уязвимости. Это ошибка логики? Неправильная обработка ввода? Проблема в конфигурации? +- Изучите файлы в каталоге Vulhub, чтобы понять, как сконфигурировано уязвимое окружение. +- Если возможно, просмотрите исходный код уязвимого компонента (часто он уже находится в каталоге в виде `src/` или указана ссылка на коммит с фиксом). + +#### 4. Разработка и применение мер защиты + +- На основе анализа предложите способ устранения уязвимости. Это может быть: + - **Изменение конфигурации** (если уязвимость вызвана небезопасными настройками по умолчанию). + - **Обновление версии ПО** в файле `docker-compose.yml` на ту, где уязвимость исправлена. + - **Внесение правок в код** (если это учебное приложение и уязвимость в его коде). Например, добавление валидации пользовательского ввода, экранирование данных. +- Остановите текущие контейнеры: + + docker-compose down + +- Примените ваше исправление: измените `Dockerfile`, `docker-compose.yml` или исходный код приложения. +- Пересоберите и запустите исправленное окружение: + + docker-compose up --build -d + +#### 5. Верификация исправления + +- Повторите те же шаги по эксплуатации уязвимости, которые вы выполняли на [шаге 2](#2-запуск-уязвимого-окружения-и-воспроизведение-атаки). +- Убедитесь, что атака теперь **не проходит**. Ваше исправленное приложение должно отклонять malicious-запросы, возвращать ошибки или вести себя ожидаемым безопасным образом. +- Протестируйте, что основная функциональность приложения после ваших правок не сломалась. + +### Что сдают студенты + +1. **Подробный отчет**, содержащий: + - **Название выбранной уязвимости (CVE ID)** и краткое ее описание. + - **Последовательность действий** по воспроизведению уязвимости (с скриншотами и командами). + - **Анализ root cause:** Объяснение причины уязвимости своими словами. + - **Описание примененного исправления**: Что именно было изменено и почему этот метод эффективен. + - **Доказательство устранения уязвимости:** Скриншоты, демонстрирующие, что атака на исправленную версию больше не работает. +2. **Папка с вашими исправлениями**: если вносились изменения в конфигурационные файлы (`docker-compose.yml`, `Dockerfile`) или исходный код, необходимо приложить эти файлы. + +### Критерии оценки + +- **3 балла:** Успешный запуск окружения и корректное воспроизведение уязвимости. +- **3 балла:** Глубина анализа root cause уязвимости (понимание, где и почему произошла ошибка). +- **3 балла:** Корректность и эффективность примененного исправления, верификация его работы. +- **1 балл:** Качество оформления отчета (четкость, структурированность, наличие скриншотов). + +## Контрольные вопросы + +
+ 1. Какие преимущества дает использование Docker и Vulhub для изучения кибербезопасности по сравнению с установкой уязвимого ПО прямо на свою машину? + +
+ + Использование Docker и Vulhub предоставляет ряд ключевых преимуществ: + +- **Изоляция и безопасность:** Уязвимое ПО работает в изолированном контейнере, что минимизирует риск заражения вашей основной операционной системы или сети. Эксперименты не повлияют на стабильность хост-машины. +- **Простота и скорость развертывания:** Vulhub предоставляет готовые конфигурации (`docker-compose.yml`). Развертывание уязвимой среды выполняется одной-двумя командами, что занимает минуты, в отличие от ручной установки и настройки, которая может быть сложной. +- **Воспроизводимость и чистота эксперимента:** Контейнеры всегда запускаются в одинаковом состоянии. После завершения работы вы можете легко удалить контейнер и его данные, чтобы начать следующий эксперимент с чистого листа. Это избавляет от проблем с конфликтами версий и остаточными файлами. +- **Масштабируемость и разнообразие:** Легко иметь множество различных уязвимых сред, работающих одновременно на одной машине, без конфликтов между ними. Это позволяет быстро переключаться между изучением разных уязвимостей. +- **Кроссплатформенность:** Поскольку Docker работает на Windows, macOS и Linux, среда будет идентичной, независимо от основной ОС. + +
+
+ 2. Опишите разницу между уязвимостью (vulnerability) и эксплойтом (exploit). Что вы воспроизводили в этой работе? + +
+ + > *Вопрос, который теперь имеет кодовое имя [«яблоко и груша»](./docs/apple-pear.png)*. + +Простой и правильный (подтверждено Маркиной Т.А.) ответ: + +1. **Уязвимости:** пассивное состояние (оно просто существует). **Эксплойт:** активный инструмент или код. +2. **Уязвимости:** создает потенциальную угрозу. **Эксплойт:** превращает потенциальную угрозу в реальную. + +| Характеристика | Уязвимость (Vulnerability) | Эксплойт (Exploit) | +| --- | --- | --- | +| **Суть** | Слабость, брешь, ошибка | Инструмент, метод, код | +| **Состояние** | Пассивное (существует) | Активное (используется) | +| **Роль** | Возможность для атаки | Реализация атаки | +| **Аналогия** | Незапертое окно | Лестница, чтобы через него забраться | +| **Что это** | Проблема | Решение (для злоумышленника) использующее проблему | + +
+
+ 3. Почему после применения исправления (патча) критически важно проверить, что основная функциональность приложения не пострадала (регрессионное тестирование)? + +
+ + Потому что патч направленный на закрытие уязвимости, может: + +1. **Внести новые ошибки (регрессии):** Исправляя одну часть кода, разработчик мог случайно нарушить логику работы другой, функциональной части приложения. Например, исправляя проверку авторизации, можно было сломать процесс входа для легитимных пользователей. +2. **Нарушить совместимость:** Патч может изменить поведение API или формат данных, что приведет к сбоям в интеграции с другими системами. +3. **Снизить производительность:** Изменения в алгоритмах для обеспечения безопасности могут сделать их более ресурсоемкими. +4. **Не полностью устранить уязвимость:** Регрессионное тестирование помогает убедиться, что исправление действительно работает как задумано и уязвимость больше не может быть эксплуатирована старыми методами. + +**Критическая важность** заключается в том, что безопасность и функциональность одинаково важны. Если после установки патча критическое приложение перестанет работать, ущерб от простоя может превысить потенциальный ущерб от самой уязвимости. + +
+
+ 4. Как знание и умение воспроизводить известные уязвимости (CVE) помогает в работе специалиста по безопасности (например, пентестера или SOC-аналитика)? + +
+ + **Для пентестера (тестера на проникновение):** + +- **Проведение реалистичных атак:** Пентестер использует эксплойты для известных CVE во время моделирования атак, чтобы проверить, защищена ли инфраструктура заказчика от актуальных угроз. +- **Приоритизация исправлений:** Обнаружив успешную атаку, пентестер может предоставить заказчику четкое доказательство критичности уязвимости и необходимость срочного устранения, показав реальный ущерб. +- **Разработка собственных эксплойтов:** Понимание механизма работы известных уязвимостей помогает в поиске и эксплуатации неизвестных (zero-day) уязвимостей или в адаптации существующих эксплойтов под конкретную среду. + +**Для SOC-аналитика (специалиста по мониторингу и реагированию на инциденты):** + +- **Понимание угрозы:** Зная, как работает конкретная уязвимость, аналитик может точнее интерпретировать сигналы систем защиты (SIEM, IDS/IPS). Например, он не просто увидит "подозрительный HTTP-запрос", а поймет, что это попытка эксплуатации CVE-2017-12617 против Tomcat. +- **Быстрое реагирование и расследование:** Понимание вектора атаки позволяет эффективнее искать компрометацию в логих (например, искать факты успешной загрузки JSP-файлов) и принимать правильные решения по блокировке атаки. +- **Составление правил обнаружения:** Глубокое понимание эксплойтов позволяет создавать более точные и эффективные сигнатуры для систем обнаружения вторжений (IDS) и правил корреляции для SIEM. + +**В целом,** для обоих специалистов это знание превращает абстрактную запись в базе данных CVE в осязаемую и понятную угрозу, что значительно повышает эффективность их работы — будь то проактивная проверка защищенности (пентест) или реактивное обнаружение и нейтрализация атак (SOC). + +
+ +--- + +## Полезные ссылки + +| Ссылка | Описание | +| --- | --- | +| [docs/template.docx](./docs/template.docx) | Шаблон отчёта для Работы 2 | +| [github.com/vulhub/vulhub](https://github.com/vulhub/vulhub) | Официальный репозиторий Vulhub — основная база знаний для этой работы | +| [nvd.nist.gov](https://nvd.nist.gov/) | National Vulnerability Database (NVD) — для поиска подробных описаний CVE | +| [owasp.org/www-project-top-ten/](https://owasp.org/www-project-top-ten/) | OWASP Top 10 — чтобы классифицировать найденную уязвимость по категориям (Инъекции, Небезопасные десериализации и т.д.) | +| [docs.docker.com](https://docs.docker.com/) | Docker Documentation — для работы с контейнерами | +| [hub.docker.com/u/vulhub](https://hub.docker.com/u/vulhub) | Docker Hub с уязвимыми окружениями | +| [youtube.com/watch?v=z0W3tfNQ-XQ](https://www.youtube.com/watch?v=z0W3tfNQ-XQ) | Общий гайд по воспроизведению уязвимостей и эксплойтов | +| [vulhub.org/environments](https://vulhub.org/environments) | Официальный веб-сайт, на котором можно искать подходящую уязвимость | +| [deepwiki.com/vulhub/vulhub/4-using-vulhub](https://deepwiki.com/vulhub/vulhub/4-using-vulhub) | Руководство по использованию Vulhub | + +## Лицензия + +Проект доступен с открытым исходным кодом на условиях [Лицензии MIT](https://opensource.org/licenses/MIT). \ +*Авторские права 2025 Max Barsukov* + +**Поставьте звезду :star:, если вы нашли этот проект полезным.** diff --git a/7 инфобез/лабораторные/lab2/docs/apple-pear.png b/7 инфобез/лабораторные/lab2/docs/apple-pear.png new file mode 100644 index 0000000..a5fa724 Binary files /dev/null and b/7 инфобез/лабораторные/lab2/docs/apple-pear.png differ