CTFINF Обучение

Offensive Web: наступательная веб-безопасность

Практический путь от безопасного старта и HTTP до чтения серверного кода, аутентификации и авторизации, SQL-инъекций, XSS, политик браузера, работы с файлами, инъекций команд, SSRF и XXE, безопасности API и JWT, итоговых работ по чужому коду и продвинутых тем веб-безопасности.

Длительность: 108 уроков · около 64 часов · можно проходить по частям

Цена: инферы 15 000 инферы 500 Горящая скидка · 500 ₽ при пополнении, 1 инфер = 1 ₽

Часть модулей открыта бесплатно для ознакомления. Полный доступ приобретается за инферы . Зарегистрироваться и купить курс

О курсе

Практический курс по исследованию веб-приложений для учеников 9–11 классов. Начать раньше можно при достаточной подготовке и самостоятельности. Для полного курса понадобятся базовый Python, терминал Linux и уверенная работа с браузером и файлами. Вводные модули объясняют HTTP, DevTools, Burp Suite, curl и базовую модель веба без требования программировать в первых уроках.

Для кого курс

Основная аудитория — ученики 9–11 классов. Начать раньше можно при достаточной подготовке и самостоятельности.

Чему научится ученик

Безопасно работать в персональной лаборатории; читать HTTP, клиентский и серверный код; исследовать вход, сессии, авторизацию и бизнес-логику; проверять конфигурацию веб-сервисов; ограниченно и доказательно исследовать SQL-инъекции, XSS, CSRF и CORS, политики браузера, обход путей, чтение локальных файлов и загрузку файлов, инъекции команд, SSTI и небезопасную десериализацию, SSRF и XXE, безопасность API и JWT; разбирать чужой код на итоговых работах — с исходниками и без — и знакомиться с продвинутыми темами. Курс учит методу и доказательности, а не «волшебным» приёмам: вы поймёте, что именно доказывает каждая находка и чего она не доказывает.

Формат практики

Каждый модуль — это короткая теория и практика в персональной лаборатории: она запускается в один клик и доступна только вам. Задания двух основных видов. Перенос — вы исследуете стенд и вносите найденные значения (параметр, заголовок, фрагмент ответа); попадать нужно сразу в несколько полей, поэтому угадать наугад не выйдет. Работа в лаборатории — вы добиваетесь нужного состояния прямо в стенде. Ответы проверяются автоматически, число попыток не ограничено. Если застряли, подсказки открываются постепенно: сначала дают ориентир, а последний уровень проводит по решению задачи. Несколько заданий на код выполняются во встроенном интерпретаторе; отдельную среду для них устанавливать не нужно.

Подготовка к этапам ВСОШ

Материалы курса размечены по уровню и помогают выстроить подготовку последовательно.

  • Начало работы и безопасная лаборатория
  • HTTP и исследование веб-приложений
  • HTML, DOM и JavaScript
  • Аутентификация, сессии и восстановление доступа
  • Авторизация, контроль доступа и бизнес-логика
  • Чтение серверного кода
  • Ошибки конфигурации безопасности
  • Основы SQL, базы данных и SQL-инъекции
  • XSS: отражённый, хранимый, DOM и CSP
  • CSRF, CORS и политики браузера
  • Обход путей, локальные файлы и загрузка файлов
  • Инъекция команд, SSTI и небезопасная десериализация
  • SSRF, XXE и внутренние сервисы
  • Безопасность API и JWT
  • Итоговые работы: с исходным кодом и без него
  • Продвинутые темы веб-безопасности

Что нужно до начала

Лаборатории запускаются на сервере и открываются в браузере — устанавливать сами стенды не нужно. Для полного курса понадобятся браузер с DevTools, Burp Suite Community Edition, терминал Linux с curl и базовый Python 3. Вводные модули объясняют HTTP, инструменты и нужные команды; программирование в первых уроках не требуется, а библиотека requests разбирается по ходу курса.

Программа курса

Модуль 1. Начало работы

бесплатно

Безопасный старт в персональной лаборатории и необязательная проверка подготовки.

Модуль 3. HTML, DOM и JavaScript

закрыто

Чтение формы и клиентского кода, связь JavaScript с HTTP и проверка серверного состояния.

