
Порушення контролю доступу – це ситуації, коли користувачі отримують доступ до ресурсів або функцій, для яких у них немає відповідних прав. Це може статися через кілька причин:
Опис: Коли система не перевіряє особу користувача перед наданням доступу до чутливих даних або функцій.
Приклад: Веб-додаток дозволяє користувачам переглядати інформацію про інші облікові записи без необхідності входу в систему. Наприклад, користувач може переглядати особисті дані інших без авторизації.
Опис: Після того, як користувач пройшов аутентифікацію, система не перевіряє, чи має він право доступу до конкретних ресурсів або функцій.
Приклад: Звичайний користувач може отримати доступ до адміністративної панелі або змінювати дані, які повинні бути доступні лише адміністраторам. Наприклад, звичайний користувач може видаляти пости інших користувачів.
Опис: Код 403 означає, що доступ до ресурсу заборонено, в той час як код 404 вказує, що ресурс не знайдено. Неправильне використання кодів статусу може розкрити інформацію про структуру додатка.
Приклад: Якщо при спробі доступу до адміністративного розділу веб-додатка система повертає 404, це може вказувати на існування такого розділу, але доступ до нього заблоковано.
Натомість, код 403 чітко сигналізує про заборону доступу.
Опис: Включення чутливих даних у URL або в параметри запиту, які можуть бути видимі або доступні для зловмисників.
Приклад: Передача ID користувача або токенів доступу в URL, який може бути збережений у журналах сервера або історії браузера. Наприклад, URL на зразок https://example.com/profile?user_id=1234 дозволяє змінити user_id і отримати доступ до іншого профілю.
Опис: Атаки, при яких зловмисник спонукає користувача, який вже аутентифіканий у веб-додатку, виконати небажану дію.
Приклад: Зловмисник може створити фальшиву веб-сторінку, що містить форму для зміни пароля на сайті, де користувач уже аутентифіканий. Якщо користувач відкриє цю сторінку, то запит на зміну пароля буде автоматично відправлений до справжнього сайту, змінюючи його пароль без його відома.
BLUE TEAM
Аутентифікація — це процес підтвердження особи користувача. Найбільш розповсюдженим прикладом є введення користувачем свого ідентифікатора, такого як електронна пошта, разом з паролем. Коли запит направляється до захищеної зони, брандмауер отримує можливість витягти з об’єкта Request особисті дані користувача. Далі система генерує токен, який включає менеджера аутентифікації. Цей менеджер перевіряє токен і, якщо надана інформація відповідає очікуванням, видає підтверджений токен. Після цього цей токен зберігається в спеціальному сховищі для подальшого використання.
RED TEAM
Brute force
Атака стає можливою, коли аутентифікація відсутня або недостатньо надійна, що дозволяє зловмисникам використовувати метод перебору для підбору паролів, перебираючи всі можливі варіанти, поки не знайдеться правильний. У контексті Symfony атака брутфорс полягає в спробах зламати захищені частини сайту або додатка, підбираючи правильні комбінації логінів і паролів. Такі атаки зазвичай спрямовані на стандартні механізми аутентифікації, які Symfony реалізує через Security Bundle.
Цей скрипт систематично перебирає різні паролі зі списку, поки не буде знайдено правильний. Атака виявляється ефективною у випадках, коли відсутнє обмеження на кількість спроб або не відбувається блокування акаунта після декількох невдалих спроб.
Застосування інструментів для брутфорсу: Інструменти на кшталт Hydra, Burp Suite або OWASP ZAP можуть автоматизувати цей процес, значно підвищуючи ефективність атаки.
BLUE TEAM
Авторизація — це процес перевірки прав доступу або модифікації ресурсів.
RED TEAM
IDOR – Insecure Direct Object References. Відсутність перевірки прав доступу може дозволити зловмисникам отримати доступ до ресурсів, просто змінивши ідентифікатори в URL.
Змінивши ідентифікатор у URL, зловмисник може отримати доступ до даних іншого користувача, якщо не проведена належна перевірка прав доступу.
Forbidden – Код статусу 403 Forbidden вказує, що сервер зрозумів запит, але відмовляється його виконати через відсутність необхідних дозволів.
Not Found – Код статусу 404 Not Found вказує, що запитуваний ресурс не знайдено на сервері. Це може бути результатом невірного URL або відсутності файлу на сервері.
BLUE TEAM
Якщо ви не бажаєте, щоб користувач знав про наявність певного ресурсу, варто використовувати відповідь із кодом 404 (Not Found). Якщо ж вам потрібно чітко показати, що ресурс існує, але доступ до нього обмежений, краще скористатися кодом 403 (Forbidden).
RED TEAM
Resource Enumeration. Зловмисники можуть скористатися різницею між відповідями 403 та 404, щоб визначити, чи існує ресурс, навіть якщо вони не мають доступу до нього.
Цей скрипт перевіряє наявність ресурсів, аналізуючи відповіді сервера. Якщо ресурс існує, але доступ заборонений, повертається код 403, якщо ж його не існує — код 404.
Sensitive Data in Insecure Parameters (Чутливі дані в ненадійних параметрах) — це ситуація, коли конфіденційна інформація, така як паролі, токени чи особисті дані, передається через параметри запитів або інші ненадійні механізми. Це становить загрозу, оскільки недостатній захист таких даних може призвести до їх витоку або компрометації.
BLUE TEAM
RED TEAM
Insecure Parameter Exploitation. Зловмисники можуть маніпулювати небезпечними параметрами, щоб отримати доступ до конфіденційної інформації або отримати підвищені права доступу.
Цей скрипт використовує небезпечні параметри, такі як can_edit і is_admin, для отримання доступу до функцій, які повинні бути захищені.
Куки до сайту автоматично відправляються з кожним запитом.
Зловмисник може змусити жертву відправити запити (включаючи POST) на якийсь сайт.
Коли це відбувається, куки жертви (серед яких аутентифікаційні куки) відправляються на сервер.
BLUE TEAM
Використання CSRF-токенів. Вони зберігаються у сесіях користувачів та додаються у форми у вигляді прихованого поля. Коли користувач надсилає форму, токен перевіряється.
Якщо він не збігається з тим, що у сесії, користувач отримує помилку.
RED TEAM
Використання CSRF для зміни даних. Зловмисники можуть змусити жертву відправити запит на сервер, використовуючи їхні аутентифікаційні дані, щоб виконати небажані дії.
Цей код змушує жертву перевести кошти на рахунок зловмисника, використовуючи їхню сесію та куки, навіть не підозрюючи про це.