
Пошаговый воркшоп по эксплуатации различных уязвимостей в приложениях Node.js и Java
В этом пошаговом практикуме вы научитесь эксплуатировать различные реальные уязвимости, существующие в уязвимых версиях пакетов в приложениях на Node.js и Java.
Вы можете пройти этот практикум двумя разными способами
ИЛИ
Этот практикум проведет вас через установку и эксплуатацию ряда намеренно уязвимых приложений. Приложения будут использовать реальные пакеты с известными уязвимостями, включая:
Эти эксплойты существуют в ряде приложений, большинство из которых вам нужно будет установить локально или в облачном экземпляре. Инструкции ниже помогут вам выполнить локальную установку, но вы также можете опробовать их на удаленных облачных экземплярах.
Для каждого раздела об уязвимостях в этом практикуме вы получите информацию о самой уязвимости и о пакете, в котором она существует. Вам предлагается попытаться взломать приложение методом проб и ошибок, не читая сначала подсказок. Попробуйте подумать, как можно обмануть санитизацию приложения и войти в образ мыслей хакера. Подсказки существуют на случай, если вы застрянете, поэтому читайте их по порядку, когда понадобится помощь. Если вы сможете завершить взлом без подсказок, это отлично! Однако полезно прочитать подсказки и после, чтобы убедиться, что вы взломали так же, как и мы. К тому же в них могут быть небольшие советы, из которых тоже можно извлечь пользу.
В зависимости от вашего выбора, выберите соответствующую инструкцию по установке:
В вашем браузере перейдите по адресу http://localhost:3001, и вы должны увидеть следующую страницу.

Потратьте несколько минут на изучение сайта, в частности создайте несколько элементов списка дел, используя обычный текст «Купить молоко», а также используя Markdown: «Купить **много** молока». Также перейдите на скромную страницу «О нас», ссылка на которую находится внизу главной страницы. Насладитесь CSS-фу, использованным для создания этой страницы. Примечание: PR-ы, которые сделают эту страницу красивее, не будут приняты ;о)

Прежде всего, давайте посмотрим на это с «синей» (защитной) стороны. Сделайте форк приложения goof в свой аккаунт на GitHub. Приложение можно найти на GitHub здесь: https://github.com/snyk/goof. Нам нужно просканировать наше приложение, чтобы понять, какие прямые и транзитивные зависимости существуют в приложении, а также уязвимости в каждой библиотеке. Для этого перейдите на https://snyk.io и нажмите «Sign up» или «Log in» (если вы уже зарегистрированы) в правом верхнем углу сайта:

Нажмите кнопку «Log in with your GitHub»:

Затем импортируйте проект goof, который вы только что склонировали. Выберите goof из списка ваших репозиториев GitHub и нажмите кнопку «Import Projects» в правом верхнем углу окна.

Когда проект будет просканирован, вы увидите его на своей панели управления:

Нажмите на ссылку package.json, чтобы перейти на страницу проекта, которая содержит полный список уязвимостей безопасности:

Вы можете нажать на вкладки «Issues» и «Dependencies», чтобы увидеть больше информации об уязвимостях и способах их устранения, а также о том, где они привносятся вашим приложением. Вы заметите в нижней части списка уязвимостей уязвимость обхода каталогов в пакете st. Давайте рассмотрим её подробнее.

Атака с обходом каталогов (также известная как path traversal) направлена на доступ к файлам и каталогам, находящимся за пределами предполагаемой папки. Манипулируя файлами с помощью последовательностей «точка-точка-слеш» (../) и их вариаций или используя абсолютные пути к файлам, можно получить доступ к произвольным файлам и каталогам в файловой системе, включая исходный код приложения, конфигурацию и другие критически важные системные файлы.
Уязвимости Directory Traversal можно разделить на два типа:
Пакет в приложении goof, содержащий уязвимость обхода каталогов, которую мы будем эксплуатировать, это пакет st. Ознакомьтесь с документацией st и библиотекой.
Теперь вы знаете, что такое обход каталогов, что делает пакет st, и можете приступить к взлому приложения — вы снова в «красной» команде! Поищите в приложении, где может использоваться пакет st, и попробуйте выполнить обход к каталогу, к которому вам не должно быть разрешено обращаться.
Вот несколько подсказок, которые помогут вам, если вы застрянете — постарайтесь обращаться к ним только после того, как уже попробовали сами и нуждаетесь в помощи.
Нажмите, чтобы увидеть Подсказку 1.
Нажмите, чтобы увидеть Подсказку 2.
Нажмите, чтобы увидеть Подсказку 3.
Нажмите, чтобы увидеть Подсказку 4.
Нажмите, чтобы увидеть Подсказку 5.
Нажмите, чтобы увидеть Подсказку 6.
Нажмите, чтобы увидеть Подсказку 7.
Нажмите, чтобы увидеть Подсказку 8.
Нажмите, чтобы увидеть Подсказку 9.