Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
web-hacking-playground — Веб-приложение с уязвимостями, обнаруженными в реальных случаях, как при пентестах, так и в программах Bug Bounty. | Kitploit
Инструменты/GitHubGitHub/takito1812/web-hacking-playground
Анализ уязвимостейЭксплуатация веб-приложенийВеб-безопасностьCTFТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubtakito1812/web-hacking-playground

web-hacking-playground

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Веб-приложение с уязвимостями, обнаруженными в реальных случаях, как при пентестах, так и в программах Bug Bounty.

Репозиторий
172342 лет назадПроверено Kitploit

Web Hacking Playground

Описание

Web Hacking Playground — это контролируемая среда для веб-взлома. Она содержит уязвимости, обнаруженные в реальных случаях, как при пентестах, так и в программах Bug Bounty. Цель состоит в том, чтобы пользователи могли практиковаться на них, а также научиться их обнаруживать и эксплуатировать.

Также будут затронуты другие интересные темы, такие как: обход фильтров с помощью создания собственных полезных нагрузок, выполнение цепочечных атак с использованием различных уязвимостей, разработка скриптов доказательства концепции и другие.

Важно

Исходный код приложения виден. Однако подход лаборатории — «чёрный ящик». Поэтому код не должен просматриваться для решения задач.

Кроме того, следует отметить, что фаззинг (как параметров, так и каталогов) и атаки методом перебора не дают никаких преимуществ в этой лаборатории.

Установка

Рекомендуется использовать Kali Linux для выполнения этой лабораторной работы. В случае использования виртуальной машины желательно использовать гипервизор VMware Workstation Player.

Среда основана на Docker и Docker Compose, поэтому необходимо иметь их установленными.

Для установки Docker на Kali Linux выполните следующие команды:

root@kitploit:~
sudo apt update -y
sudo apt install -y docker.io
sudo systemctl enable docker --now

Для установки Docker на других дистрибутивах на основе Debian выполните следующие команды:

root@kitploit:~
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl enable docker --now

Для установки Docker Compose выполните следующую команду:

root@kitploit:~
sudo apt install -y docker-compose

Примечание: В случае использования M1 рекомендуется выполнить следующую команду перед сборкой образов:

root@kitploit:~
export DOCKER_DEFAULT_PLATFORM=linux/amd64

Следующий шаг — клонировать репозиторий и собрать образы Docker:

root@kitploit:~
git clone https://github.com/takito1812/web-hacking-playground.git
cd web-hacking-playground
sudo docker-compose build

Также рекомендуется установить расширение браузера Foxy Proxy, которое позволяет легко менять настройки прокси, и Burp Suite, который мы будем использовать для перехвата HTTP-запросов.

Мы создадим новый профиль в Foxy Proxy для использования Burp Suite в качестве прокси. Для этого перейдите в настройки Foxy Proxy и добавьте прокси со следующей конфигурацией:

  • Тип прокси: HTTP
  • IP-адрес прокси: 127.0.0.1
  • Порт: 8080

Развёртывание

После установки всего необходимого вы можете развернуть среду следующей командой:

root@kitploit:~
git clone https://github.com/takito1812/web-hacking-playground.git
cd web-hacking-playground
sudo docker-compose up -d

Это создаст два контейнера приложений, разработанных на Flask, на порту 80:

  • Уязвимое веб-приложение (Socially): Имитирует социальную сеть.
  • Сервер эксплойтов: Вам не следует пытаться его взломать, так как он не имеет никаких уязвимостей. Его цель — смоделировать доступ жертвы по вредоносной ссылке.

Важно

Необходимо добавить IP-адреса контейнеров в файл /etc/hosts, чтобы к ним можно было обращаться по имени и чтобы сервер эксплойтов мог связываться с уязвимым веб-приложением. Для этого выполните следующие команды:

root@kitploit:~
sudo sed -i '/whp-/d' /etc/hosts
echo "$(sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' whp-socially) whp-socially" | sudo tee -a /etc/hosts
echo "$(sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' whp-exploitserver) whp-exploitserver" | sudo tee -a /etc/hosts

