Небезпечний дизайн, відкриті порти та неправильна конфігурація, ключові вразливості у системах безпеки

06.09.2024 2 хвилин Автор: Cyber Witcher

Як захистити веб-додатки від небезпечного дизайну та ненадійних конфігурацій? Дізнайтесь про головні вразливості, такі як неправильне управління доступом, відкриті порти та застарілі компоненти.

Розпочнемо з небезпечний дизайну

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

Ненадійні архітектурні рішення

  • Опис: Поганий дизайн або архітектурні рішення, які не враховують питання безпеки.

  • Приклад: Архітектура, що допускає небезпечні або неконтрольовані дані у внутрішні процеси, що може призвести до витоків інформації або атак.

Відсутність безпеки в процесах розробки

  • Опис: Неврахування безпеки на етапі проектування або розробки додатка.

  • Приклад: Необхідні заходи безпеки не включені в планування та реалізацію додатка, що призводить до вразливостей.

Неправильне управління доступом

  • Опис: Неналежне управління доступом до функцій та даних.

  • Приклад: Відсутність сегментації доступу або захисту чутливих даних, що дозволяє неавторизованим користувачам отримати доступ до критичних функцій.

 Single entry point (aka Front Controller)

 Blue Team

Single Entry Point, або Front Controller, є архітектурним шаблоном, де всі запити до веб-додатку спрямовуються через одну точку доступу. Це забезпечує централізовану обробку запитів, що спрощує контроль за безпекою та маршрутизацією.

У фреймворках, таких як Symfony, Laravel та Yii2, цей патерн реалізується через єдиний файл, наприклад index.php, який обробляє всі запити до програми.

Red team

1. Атака на Single Entry Point:

Якщо Front Controller налаштований неправильно або містить вразливості, зловмисники можуть спробувати обійти його або використати для атак. Це може призвести до того, що вони отримають доступ до файлів або директорій, оминаючи основний механізм контролю. Такі ситуації виникають через некоректну конфігурацію сервера, коли дозволяється прямий доступ до файлів, які повинні бути захищені.

  • curl http://target-site.com/config.php

2. Використання неправильних налаштувань маршрутизації

Якщо в маршрутизації є помилки, зловмисники можуть спробувати маніпулювати маршрутами для доступу до небажаних частин додатку.

  • curl http://target-site.com/index.php?controller=Admin&action=editUser&id=1

3. Зловживання можливістю передавання параметрів

Можливе використання параметрів запиту для маніпуляцій або виконання небажаних дій.

  • curl http://target-site.com/index.php?module=User&action=delete&id=1

4. Спроби атаки через уразливості в коді

Зловмисники можуть шукати уразливості в коді, який обробляє запити через Front Controller, такі як SQL ін’єкції або інші атаки на основі вхідних даних.

  • curl http://target-site.com/index.php?search=’ OR ‘1’=’1

 Publicly open ports

Blue team

Publicly Open Ports є ключовим елементом мережевої безпеки, і лише мінімальний набір портів повинен бути доступним для зовнішніх користувачів. Наявність зайвих відкритих портів може створювати вразливості, які можуть бути використані зловмисниками для проведення атак.

Основні принципи:

  1. Мінімізація відкритих портів: Тільки необхідні порти повинні бути доступні для користувачів. Наприклад, порти для веб-сервера (80/443 для HTTP/HTTPS) або порт для бази даних (якщо він необхідний).

  2. Обмеження доступу до критичних портів: Деякі порти, наприклад, порт 22 для SSH, повинні бути відкриті тільки за вимогою або доступні лише з ізольованого середовища, наприклад, через VPN або з певних IP-адрес.

  3. Моніторинг та аудит: Постійний моніторинг відкритих портів і аудит налаштувань допомагають вчасно виявити та закрити непотрібні порти.

  4. Застосування брандмауера (firewall): Використовуйте правила брандмауера для обмеження доступу до портів, дозволяючи доступ тільки для певних служб та з певних IP-адрес.

 Red team

1. Сканування портів

Використання інструментів, таких як Nmap, для сканування мережі і виявлення відкритих портів. Це перший крок в атаках на відкриті порти.

  • nmap -p- target-ip

2. Експлуатація уразливостей на відкритих портах

Після виявлення відкритих портів зловмисники можуть спробувати використовувати уразливості у відповідних службах.

  • hydra -l username -P password_list.txt ssh://target-ip

3. Використання відкритих портів для DDoS-атак

Відкриті порти можуть бути використані для проведення атак типу Denial of Service (DDoS), спрямованих на перевантаження ресурсу.

4. Форвардінг портів

Зловмисник може скористатися відкритим портом для створення тунелю і доступу до внутрішніх ресурсів, які зазвичай не доступні ззовні.

  • ssh -L 8080:localhost:80 user@target-ip