Урок 9. HTML, формы и DOM · 22 мин.
Урок 10. JavaScript: события и изменение страницы · 20 мин.
Урок 11. От JavaScript к HTTP-запросу · 22 мин.
Урок 12. Почему интерфейсу нельзя доверять · 27 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 4. Аутентификация, сессии и восстановление доступа

закрыто

Вход, жизненный цикл сессии — от создания до завершения, признаки формы, восстановление доступа, второй фактор (MFA) и небольшая локальная автоматизация.

Урок 13. Как проходит вход · 22 мин.
Урок 14. Как живёт сессия · 27 мин.
Урок 15. Что выдаёт форма входа · 27 мин.
Урок 16. Восстановление доступа · 27 мин.
Урок 17. Второй фактор (MFA) и одноразовые коды · 30 мин.
Урок 18. Итог: цепочка аутентификации · 35 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 5. Авторизация, контроль доступа и бизнес-логика

закрыто

Проверки владения, ролей, полей, tenant-границ, бизнес-инвариантов и конкурентных запросов.

Урок 19. Доступ к чужому объекту (IDOR и BOLA) · 27 мин.
Урок 20. Доступ по роли и функциям (BFLA и forced browsing) · 27 мин.
Урок 21. Лишние изменяемые поля (mass assignment) · 27 мин.
Урок 22. Проверка поля, команды и перехода · 32 мин.
Урок 23. Бизнес-процесс, инварианты и повтор запроса · 30 мин.
Урок 24. Одновременные запросы и состояние гонки · 35 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 6. Чтение серверного кода

закрыто

Единый метод чтения серверного (backend) кода: от HTTP-маршрута и источника данных через промежуточные обработчики, проверки и ветвление до точки эффекта. Flask и Express составляют ядро; Go и PHP учат переносить метод по короткой шпаргалке.

Урок 25. Как запрос попадает во Flask-обработчик · 25 мин.
Урок 26. Как проследить данные и проверки · 27 мин.
Урок 27. Где код создаёт эффект: точки эффекта · 30 мин.
Урок 28. Как читать промежуточные обработчики Express · 27 мин.
Урок 29. Как узнавать знакомые роли в Go-кодедополнительный · 30 мин.
Урок 30. Как распознавать источники и эффекты в PHPдополнительный · 30 мин.
Урок 31. Итог: разобрать незнакомый серверный проект · 37 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 7. Ошибки конфигурации безопасности

закрыто

Проверка того, какие запросы принимает точка обращения (endpoint), где открыты служебные разделы, как Nginx сопоставляет URL с файлами и каким заголовкам доверяют proxy и приложение. Выводы подтверждаются кодом, конфигурацией и свежими HTTP-ответами.

Урок 32. Какие запросы принимает точка обращения (endpoint) · 27 мин.
Урок 33. Служебные панели, документация и стандартные учётные записи · 32 мин.
Урок 34. Как Nginx сопоставляет URL и файл · 35 мин.
Урок 35. Host и переданные proxy-заголовки · 32 мин.
Урок 36. Итог: путь через proxy к приложению · 40 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 8. Основы SQL, базы данных и SQL injection

закрыто

От реляционной модели и обычных SQL-запросов до доказательной, ограниченной проверки SQL injection в персональном приложении с MySQL.

Урок 37. Таблицы, строки, столбцы, типы и primary key · 25 мин.
Урок 38. SELECT, FROM, WHERE · 25 мин.
Урок 39. AND, OR, LIKE, ORDER BY, LIMIT · 27 мин.
Урок 40. INSERT, UPDATE, JOIN и агрегатные функции · 30 мин.
Урок 41. Данные и SQL-код: параметризованные запросы · 27 мин.
Урок 42. Отличия SQLite, MySQL и PostgreSQL · 27 мин.
Урок 43. Подтверждение SQL injection и анализ ошибок · 32 мин.
Урок 44. Количество и типы колонок, UNION · 35 мин.
Урок 45. Boolean blind SQL injection · 35 мин.
Урок 46. Time-based и шумный временной oracle · 37 мин.
Урок 47. Ограниченная автоматизация через Python requests · 30 мин.
Урок 48. Перенос техник между SQLite, MySQL и PostgreSQL · 35 мин.
Урок 49. Итоговая SQLi-задача на незнакомом приложении · 45 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 9. XSS: reflected, stored, DOM и CSP

