Лабораторная работаИнформационная безопасностьГод: 2025НИЯУ МИФИ: Национальный исследовательский ядерный университет «МИФИ»
👁 14💼 0

Готовые лабораторные работы: Уязвимости веб-приложения

Загружена: 19.02.2026 09:31

Анализ основных уязвимостей веб‑приложения: SQL‑инъекции, командная инъекция, хранение паролей в cookie, ошибки в JWT и отсутствие проверок доступа. Раскрыты примеры атак, исправленный код на Go и практические советы по защите для быстрого внедрения.

Содержание

Домашнее задание. Найденные уязвимости в коде

1.	SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
Цель – вывести скрытые данные из базы данных с помощью SQL-инъекции в WHERE-условии.

2.	SQL injection vulnerability allowing login bypass
Цель – обойти авторизацию с помощью SQL-инъекции.

3.	Unprotected admin functionality
Цель – получить доступ к административному функционалу, который должен быть скрыт. Удалить пользователя carlos.

4.	JWT authentication bypass via unverified signature
Цель – обойти аутентификацию через подделку JWT.

5.	Insecure direct object references
Цель – получить доступ к данным или действиям другого пользователя.

Подробное описание

📘 О чем эта работа

В работе проведён детальный разбор уязвимостей типичного веб‑приложения: выявлены SQL‑инъекции в WHERE и в форме логина, командная инъекция через параметр cmd, небезопасное хранение паролей в cookie, открытые ошибки БД, проблемы с сессиями и проверкой JWT. Объектом исследования служит тестовое приложение и набор лабораторных сценариев, предмет — уязвимости и способы их устранения в коде сервера.

📚 Что внутри

Материал содержит реальные примеры уязвимостей и их эксплуатацию, примеры payload'ов и готовые исправления:

  • Разбор SQL‑инъекций: показано использование подстановки 'OR 1=1' для обхода поиска и авторизации, иллюстрации (Рисунок 1–6) и текстовые пояснения.
  • Лабораторные кейсы (Лаб1–Лаб5) с целями: вывести скрытые данные, обойти логин, получить доступ к админке, подделать JWT (alg=none), получить чужие ресурсы через IDOR.
  • Проблемы хранения сессий: пример небезопасной куки 'fmt.Sprintf("%s|%s", username, password)' и рекомендации по замене на токены.
  • Исправленный код на Go: показан сервер с использованием prepared statements (db.QueryRow("SELECT id FROM users WHERE username=$1 AND password=$2", …)), генерацией sessionToken, установкой куки с HttpOnly, Secure, SameSiteStrictMode и Expires: time.Now().Add(2 * time.Hour).
  • Командная инъекция: пример уязвимого вызова exec.Command("sh", "-c", cmd). Пояснены методы устранения — удаление возможности выполнять произвольные команды и применение whitelist.
  • Практические инструкции: логирование ошибок вместо вывода технических сообщений пользователю, проверка ролей на сервере, обязательная валидация входных данных (например, len(username) > 3) и проверка подписи JWT (запрет alg=none).

📊 Для кого подходит

Материал полезен студентам и практикам по информационной безопасности, разработчикам бэкенда на Go, преподавателям для демонстрации уязвимостей и быстрого получения лабораторных результатов по темам SQL‑инъекций, CSRF, XSS, JWT и IDOR.

✨ Особенности

Работа объединяет теорию и практику: 5 лабораторных сценариев с наглядными результатами (рисунки 1–17), уязвимые фрагменты кода и полный исправленный пример сервера на Go. В тексте указаны конкретные точки фикса с примерами вызовов (db.QueryRow с $1/$2, http.SetCookie с флагами) и явные payload'ы (OR 1=1, alg=none).

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

Подойдет ли для моего ВУЗа?
Структура лабораторных кейсов и практические примеры соответствуют стандартным требованиям по дисциплинам «Информационная безопасность» и «Безопасность веб‑приложений».

Можно адаптировать?
Да. Исправленный код и рекомендации легко адаптируются под реальные проекты: заменить генерацию токена на криптографически безопасный случайный генератор, хранить sessionToken в таблице sessions, добавить проверку роли при доступе к админ‑эндпоинтам.

Заключение

Работа даёт готовый набор доказательств уязвимостей и конкретные правки: подготовленные выражения для предотвращения SQL‑инъекций, отказ от хранения паролей в cookie в пользу токенов, корректная установка флагов cookie, отключение /debug‑эндпойнта, запрет alg=none для JWT и серверную проверку прав доступа. Это практическое руководство для быстрой минимизации критичных рисков в веб‑приложениях.