Deny by Default, Fail Early

Blue team

Deny by Default і Fail Early — це принципи розробки та безпеки додатків, які передбачають, що система автоматично блокує доступ або виконання дій, якщо не виконуються необхідні умови, а також зупиняє роботу коду на ранніх етапах при виявленні помилок або проблем. Це допомагає мінімізувати ризики і підвищує надійність системи.

Deny by Default:

Усі дії та доступи повинні бути заборонені за замовчуванням, і лише після успішного проходження необхідних перевірок дозволяється виконання дій або доступ. Такий підхід мінімізує ризик випадкового або несанкціонованого доступу. Принцип Fail Early:

При виявленні помилки або неправильного стану система повинна негайно припинити подальше виконання, щоб уникнути поглиблення проблем або можливих атак.

Red team

Атаки на системи з неправильним впровадженням цих принципів

1. Байпас перевірок доступу

Якщо в системі є приховані маршрути або функції, які не мають явних перевірок доступу, зловмисник може отримати доступ до них, використовуючи прямий запит.

  • curl -X POST https://target-app.com/hidden-route

2. Експлуатація логіки, що не враховує “Fail Early”

Якщо перевірка автентифікації не виконується належним чином на всіх етапах процесу, зловмисник може залишити сесію відкритою та використовувати її для атаки.

3. Використання підвищених привілеїв

Зловмисник може спробувати виконати адміністративні дії через стандартний інтерфейс користувача, якщо система не перевіряє ролі та дозволи належним чином.

Whitelist, Blacklist

Blue team

Whitelist та Blacklist є важливими методами для управління доступом і обмеженням дій у системах.

Whitelist (список дозволених): Включає лише ті елементи, які дозволені. Все інше автоматично заборонено. Це підхід, який забезпечує більший рівень безпеки, оскільки він чітко визначає, що можна робити.

Blacklist (список заборонених): Включає лише ті елементи, які заборонені. Все інше автоматично дозволено. Це менш надійний підхід, оскільки він не охоплює всі можливі загрози.

Red team

1. Обхід Blacklist

Якщо в Blacklist заборонені лише певні розширення (наприклад, .php), зловмисник може завантажити файл з іншими розширеннями, які все одно можуть бути виконані на сервері (наприклад, .phtml, .php5).

2. Ін’єкції через дозволені файли

Якщо система дозволяє завантажувати певні типи файлів (наприклад, зображення), зловмисник може вбудувати шкідливий код у метадані файлу. Вбудовування шкідливого JavaScript у зображення через XSS-атаку.

3. Обхід Whitelist через нестандартні розширення

Зловмисник може спробувати використовувати нестандартні або нові розширення, які не включені в Whitelist, але можуть бути виконані на сервері. Завантаження файлу з розширенням .phar, яке також може бути виконано на деяких серверах.

Неправильна конфігурація безпеки

Неправильна конфігурація безпеки – це помилки в налаштуваннях безпеки, які можуть залишити додаток або систему вразливими.

Використання застарілих або ненадійних налаштувань

  • Опис: Залишення застарілих або ненадійних налаштувань безпеки.

  • Приклад: Відкриті порти або сервіси, які не використовуються, але залишені в конфігурації.

Відсутність належної конфігурації сервера

  • Опис: Неналежне налаштування серверів, яке може призвести до вразливостей.

  • Приклад: Неправильні налаштування для серверів бази даних або веб-серверів, які дозволяють несанкціонований доступ.

Неправильне управління обліковими записами

  • Опис: Відсутність належного управління обліковими записами та правами доступу.

  • Приклад: Облікові записи з надмірними привілеями або з незахищеними паролями.

1. Використання середовища розробки/тестування на продуктивних системах

  • Blue Team: Використовуйте окремі середовища для розробки, тестування та продуктивної системи. Забезпечте, що тестові середовища не мають доступу до продуктивних даних.

  • Red Team: Спробуйте знайти URL, пов’язані з тестовими середовищами, або доступ до конфігураційних файлів, які можуть розкрити дані про продуктивне середовище.

2. Використання HTTP поза межами середовища розробки

  • Blue Team: Вимкніть HTTP і вимагайте використання HTTPS з актуальними сертифікатами.

  • Red Team: Перевірте можливість підміни трафіку (MITM) або ін’єкцій даних у випадках використання HTTP.

3. Неправильна конфігурація HTTPS

  • Blue Team: Перевірте правильність налаштувань SSL/TLS, переконайтесь, що використовуються тільки надійні протоколи та шифри.

  • Red Team: Перевірте наявність вразливостей SSL/TLS, таких як небезпечні шифри або підтримка застарілих протоколів.

