Примусовий перегляд
URL, на який ніде немає посилань, — не перевірка дозволу.
Що таке Примусовий перегляд?
Маршрут існує, жодне посилання в інтерфейсі на нього не веде, і він відповідає кожному, хто вгадає шлях. Секретність назви папки — не контроль доступу. Не маючи облікового запису, ви запускаєте на кадровій платформі перебір шляхів зі списку слів і знаходите внутрішній маршрут експорту, що відповідає «200 OK» і віддає весь довідник працівників без жодного cookie чи API-ключа. Потім ви додаєте бар'єр, якого йому бракувало, — перевірку сесії й ролі до читання жодного рядка, — і повторюєте запит, щоб отримати 403.
Що ви дізнаєтесь у Примусовий перегляд
- Відрізняйте примусовий перегляд від підвищення привілеїв: у першому випадку сесії немає взагалі, у другому сесія є, але не та
- Усвідомлюйте, що сегмент шляху на кшталт <code>/internal/</code> або <code>/admin/</code> — це умовність, а не контроль: бар'єр — сам обробник
- Усвідомлюйте, що інструменти виявлення вмісту (ffuf, dirbuster, gobuster) за лічені хвилини знецінюють секретність шляху
- Застосовуйте перевірку наявності сесії та ролі на початку кожного обробника, який читає чи змінює чутливі дані
- Перевіряйте кодову базу на осиротілі маршрути, які потрапили в продакшн заради одного інструмента, згодом були замінені й так і лишилися невидаленими
Примусовий перегляд — Кроки навчання
-
Оцініть ціль
Боб — зловмисник, що діє заради грошей. Він шукає компанії, які залишили щось відкритим в інтернеті, а тоді продає здобуте або використовує його, щоб дістатися до їхніх грошей. Сьогодні його ціль — Kelvara, кадрова платформа, на якій компанії ведуть зарплату й кадрові справи. Він починає звідти, звідки почав би будь-хто, — з публічного сайту: оцінює компанію, перш ніж шукати, як до неї проникнути.
-
Знайдіть усі шляхи API
На публічному сайті немає нічого незвичного: вхід, огляд продукту, сторінка підтримки. Але застосунок відповідає на значно більше шляхів, ніж ті, на які ведуть посилання. Усе, що розробник залишив доступним, залишається відкритим для кожного, хто почне шукати, тож Боб складає перелік усіх шляхів, на які API порталу справді відповідає.
-
Відкрийте маршрут експорту
Єдиний шлях, який відповів, не вимагаючи входу, — така сама адреса, як і будь-яка інша. Для цього Бобу не потрібен жоден інструмент: він вводить знайдений шлях прямо в браузері й натискає Enter, як для будь-якої сторінки.
-
Весь довідник, без входу
Відповідь — не сторінка з помилкою. Браузер показує її просто на сторінці: сервер віддав весь довідник працівників Kelvara, тисячі записів, на запит, у якому не було жодних ознак входу.
-
Перевірка знань
-
Надходить сповіщення DLP
Ви відповідаєте за кадровий портал Kelvara. Уночі система запобігання втраті даних (DLP), що стежить за вихідним трафіком, спрацювала на відповідь, яка винесла за межі мережі повний довідник працівників разом із SSN і зарплатами. Центр моніторингу безпеки надіслав вам подробиці листом.
-
Відкрийте обробник експорту
Змінити треба обробник, який формує експорт працівників. Відкрийте його й подивіться, що він робить між надходженням запиту та відправленням даних.
-
Знайдіть відсутній бар'єр
Обробник читає кожен запис працівника й повертає його. Прочитайте його згори вниз і пошукайте перевірку доступу. Між вхідним запитом і запитом до бази даних нічого немає.
-
Перевірка знань
-
Додайте перевірку доступу
Поставте справжній бар'єр на початку обробника. Він з'ясовує сесію того, хто звертається, перевіряє, що в нього є роль hr_admin, і відхиляє все інше ще до виконання запиту до бази даних. Шлях лишається тим самим; тепер дані захищає перевірка, а не назва папки.
Охоплення стандартів безпеки
OWASP Top 10
- A01:2025 Broken Access Control
- A01:2021 Broken Access Control
CWE
- CWE-425 Direct Request ('Forced Browsing')
- CWE-862 Missing Authorization
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security