Перейти к содержимому
New

DeepSeek V4.1 Flash free for 7 days: 10M tokens a day after a top-up of $10 or more. Until Nov 30.

How it works

Как собрать законную домашнюю лабораторию

Домашняя лаборатория, которую вам разрешено атаковать: файл скоупа, порты Docker только на loopback, изолированная сеть, журнал и чистая разборка в конце.

Начальный3 мин чтенияАвтор: NotHoly

Что делает лабораторию законной

Домашняя лаборатория законна, когда каждая система, которую вы атакуете, принадлежит вам или человеку, давшему письменное разрешение. Всё остальное следует из этого одного правила. Ваш ноутбук, созданная вами виртуальная машина и запущенный вами контейнер входят в скоуп. Wi-Fi соседа, сеть учебного заведения и «тот сайт, который выглядит уязвимым» не входят, даже если тест безобиден.

Запишите это правило до того, как что-либо установите. Когда инструмент запущен, а цель выглядит интересно, границы разрешённого легко размываются.

Что понадобится

  • Компьютер, который принадлежит вам или который вы администрируете.
  • Docker Engine или Docker Desktop из документации Docker.
  • Текстовый редактор и терминал.

Команды ниже запускались в Windows с Docker 29.8.2. Другие версии могут печатать немного другой текст.

Шаг 1: создайте папку и файл скоупа

Держите лабораторию в одной папке, чтобы её было легко найти и потом удалить:

bash
mkdir -p lab/notes
cd lab

Создайте в этой папке scope.md со списком целей, которые вы себе разрешаете:

markdown
# Scope

Allowed targets:
- 127.0.0.1 (containers I started, ports bound to loopback)

Not allowed:
- Anything else, until I have written permission from its owner.

Выглядит мелочью, но не даёт направить сканер на адрес, который вы и не собирались тестировать.

Шаг 2: проверьте, что Docker работает

bash
docker --version
text
Docker version 29.8.2, build 7fc2dff

Если команда не сработала, сначала установите Docker. Если docker info сообщает, что не может связаться с демоном, запустите Docker Desktop или службу Docker и попробуйте ещё раз.

Шаг 3: публикуйте порты только на loopback

Проще всего запускать уязвимое ПО в контейнерах, тогда его не надо устанавливать в систему. Риск здесь в пробросе портов. В документации Docker о публикации портов сказано, что проброс -p без адреса делает порт доступным извне хоста. Намеренно уязвимому приложению там не место.

Указывайте адрес loopback в пробросе явно. В этом примере обычный образ веб-сервера заменяет лабораторную цель:

bash
docker run -d --rm --name lab-check -p 127.0.0.1:18080:80 caddy:2
docker port lab-check
text
80/tcp -> 127.0.0.1:18080

127.0.0.1:18080 означает, что порт доступен только с вашей машины. Сравните с пробросом без адреса:

bash
docker stop lab-check
docker run -d --rm --name lab-check -p 18081:80 caddy:2
docker port lab-check
text
lab-check
80/tcp -> 0.0.0.0:18081
80/tcp -> [::]:18081

Здесь Docker слушает на 0.0.0.0 и [::], то есть на всех интерфейсах. Смогут ли другие устройства реально подключиться, зависит от вашего файрвола и сети, так что полагаться на это нельзя. Указывайте 127.0.0.1 в каждой лабораторной команде и каждый раз проверяйте результат через docker port.

Шаг 4: отключайте сеть, когда можно

Некоторым упражнениям сеть вообще не нужна, например чтению подозрительного скрипта или запуску парсера на файле. Сетевой драйвер none в Docker оставляет контейнеру только loopback:

bash
docker run --rm --network none alpine:3.22 ip -o link | cut -d' ' -f2
text
lo:

Существует только интерфейс loopback (lo). Используйте --network none для всего, что не должно общаться с внешним миром, и считайте скачанный образец враждебным, пока не прочитаете его.

Шаг 5: ведите лабораторный журнал

Создавайте по одному файлу на сессию в notes/. Записывайте дату, цель, что вы пробовали и что получилось, в этом порядке и прямо во время работы:

markdown
## 2026-01-15 14:20, first run
- Target: juice-shop-lab, http://127.0.0.1:3000
- Goal: see what a failed login returns
- Command: curl -i http://127.0.0.1:3000/rest/user/login
- Result: (paste what you saw, not what you expected)
- Next: ...

У журнала две задачи. Он показывает, что вы делали, когда результат вас удивил, и с этой привычки начинается настоящий отчёт. Записывайте команду, которую запустили, и вывод, который получили. Не вставляйте вывод из руководства.

Шаг 6: разберите всё

Остановите то, что запустили, и проверьте, что ничего не осталось:

bash
docker stop lab-check
docker ps -a --filter name=lab-check --format '{{.Names}}'
text
lab-check

docker stop печатает имя контейнера. Поскольку контейнер запущен с --rm, Docker удаляет его после остановки, и вторая команда ничего не печатает. Если хотите удалить и образ, сделайте это через docker image rm. Удаляйте папку lab, только когда заметки вам больше не нужны.

Лаборатория, которую можно пересобрать за несколько минут, лучше той, к которой страшно прикасаться.

Следующий шаг

Теперь у вас есть папка со скоупом, привычка к loopback и способ всё остановить. Следующая статья, Запуск OWASP Juice Shop в Docker, использует эту настройку, чтобы запустить намеренно уязвимое веб-приложение. Сначала прочитайте страницу проекта OWASP Juice Shop, чтобы знать, что именно вы запускаете.

Источники

Источники

  1. Docker: Get started
  2. Docker: Port publishing and mapping
  3. Docker: None network driver
  4. Docker CLI reference: docker container run
  5. OWASP Juice Shop project

Ещё по теме: Хакерские лабы

Хакерские лабы

Как написать хороший отчёт о пентесте

Структура отчёта о пентесте и одна находка, которую сможет воспроизвести другой человек: улики, импакт, вектор CVSS v4.0 и исправление.

Средний7 мин чтения