4. Неправильна конфігурація SSH

  • Blue Team: Забороніть доступ до SSH для root-користувача, вимкніть аутентифікацію за паролем на користь ключів SSH.

  • Red Team: Спробуйте атакувати SSH-конфігурацію, зосередившись на виявленні rootдоступу або слабких паролів.

5. Неправильна конфігурація переліку директорій

  • Blue Team: Забороніть доступ до переліку директорій через серверні налаштування (наприклад, через .htaccess або конфігурацію Nginx/Apache).

  • Red Team: Перевірте можливість доступу до переліку директорій, шукайте конфіденційні файли або резервні копії.

6. Незахищені публічно відкриті порти

  • Blue Team: Відкрийте тільки ті порти, які необхідні для роботи сервісів, закрийте порти баз даних (наприклад, 5432 для PostgreSQL).

  • Red Team: Проведіть сканування портів для виявлення відкритих портів, які можуть бути використані для атак.

7. Використання стандартних логінів та паролів

  • Blue Team: Змініть стандартні логіни та паролі відразу після встановлення системи, вимкніть застарілі облікові записи.

  • Red Team: Використовуйте атаки типу “Brute Force” або списки стандартних паролів для входу.

8. Тестові акаунти на продуктивних системах

  • Blue Team: Вимкніть або видаліть всі тестові акаунти перед розгортанням продуктивної системи.

  • Red Team: Спробуйте виявити тестові акаунти через фузінг або атаки словникового типу.

9. Занадто інформативні помилки або стеки викликів на продуктивних системах

  • Blue Team: Увімкніть користувацькі сторінки помилок, відключіть показ стека викликів у продуктивному середовищі.

  • Red Team: Використовуйте інформацію з помилок для подальших атак, наприклад, шляхів до файлів або назви баз даних.

10. Вимкнені механізми безпеки для зручності

  • Blue Team: Забезпечте, щоб всі механізми безпеки залишалися ввімкненими навіть під час розробки. Наприклад, вимагайте пароля для використання sudo.

  • Red Team: Спробуйте скористатися тимчасовими налаштуваннями, які були залишені після тестування.

Уразливі та застарілі компоненти

Уразливі та застарілі компоненти – це використання компонентів, бібліотек або фреймворків, які містять відомі вразливості.

1. Використання застарілих версій компонентів

  • Опис: Використання компонентів, які більше не підтримуються або містять відомі вразливості.

  • Приклад: Використання старих версій бібліотек, які мають відомі помилки безпеки, які не були виправлені.

2. Недостатнє оновлення компонентів

  • Опис: Нехтування оновлення компонентів та бібліотек до останніх версій.

  • Приклад: Ігнорування патчів або оновлень, які виправляють відомі вразливості.

3. Ненадійні сторонні компоненти

  • Опис: Використання сторонніх компонентів без перевірки їхньої безпеки.

  • Приклад: Інтеграція сторонніх бібліотек або фреймворків без належної перевірки їхньої безпеки та цілісності.

CVE (Common Vulnerabilities and Exposures)

Blue team

Використовуйте бази даних CVE, такі як CVE.mitre.org або Exploit-DB, для регулярної перевірки використовуваного програмного забезпечення на наявність відомих вразливостей.

Регулярно оновлюйте всі компоненти системи, щоб уникнути використання вразливих версій.

Вразливість CVE-2021-44228 (Log4Shell) у бібліотеці Log4j. Встановлення оновлень або використання налаштувань, що знижують ризик.

Red team

Використовуйте відомі CVE для атаки на цільову систему. Шукайте уразливі версії компонентів або посилання на експлойти в базах даних, щоб отримати можливість проникнення. Застосування експлойту для CVE-2021-44228, щоб отримати віддалене виконання коду на сервері.

PHP Dependencies audit

Blue team

Використовуйте інструменти для аудиту залежностей PHP, такі як Composer Audit, для виявлення застарілих та уразливих залежностей. Слідкуйте за оновленнями залежностей та регулярно перевіряйте проект на нові уразливості.

Red team

Шукайте вразливі залежності у складі проекту. Використовуйте їх для атак, наприклад, через уразливості в бібліотеках або компонентах. Знайти вразливість у старій версії бібліотеки PHP, яка може дозволити виконання шкідливого коду.

Node Dependencies audit

 Blue team

Використовуйте інструменти, такі як npm audit або Yarn Audit, для перевірки Node.jsзалежностей на наявність уразливостей. Регулярно перевіряйте проект на наявність вразливих пакетів та оновлюйте їх.

Red team

Перевіряйте, чи використовує цільова система старі версії Node.js пакетів, та шукайте експлойти для виявлених вразливостей. Використання уразливості в старій версії бібліотеки для здійснення атак, таких як викрадення даних або виконання коду.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.