Підробка запитів на боці сервера
Змусьте сервер завантажити те, до чого самі не дістанетеся.
Що таке Підробка запитів на боці сервера?
Застосунок завантажує URL, указаний користувачем, і ніхто не перевіряє, куди той веде. Запит виходить зсередини вашої власної мережі, тож зловмисник успадковує становище сервера. Ви спрямуєте функцію попереднього перегляду посилань на сервіс метаданих хмари за його фіксованою локальною адресою каналу, прочитаєте облікові дані ролі, прикріпленої до інстанса, і ними виведете перелік вмісту сховища, де лежать рахунки клієнтів. Далі ви з'ясуєте адресу хоста й відхилите приватні адреси, loopback-адреси та локальні адреси каналу, перевіряючи знову після перенаправлень, а додатковим захистом стануть метадані з обов'язковим токеном (IMDSv2) і ролі з найменшими привілеями.
Що ви дізнаєтесь у Підробка запитів на боці сервера
- Поясніть, що таке підробка запитів на боці сервера: коли застосунок завантажує URL, указаний користувачем, зловмисник може змусити сервер звернутися до систем, до яких сам не має прямого доступу
- Розпізнавайте сервіс метаданих хмари за адресою 169.254.169.254 як ендпоінт, що видає облікові дані: SSRF може до нього дістатися, хоча зовнішній зловмисник — ні
- Простежуйте, як нешкідлива функція попереднього перегляду посилань перетворюється на повний ланцюжок викрадення облікових даних і даних, якщо адресу завантаження ніколи не перевіряють
- Відрізняйте перевірку адреси призначення (з'ясувати хост, відхилити приватні адреси й локальні адреси каналу, перевірити знову після перенаправлень) від ненадійних списків заборонених рядків і пояснюйте, чому надійна лише перша
- Поєднуйте виправлення коду з ешелонованим захистом: обов'язковим токеном для метаданих інстанса (IMDSv2), ролями інстансів з найменшими привілеями та сповіщеннями про звернення воркера завантаження до чутливого сховища
Підробка запитів на боці сервера — Кроки навчання
-
Функція попереднього перегляду
Corveil дозволяє будь-кому вставити посилання й отримати охайну картку попереднього перегляду: заголовок і зображення сторінки, готові до вставлення в повідомлення. Перегляд будується не в браузері: посилання завантажують власні сервери Corveil. Перш ніж братися за функцію, Боб відкриває її й дивиться, як вона працює.
-
Звідки надходить запит
Боба ця сторінка цікавить через одну деталь.
-
Скористайтеся функцією
Подивіться, як функція працює штатно. Вставте адресу звичайної новинної статті й створіть попередній перегляд, щоб сторінка надіслала справжній запит, який Боб зможе вивчити.
-
Знайдіть ендпоінт
Запит надіслано, і браузер його записав. Відкрийте вкладку «Network» («Мережа») і подивіться, куди сторінка насправді його надіслала.
-
Спрямуйте запит усередину
Боб відтворює цей запит в API Tester, щоб спрямувати url куди завгодно. Сервер завантажить будь-яку адресу, яку йому дадуть, навіть ту, до якої сам Боб ніколи б не дістався. У кожного хмарного сервера є сервіс метаданих за фіксованою внутрішньою адресою, який видає облікові дані ролі, прив'язаної до цього сервера. Він призначений для власних потреб сервера. В AWS, поки ще дозволено старіший IMDSv1 без токенів (як на воркері Corveil), він відповідає на звичайний GET, не перевіряючи, хто питає. Бобові потрібен лише воркер попереднього перегляду Corveil, який звернеться до сервісу замість Боба.
-
Дістаньтеся до сервісу метаданих
Відтворіть запит на попередній перегляд в API Tester, але спрямуйте url не на новинну статтю, а на шлях до облікових даних у сервісі метаданих. Воркер Corveil завантажує цю адресу зсередини мережі й повертає все, що отримає.
-
Облікові дані в руках
Відповідь — не попередній перегляд. Це набір чинних облікових даних для хмарної ролі воркера попереднього перегляду.
-
Підпишіть запит викраденим ключем
Внутрішнє сховище Corveil довіряє підписаним запитам. Боб підписує запит, використовуючи AccessKeyId , який щойно дістав із сервісу метаданих, і переглядає вміст бакета, де зберігаються рахунки на оплату клієнтів, — місця, куди зовнішній користувач зазвичай потрапити не може.
-
Дані витекли
Імена, суми й ідентифікатори рахунків: понад сорок тисяч записів про клієнтів. До них добралися через функцію, створену для попереднього перегляду посилання.
-
Перевірка знань
Охоплення стандартів безпеки
OWASP Top 10
- A01:2025 Broken Access Control
- A10:2021 Server-Side Request Forgery (SSRF)
CWE
- CWE-918 Server-Side Request Forgery (SSRF)
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