После этого уязвимое приложение будет доступно по адресу http://whp-socially, а сервер эксплойтов — по адресу http://whp-exploitserver.

При использовании сервера эксплойтов необходимо использовать указанные выше URL-адреса, используя доменное имя, а не IP-адреса. Это обеспечивает правильную связь между контейнерами.

Что касается взлома, для представления сервера атакующего необходимо использовать локальный IP-адрес Docker, поскольку лабораторная работа не предназначена для выполнения запросов к внешним серверам, таким как Burp Collaborator, Interactsh и т. д. Можно использовать Python http.server для имитации веб-сервера и приёма HTTP-взаимодействий. Для этого выполните следующую команду:

root@kitploit:~
sudo python3 -m http.server 80

Этапы

Среда разделена на три этапа, каждый из которых содержит различные уязвимости. Важно выполнять их по порядку, так как уязвимости на следующих этапах основываются на уязвимостях предыдущих этапов. Этапы следующие:

  • Этап 1: Доступ под любым пользователем
  • Этап 2: Доступ как администратор
  • Этап 3: Прочитать файл /flag

Важно

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

Этап 1: Доступ под любым пользователем

Показать

На этом этапе сессия конкретного пользователя может быть украдена с помощью межсайтового скриптинга (XSS), который позволяет выполнять код JavaScript. Для этого жертва должна иметь возможность перейти по URL-адресу в контексте пользователя; такое поведение можно смоделировать с помощью сервера эксплойтов.

Подсказки для решения этого этапа:

  • Есть ли какие-либо примечательные посты на главной странице?
  • Вам нужно объединить две уязвимости, чтобы украсть сессию. XSS достигается за счёт эксплуатации уязвимости Open Redirect, когда жертва перенаправляется на внешний URL-адрес.
  • Open Redirect имеет некоторые ограничения безопасности. Вам нужно найти способ их обойти. Проанализируйте, какие строки не разрешены в URL-адресе.
  • Куки — не единственное место, где хранится информация о сессии. Просмотр исходного кода файлов JavaScript, включённых в приложение, может помочь прояснить сомнения.

Этап 2: Доступ как администратор

Показать

На этом этапе может быть сгенерирован токен, который предоставляет доступ как администратор. Это типичная атака на JSON Web Token (JWT), при которой полезная нагрузка токена может быть изменена для повышения привилегий.

Подсказка для решения этого этапа: существует конечная точка, которая при предоставлении JWT возвращает действительную куки сессии.

Этап 3: Прочитать файл /flag

Показать

На этом этапе файл /flag можно прочитать с помощью уязвимости Server-Side Template Injection (SSTI). Для этого необходимо заставить приложение выполнить код Python на сервере. Можно выполнять системные команды на сервере.

Подсказки для решения этого этапа:

  • Уязвимая функциональность защищена двухфакторной аутентификацией. Поэтому перед эксплуатацией SSTI необходимо найти способ обойти запрос OTP-кода. Иногда приложение доверяет запросам, поступающим с того же сервера, и HTTP-заголовки играют важную роль в этой ситуации.

  • SSTI является «слепым», это означает, что вывод кода, выполненного на сервере, не получается напрямую. Модуль Python smtpd позволяет создать SMTP-сервер, который выводит полученные сообщения на стандартный вывод:

    sudo python3 -m smtpd -n -c DebuggingServer 0.0.0.0:25

  • Приложение использует Flask, поэтому можно предположить, что шаблонизатором является Jinja2, поскольку это рекомендуется официальной документацией Flask и широко используется. Вам необходимо получить совместимую с Jinja2 полезную нагрузку для получения финального флага.

  • Сообщение электронной почты имеет ограничение на количество символов. Информацию о том, как обойти это ограничение, можно найти в Интернете.

Решения

Подробные решения для каждого этапа можно найти в папке Solutions.

Ресурсы

Следующие ресурсы могут быть полезны при решении этапов:

  • Google
  • Twitter Advanced Search
  • HackTricks
  • PortSwigger Learning Materials
  • Payloads All The Things
  • Payload Box

Сотрудничество

Приветствуются pull request'ы. Если вы нашли какие-либо ошибки, пожалуйста, откройте issue.

Скачать инструмент