OWASP Top 10 частина 1: Broken Access Control

21 жовтня 2024 1 хвилина Автор: Lady Liberty

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

Порушений контроль доступу

1. Відсутність аутентифікації

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

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

2. Відсутність авторизації

  • Опис: Після того, як користувач пройшов аутентифікацію, система не перевіряє, чи має він право доступу до конкретних ресурсів або функцій.

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

3. 403 Forbidden проти 404 Not Found

  • Опис: Код 403 означає, що доступ до ресурсу заборонено, в той час як код 404 вказує, що ресурс не знайдено. Неправильне використання кодів статусу може розкрити інформацію про структуру додатка.

  • Приклад: Якщо при спробі доступу до адміністративного розділу веб-додатка система повертає 404, це може вказувати на існування такого розділу, але доступ до нього заблоковано.

Натомість, код 403 чітко сигналізує про заборону доступу.

4. Чутливі дані в небезпечних параметрах

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

  • Приклад: Передача ID користувача або токенів доступу в URL, який може бути збережений у журналах сервера або історії браузера. Наприклад, URL на зразок https://example.com/profile?user_id=1234 дозволяє змінити user_id і отримати доступ до іншого профілю.

5. Міжсайтові запити з підробкою (CSRF)

  • Опис: Атаки, при яких зловмисник спонукає користувача, який вже аутентифіканий у веб-додатку, виконати небажану дію.

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

Аутентифікація

BLUE TEAM

Аутентифікація — це процес підтвердження особи користувача. Найбільш розповсюдженим прикладом є введення користувачем свого ідентифікатора, такого як електронна пошта, разом з паролем. Коли запит направляється до захищеної зони, брандмауер отримує можливість витягти з об’єкта Request особисті дані користувача. Далі система генерує токен, який включає менеджера аутентифікації. Цей менеджер перевіряє токен і, якщо надана інформація відповідає очікуванням, видає підтверджений токен. Після цього цей токен зберігається в спеціальному сховищі для подальшого використання.

Приклад аутентифікації symfony

RED TEAM

Brute force

Атака стає можливою, коли аутентифікація відсутня або недостатньо надійна, що дозволяє зловмисникам використовувати метод перебору для підбору паролів, перебираючи всі можливі варіанти, поки не знайдеться правильний. У контексті Symfony атака брутфорс полягає в спробах зламати захищені частини сайту або додатка, підбираючи правильні комбінації логінів і паролів. Такі атаки зазвичай спрямовані на стандартні механізми аутентифікації, які Symfony реалізує через Security Bundle.

Практичний приклад на python

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

Застосування інструментів для брутфорсу: Інструменти на кшталт Hydra, Burp Suite або OWASP ZAP можуть автоматизувати цей процес, значно підвищуючи ефективність атаки.

Авторизація (Чи можу я це зробити?)

BLUE TEAM

 Авторизація — це процес перевірки прав доступу або модифікації ресурсів.

Авторизація в двох словах

RED TEAM

IDOR – Insecure Direct Object References. Відсутність перевірки прав доступу може дозволити зловмисникам отримати доступ до ресурсів, просто змінивши ідентифікатори в URL.

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

 403   Forbidden vs 404 Not Found

  • Forbidden – Код статусу 403 Forbidden вказує, що сервер зрозумів запит, але відмовляється його виконати через відсутність необхідних дозволів.

  • Not Found – Код статусу 404 Not Found вказує, що запитуваний ресурс не знайдено на сервері. Це може бути результатом невірного URL або відсутності файлу на сервері.

BLUE TEAM

403 Forbidden
404 Not Found

Якщо ви не бажаєте, щоб користувач знав про наявність певного ресурсу, варто використовувати відповідь із кодом 404 (Not Found). Якщо ж вам потрібно чітко показати, що ресурс існує, але доступ до нього обмежений, краще скористатися кодом 403 (Forbidden).

RED TEAM

Resource Enumeration.  Зловмисники можуть скористатися різницею між відповідями 403 та 404, щоб визначити, чи існує ресурс, навіть якщо вони не мають доступу до нього.

Практичний приклад атаки (Python)

Цей скрипт перевіряє наявність ресурсів, аналізуючи відповіді сервера. Якщо ресурс існує, але доступ заборонений, повертається код 403, якщо ж його не існує — код 404.

Sensitive data in insecure parameters

Sensitive Data in Insecure Parameters (Чутливі дані в ненадійних параметрах) — це ситуація, коли конфіденційна інформація, така як паролі, токени чи особисті дані, передається через параметри запитів або інші ненадійні механізми. Це становить загрозу, оскільки недостатній захист таких даних може призвести до їх витоку або компрометації.

BLUE TEAM

Приклад в Symfony
Приклад JWT

RED TEAM

Insecure Parameter Exploitation. Зловмисники можуть маніпулювати небезпечними параметрами, щоб отримати доступ до конфіденційної інформації або отримати підвищені права доступу.

Практичний приклад атаки (Python)

Цей скрипт використовує небезпечні параметри, такі як can_edit і is_admin, для отримання доступу до функцій, які повинні бути захищені.

Cross-Site Request Forgery (CSRF)

  1. Куки до сайту автоматично відправляються з кожним запитом.

  2. Зловмисник може змусити жертву відправити запити (включаючи POST) на якийсь сайт.

  3. Коли це відбувається, куки жертви (серед яких аутентифікаційні куки) відправляються на сервер.

BLUE TEAM

Використання CSRF-токенів. Вони зберігаються у сесіях користувачів та додаються у форми у вигляді прихованого поля. Коли користувач надсилає форму, токен перевіряється.

Якщо він не збігається з тим, що у сесії, користувач отримує помилку.

Приклад використання CSRF-токенів в Yii2

RED TEAM

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

Практичний приклад атаки (HTML)

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

Інші статті по темі
OWASP Top 10
Читати далі
OWASP Top 10 частина 2: Cryptographic Failures
Стаття розглядає основні види криптографічних вразливостей, їх вплив на безпеку систем, та дає практичні рекомендації для запобігання цих ризиків.
595
OWASP Top 10
Читати далі
OWASP Top 10 частина 3: Injection
н'єкції є однією з найпоширеніших вразливостей у веб-додатках, що дозволяють зловмисникам впроваджувати шкідливий код або дані.
562
OWASP Top 10
Читати далі
OWASP Top 10 частина 6: Vulnerable and Outdated Components
Використання старих версій бібліотек, відсутність регулярних оновлень та перевірки сторонніх компонентів, уразливі та застарілі компоненти є значною загрозою для безпеки систем.
481
OWASP Top 10
Читати далі
OWASP Top 10 частина 7: Identification and Authentication Failures
Помилки ідентифікації та автентифікації є критичними вразливостями, що можуть спричинити несанкціонований доступ до системи через використання слабких паролів, ненадійні механізми входу та брутфорс-атаки.
507
OWASP Top 10
Читати далі
OWASP Top 10 частина 8: Software and Data Integrity Failuress
Ви дізнаєтесь про основні проблеми, пов'язані з помилками цілісності програмного забезпечення та даних, зокрема про ненадійне зберігання даних, вразливості програмного забезпечення та загрози від ненадійних джерел.
494
OWASP Top 10
Читати далі
OWASP Top 10 частина 10: Server-Side Request Forgery
Розповідаемо про SSRF (помилки запитів з боку сервера), які дозволяють зловмисникам спонукати сервер робити небажані запити до внутрішніх або зовнішніх ресурсів.
617
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.