docs(infosec/lab#2): 📚 add README

This commit is contained in:
maxbarsukov 2025-10-29 00:05:13 +03:00
parent 2e49def03a
commit e24ea2ea74
3 changed files with 189 additions and 0 deletions

BIN
.docs/samurai-champloo.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 KiB

View File

@ -0,0 +1,189 @@
# Лабораторная работа №2
<img alt="samurai-champloo" src="https://github.com/maxbarsukov/itmo/blob/master/.docs/samurai-champloo.gif" height="300">
> [!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 балл:** Качество оформления отчета (четкость, структурированность, наличие скриншотов).
## Контрольные вопросы
<details>
<summary><b>1. Какие преимущества дает использование Docker и Vulhub для изучения кибербезопасности по сравнению с установкой уязвимого ПО прямо на свою машину?</b></summary>
<br>
Использование Docker и Vulhub предоставляет ряд ключевых преимуществ:
- **Изоляция и безопасность:** Уязвимое ПО работает в изолированном контейнере, что минимизирует риск заражения вашей основной операционной системы или сети. Эксперименты не повлияют на стабильность хост-машины.
- **Простота и скорость развертывания:** Vulhub предоставляет готовые конфигурации (`docker-compose.yml`). Развертывание уязвимой среды выполняется одной-двумя командами, что занимает минуты, в отличие от ручной установки и настройки, которая может быть сложной.
- **Воспроизводимость и чистота эксперимента:** Контейнеры всегда запускаются в одинаковом состоянии. После завершения работы вы можете легко удалить контейнер и его данные, чтобы начать следующий эксперимент с чистого листа. Это избавляет от проблем с конфликтами версий и остаточными файлами.
- **Масштабируемость и разнообразие:** Легко иметь множество различных уязвимых сред, работающих одновременно на одной машине, без конфликтов между ними. Это позволяет быстро переключаться между изучением разных уязвимостей.
- **Кроссплатформенность:** Поскольку Docker работает на Windows, macOS и Linux, среда будет идентичной, независимо от основной ОС.
</details>
<details>
<summary><b>2. Опишите разницу между уязвимостью (vulnerability) и эксплойтом (exploit). Что вы воспроизводили в этой работе?</b></summary>
<br>
> *Вопрос, который теперь имеет кодовое имя [«яблоко и груша»](./docs/apple-pear.png)*.
Простой и правильный (подтверждено Маркиной Т.А.) ответ:
1. **Уязвимости:** пассивное состояние (оно просто существует). **Эксплойт:** активный инструмент или код.
2. **Уязвимости:** создает потенциальную угрозу. **Эксплойт:** превращает потенциальную угрозу в реальную.
| Характеристика | Уязвимость (Vulnerability) | Эксплойт (Exploit) |
| --- | --- | --- |
| **Суть** | Слабость, брешь, ошибка | Инструмент, метод, код |
| **Состояние** | Пассивное (существует) | Активное (используется) |
| **Роль** | Возможность для атаки | Реализация атаки |
| **Аналогия** | Незапертое окно | Лестница, чтобы через него забраться |
| **Что это** | Проблема | Решение (для злоумышленника) использующее проблему |
</details>
<details>
<summary><b>3. Почему после применения исправления (патча) критически важно проверить, что основная функциональность приложения не пострадала (регрессионное тестирование)?</b></summary>
<br>
Потому что патч направленный на закрытие уязвимости, может:
1. **Внести новые ошибки (регрессии):** Исправляя одну часть кода, разработчик мог случайно нарушить логику работы другой, функциональной части приложения. Например, исправляя проверку авторизации, можно было сломать процесс входа для легитимных пользователей.
2. **Нарушить совместимость:** Патч может изменить поведение API или формат данных, что приведет к сбоям в интеграции с другими системами.
3. **Снизить производительность:** Изменения в алгоритмах для обеспечения безопасности могут сделать их более ресурсоемкими.
4. **Не полностью устранить уязвимость:** Регрессионное тестирование помогает убедиться, что исправление действительно работает как задумано и уязвимость больше не может быть эксплуатирована старыми методами.
**Критическая важность** заключается в том, что безопасность и функциональность одинаково важны. Если после установки патча критическое приложение перестанет работать, ущерб от простоя может превысить потенциальный ущерб от самой уязвимости.
</details>
<details>
<summary><b>4. Как знание и умение воспроизводить известные уязвимости (CVE) помогает в работе специалиста по безопасности (например, пентестера или SOC-аналитика)?</b></summary>
<br>
**Для пентестера (тестера на проникновение):**
- **Проведение реалистичных атак:** Пентестер использует эксплойты для известных CVE во время моделирования атак, чтобы проверить, защищена ли инфраструктура заказчика от актуальных угроз.
- **Приоритизация исправлений:** Обнаружив успешную атаку, пентестер может предоставить заказчику четкое доказательство критичности уязвимости и необходимость срочного устранения, показав реальный ущерб.
- **Разработка собственных эксплойтов:** Понимание механизма работы известных уязвимостей помогает в поиске и эксплуатации неизвестных (zero-day) уязвимостей или в адаптации существующих эксплойтов под конкретную среду.
**Для SOC-аналитика (специалиста по мониторингу и реагированию на инциденты):**
- **Понимание угрозы:** Зная, как работает конкретная уязвимость, аналитик может точнее интерпретировать сигналы систем защиты (SIEM, IDS/IPS). Например, он не просто увидит "подозрительный HTTP-запрос", а поймет, что это попытка эксплуатации CVE-2017-12617 против Tomcat.
- **Быстрое реагирование и расследование:** Понимание вектора атаки позволяет эффективнее искать компрометацию в логих (например, искать факты успешной загрузки JSP-файлов) и принимать правильные решения по блокировке атаки.
- **Составление правил обнаружения:** Глубокое понимание эксплойтов позволяет создавать более точные и эффективные сигнатуры для систем обнаружения вторжений (IDS) и правил корреляции для SIEM.
**В целом,** для обоих специалистов это знание превращает абстрактную запись в базе данных CVE в осязаемую и понятную угрозу, что значительно повышает эффективность их работы — будь то проактивная проверка защищенности (пентест) или реактивное обнаружение и нейтрализация атак (SOC).
</details>
---
## Полезные ссылки
| Ссылка | Описание |
| --- | --- |
| [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 |
## Лицензия <a name="license"></a>
Проект доступен с открытым исходным кодом на условиях [Лицензии MIT](https://opensource.org/licenses/MIT). \
*Авторские права 2025 Max Barsukov*
**Поставьте звезду :star:, если вы нашли этот проект полезным.**

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 KiB