закрыто

От определения контекста вывода до доказательной проверки reflected, stored и DOM XSS и выбора защиты по первопричине.

Урок 50. Контексты вывода: HTML, атрибут, JavaScript и URL · 32 мин.
Урок 51. Отражённая XSS (reflected XSS) · 35 мин.
Урок 52. Хранимая XSS (stored XSS) и роль пользователя-жертвы · 37 мин.
Урок 53. DOM XSS: от источника к опасной операции · 35 мин.
Урок 54. Кодирование, очистка данных и границы защиты CSP · 40 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 10. CSRF, CORS и browser policies

закрыто

От точной модели origin, site и ambient cookie до доказательной проверки CSRF, CORS, clickjacking и postMessage.

Урок 55. Same-Origin Policy, ambient cookies и SameSite · 35 мин.
Урок 56. CSRF: формы и JSON/API · 37 мин.
Урок 57. CORS: credentials, preflight, отправка и чтение · 40 мин.
Урок 58. Clickjacking и frame policy · 35 мин.
Урок 59. postMessage: origin и схема сообщения · 40 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 11. Path Traversal, LFI и File Upload

закрыто

От canonical path и файловых sinks до Nginx mapping и безопасного жизненного цикла загрузки.

Урок 60. Path Traversal: путь к файлу · 35 мин.
Урок 61. LFI и раскрытие исходного кода · 32 мин.
Урок 62. Nginx и traversal в static mapping · 35 мин.
Урок 63. Upload: validation, storage и serving · 37 мин.
Урок 64. Upload processing и граница выполнения · 40 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 12. Инъекция команд, SSTI и небезопасная десериализация

закрыто

От строк команд и аргументов до серверных шаблонов и границы загрузки объектов.

Урок 65. Инъекция команд с прямым выводом · 35 мин.
Урок 66. Слепая инъекция команд: код завершения и время · 37 мин.
Урок 67. Инъекция аргументов, окружение и PATH · 40 мин.
Урок 68. От выполнения команды к ограниченной сессии приложения · 20 мин.
Урок 69. SSTI в Python/Jinja · 37 мин.
Урок 70. Перенос модели SSTI на другой контекст · 37 мин.
Урок 71. Небезопасная десериализация и транспортные оболочки · 40 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 13. SSRF, XXE и внутренние сервисы

закрыто

От SSRF с видимым ответом и без него до безопасной проверки внутренних API; затем — XXE в обычных XML-документах и XML внутри загружаемых форматов.

Урок 72. SSRF с видимым ответом · 35 мин.
Урок 73. Разбор URL, перенаправления и политика назначений · 40 мин.
Урок 74. Слепая SSRF и регистратор событий · 37 мин.
Урок 75. Internal API и безопасный metadata emulator · 40 мин.
Урок 76. XML parser и видимый XXE file/internal fetch · 45 мин.
Урок 77. Blind XXE, XML upload и Content-Type · 45 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 14. JWT и безопасность API

закрыто

Проверка подписи и правил JWT; контроль доступа к объектам, функциям и полям API; забытые версии, ограничения ресурсов, подлинность webhook, повтор событий и доверие к внешним сервисам.

Урок 78. JWT: декодирование, проверка и подпись · 37 мин.
Урок 79. Политика алгоритмов и ключей JWT · 42 мин.
Урок 80. Claims, роли и жизненный цикл JWT · 42 мин.
Урок 81. BOLA в REST API: проверка объекта · 42 мин.
Урок 82. BFLA в API: проверка функции · 42 мин.
Урок 83. Поля API: правила записи и ответа · 45 мин.
Урок 84. Инвентаризация API и забытые версии · 40 мин.
Урок 85. Потребление ресурсов, rate и sensitive flows · 42 мин.
Урок 86. Подлинность webhook/callback и защита от replay · 45 мин.
Урок 87. Граница доверия к upstream API · 45 мин.
Урок 88. Проекции и представления API-ответа · 40 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 15. Итоговые работы: с исходным кодом и без него

закрыто

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

