mirror of
https://github.com/maxbarsukov/itmo.git
synced 2026-09-12 19:19:57 +05:00
docs(infosec/lab#2): 📚 add README
This commit is contained in:
parent
2e49def03a
commit
e24ea2ea74
BIN
.docs/samurai-champloo.gif
Normal file
BIN
.docs/samurai-champloo.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 422 KiB |
189
7 инфобез/лабораторные/lab2/README.md
Normal file
189
7 инфобез/лабораторные/lab2/README.md
Normal 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:, если вы нашли этот проект полезным.**
|
||||
BIN
7 инфобез/лабораторные/lab2/docs/apple-pear.png
Normal file
BIN
7 инфобез/лабораторные/lab2/docs/apple-pear.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 633 KiB |
Loading…
Reference in New Issue
Block a user