Broken Access Control
Прямой доступ к чужим объектам, обход прав, выход за пределы рабочей директории.
Путей много, и пройти их подряд бессмысленно. Мы собрали четыре маршрута — по Go, Python, PHP и Node.js, — где каждый следующий этап опирается на предыдущий. Двигайтесь сверху вниз и закрывайте уязвимости по слоям: ввод → аутентификация → доступ → сервер → логика.
Полное покрытие OWASP Top 10 на чистом net/http и Fiber.
Flask, Jinja2, PyJWT — реальные ошибки в боевых веб-приложениях.
Native PHP + Apache: type juggling, file-inclusion и unserialize — векторы, которых нет в других стеках.
Express, EJS/Pug и jsonwebtoken — плюс prototype pollution и ReDoS, которых нет в других стеках.
Карта наших путей по официальному рейтингу Top 10 · 2021.
Стройная лестница из шести этапов. Закрываете слой — переходите выше; пропустить можно, но возвращаться придётся.
С чего обычно начинается практика AppSec: пользовательский ввод приземляется в SQL и HTML.
Кто заходит и как мы это проверяем. Пароли, токены, формы.
Когда логин уже пройден, начинается реальная работа авторизации.
Пробиваемся с уровня данных на уровень самого сервера.
Уязвимости там, где код кажется «правильным» — баги бизнес-правил и race conditions.
Атаки на каналы, в которых клиент держит постоянное соединение.
Четыре этапа Flask-стека: классические инъекции, токены и сессии, авторизация, серверное выполнение кода.
Flask и пользовательский ввод: классические SQLi и XSS как стартовая площадка.
Flask-Login, Werkzeug-сессии и JWT — где ломаются заходы и токены.
После логина — самая частая причина утечек: «забыли проверить, чьё это».
От ввода в шаблон до полноценного RCE через десериализацию.
Пять этапов native PHP под Apache: классические инъекции, доверие к сессиям, контроль доступа, серверное выполнение и финал — PHP-специфика, которой нет в строгих языках.
Native PHP без ORM и без autoescape: где user input заходит прямо в код или разметку.
Сессии PHP, password_hash и JWT — где ломается доверие к идентификации пользователя.
После логина — самая частая причина утечек: проверки доступа, которых забыли поставить.
От ввода в шаблон до RCE через десериализацию и include — классические PHP-векторы.
Уязвимости, которые возможны только в PHP — следствие слабой типизации и magic-поведения языка.
Пять этапов Express-стека: классические инъекции, токены и сессии, контроль доступа, серверное выполнение и финал — Node.js-специфика, которой нет в синхронных рантаймах.
Express и пользовательский ввод: классические SQLi и XSS как стартовая площадка.
Express-сессии, jsonwebtoken и пароли — где ломается доверие к личности пользователя.
После логина — самая частая причина утечек: «забыли проверить, чьё это».
От ввода в шаблон до RCE через шелл и шаблонизатор.
Уязвимости, возможные только в Node: следствие прототипов JS и однопоточного event loop.
Каждый путь закрывает один или несколько классов из официального рейтинга OWASP. Категории без путей — то, что мы планируем покрыть в ближайших итерациях.
Прямой доступ к чужим объектам, обход прав, выход за пределы рабочей директории.
Слабые алгоритмы, утечки секретов и неправильное использование криптографии.
Пользовательский ввод приземляется туда, где интерпретируется как код или разметка.
Уязвимости в логике, дизайне состояний и параллелизме, которых нельзя «закодить мимо».
Дефолты, debug-режимы и наружу торчащие технические эндпоинты.
Устаревшие или известно-уязвимые библиотеки в зависимостях проекта.
Слабые пароли, угоняемые сессии и токены с неправильной верификацией.
Загрузка непроверенных данных и десериализация — путь до RCE через файлы и pickle.
Нет логов атак и сигналов — инциденты остаются незамеченными.
Сервер ходит на внутренние сервисы и cloud metadata от имени атакующего.
Каталог содержит больше путей и независимых лаб — для практики после завершения основной линии или закрытия частных пробелов.