Урок 89. Итоговая работа с исходным кодом · 75 мин.
Урок 90. Итоговая работа без исходного кода · 90 мин.
Модуль откроется после покупки курса за инферы 500 .

Модуль 16. Продвинутые темы Offensive Web

закрыто

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

Урок 91. Second-order, stacked и OOB SQLiдополнительный · 45 мин.
Урок 92. NoSQL; LDAP/XPath recognitionдополнительный · 45 мин.
Урок 93. DOM clobbering и client prototype pollutionдополнительный · 45 мин.
Урок 94. RFI, symlink и archive path edge casesдополнительный · 45 мин.
Урок 95. Server object pollution и gadget chainsдополнительный · 45 мин.
Урок 96. Safe DNS rebinding emulatorдополнительный · 45 мин.
Урок 97. JWT key selection: kid, jku и JWKдополнительный · 45 мин.
Урок 98. OAuth/OIDC authorization-code flowдополнительный · 45 мин.
Урок 99. GraphQL introspection и resolver authorizationдополнительный · 45 мин.
Урок 100. WebSocket handshake и message authorizationдополнительный · 45 мин.
Урок 101. Web-интеграции с LLM: границы довериядополнительный · 30 мин.
Урок 102. Рассинхронизация HTTP-запросов CL.TE / TE.CLдополнительный · 60 мин.
Урок 103. HTTP/2 downgrade/desyncдополнительный · 60 мин.
Урок 104. Cache poisoning и cache deceptionдополнительный · 50 мин.
Урок 105. Границы YAML/CSV/export-парсеровдополнительный · 30 мин.
Урок 106. Фиксированный внутренний эффект TCP/PTYдополнительный · 60 мин.
Урок 107. HTTP Parameter Pollution и parser ambiguityдополнительный · 45 мин.
Урок 108. CRLF и response splittingдополнительный · 45 мин.
Модуль откроется после покупки курса за инферы 500 .

Чем курс отличается от обычных курсов по ИБ

Курс построен вокруг доказательности, а не «набора эксплойтов». В каждой теме вы разбираете, что именно подтверждает находка и чего она не доказывает, — это тот самый навык, который проверяют на олимпиадах и в реальной работе. Практика идёт в изолированных персональных стендах: вы исследуете только свою лабораторию, ничего чужого и ничего в открытом интернете. Материал выстроен от безопасного старта к продвинутым темам и размечен по уровню сложности, поэтому подходит и новичку в вебе, и тому, кто уже готовится к заключительному этапу. Олимпиадные привязки — только к реальным, проверяемым задачам ВСОШ; там, где подходящей задачи нет, это честно указано.

Частые вопросы

Нужно ли уметь программировать?

Для старта — нет. Вводные модули объясняют HTTP, DevTools, Burp Suite и curl без программирования. Дальше пригодятся базовый Python и уверенная работа в терминале Linux; нужные команды и библиотека requests разбираются по ходу курса.

Это законно? На чём я тренируюсь?

Да. Вся практика идёт в персональной лаборатории, которая запускается только для вас и живёт ограниченное время. Вы исследуете свой стенд, а не чужие сайты. Приёмы из курса нельзя применять к системам без разрешения владельца — об этом отдельно говорится в материалах.

Гарантирует ли курс победу на олимпиаде?

Нет, и мы честно об этом говорим. Курс даёт метод, практику и разбор форматов, близких к ВСОШ, — а результат зависит от вашей подготовки. Все олимпиадные примеры привязаны к реальным задачам, ничего не выдумано.

Сколько времени занимает курс?

Ориентировочно около 64 часов — это оценка, а не норматив. Курс можно проходить по частям в своём темпе; лаборатории и подсказки доступны столько, сколько нужно.

Можно ли пропустить темы, которые я уже знаю?

У части модулей есть диагностика: сдав короткий тест, вы засчитываете модуль как пройденный и идёте дальше. Если тест не сдан, лучше пройти модуль — это ровно те основы, на которых держатся сложные темы.

Нужно ли что-то устанавливать?

Сами лаборатории устанавливать не нужно: они запускаются на сервере и открываются в браузере. На компьютере понадобятся браузер с DevTools, Burp Suite Community Edition и терминал Linux с curl; позже — Python 3. Во вводном уроке есть короткий список подготовки.