Security-лаба для Vue + webedge-db
Практические лабы по безопасности для Vue 3 + webedge-db — зачёт за реальный эксплойт.
Dev-storyЗадача
Обучение по безопасности обычно засчитывает лабу по writeup, так что можно «решить» её, ни разу не выполнив эксплойт, — а общие академии не покрывают специфику Vue/webedge-db.
Что делали
Локальная академия под стек Vue 3 + webedge-db + Tailwind, где лаба засчитывается только когда эксплойт реально срабатывает: XSS и `javascript:` URL по-настоящему исполняются в браузере (beacon ловит alert/print и `window.__hackbox.fire()`), SSRF идёт через мок внутренней сети с настоящим резолвером URL и egress-allowlist, а IDOR, over-posting, JWT alg=none, prototype pollution и прочее автодетектятся по реальному результату запроса; попытки, сессии и подсказки пишутся в webedge-db, а Vitest покрывает детекторы.
Результат
Каждая категория OWASP Top 10 (2021) закрыта хотя бы одной лабой, подтверждаемой реальным воспроизводимым эксплойтом, а не совпадением ключевых слов в отчёте — цель это Vue- и webedge-db-слабости самого стека.
Dev-story статья
Security-лаба для Vue + webedge-db: как создавался проект
Чаще всего обучение безопасности засчитывает лабу по writeup, так что можно пройти, описав эксплойт, который ни разу не выполнил. А общие академии учат против общих приложений, а не против точного стека, на котором мы строим. Hackbox это академия безопасности под стек Vue 3 + webedge-db, где лаба считается только когда эксплойт реально срабатывает.
Разделы
05
Модули
05
Стек
Vue 3 + webedge-db
Почему появился проект
Обучение по безопасности обычно засчитывает лабу по writeup, так что можно «решить» её, ни разу не выполнив эксплойт, — а общие академии не покрывают специфику Vue/webedge-db.
Чаще всего обучение безопасности засчитывает лабу по writeup, так что можно пройти, описав эксплойт, который ни разу не выполнил. А общие академии учат против общих приложений, а не против точного стека, на котором мы строим. Hackbox это академия безопасности под стек Vue 3 + webedge-db, где лаба считается только когда эксплойт реально срабатывает.
Что было создано
Локальная академия под стек Vue 3 + webedge-db + Tailwind, где лаба засчитывается только когда эксплойт реально срабатывает: XSS и `javascript:` URL по-настоящему исполняются в браузере (beacon ловит alert/print и `window.__hackbox.fire()`), SSRF идёт через мок внутренней сети с настоящим резолвером URL и egress-allowlist, а IDOR, over-posting, JWT alg=none, prototype pollution и прочее автодетектятся по реальному результату запроса; попытки, сессии и подсказки пишутся в webedge-db, а Vitest покрывает детекторы.
Локальная академия по образцу лучших практических курсов: пути обучения, карта тем, брифы лаб, таймер сессии, подсказки, блокнот, экспорт отчёта в markdown, mystery-режим, практический экзамен и Hall of Fame. Но суть это solved-by-exploit: XSS и javascript: URL по-настоящему исполняются в браузере (beacon ловит alert/print и window.__hackbox.fire()), SSRF идёт через мок внутренней сети с настоящим резолвером URL и egress-allowlist, перепроверяемым на каждом хопе, а IDOR, over-posting, JWT alg=none, prototype pollution и прочее автодетектится из реального результата запроса.
Основные модули и путь пользователя
Лаба помечается решённой по зафиксированному факту (результат попытки равен solved), а не по совпадению ключевых слов в writeup — writeup остаётся опциональным материалом для отчёта.
Эксплойты настоящие и детерминированные: JWT alg=none реально декодирует и проверяет, слабый reset-токен это настоящий LCG, подписи webhook реально HMAC-проверяются, а prototype pollution реально загрязняет Object.prototype через небезопасный deep-merge и тут же чистит.
SSRF не подделан строковыми проверками: мок внутренней сети имеет настоящий резолвер URL, внутренние эндпоинты с секретами, следование редиректам и egress-allowlist, перепроверяющий каждый хоп.
Покрытие честное: каждая категория OWASP Top 10 (2021) закрыта хотя бы одной лабой с реальным эксплойтом и автодетектом — а где категорию нельзя достоверно смоделировать в песочнице браузера (устаревшие компоненты / SCA), репо говорит это прямо, а не притворяется.
Всё это специфично стеку: слабые места это Vue DOM, навигация и состояние (v-html, редиректы роутера, динамические компоненты, localStorage auth-гейты) и webedge-db публичные функции, actions, storage и scheduler — ровно там, где наши приложения могли бы ошибиться.
Архитектура и технологические решения
Сделано на Vue 3, webedge-db, Security labs.
Vue 3 (script setup) + webedge-db + Tailwind v4; схема для попыток лаб, сессий и прогресса ученика; часть лаб имеет свои таргет-приложения, остальные делят рендерер с тем же реальным автодетектом; Vitest покрывает security-хелперы, чекеры, целостность каталога, движок автодетекта эксплойта, мок-сеть SSRF и e2e-прогоны таргетов; развёрнуто на Cloudflare Pages с нашим бэкендом.
Результат и выводы
Каждая категория OWASP Top 10 (2021) закрыта хотя бы одной лабой, подтверждаемой реальным воспроизводимым эксплойтом, а не совпадением ключевых слов в отчёте — цель это Vue- и webedge-db-слабости самого стека.
Академия безопасности, где нельзя пройти лабу, которую реально не взломал, нацеленная прямо на стек Vue + webedge-db, который мы выпускаем — так что практика против наших собственных реальных слабых мест, а не против учебника.
Связанные статьи
Читать дальше
Связанные истории проектов
Эти проекты близки по техническим или продуктовым решениям и показывают, как тот же принцип работает в другом контексте.
Dev-storyCMS
Динамический headless-CMS на webedge-db — типы контента, медиа, роли и публичный read-API, питающий наши сайты и статьи.
Dev-storyПлатформа календарных бронирований
Бронирование на Vue 3 — слоты, записи, письма и Meet-видеозвонки в один клик.
Dev-storyFableVita
FableVita — AI-фитнес-тренер с лигами, квестами и защищённой от фрода экономикой наград.
Есть похожая идея?
Обсудить проект