Заробіть від $100 до $500 після пенетесту OAuth

pic

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

Розуміння OAuth: Короткий вступ

OAuth головним чином використовується для авторизації та складається з таких основних ролей:

  1. Власник ресурсу: Користувач, який володіє ресурсом (наприклад, акаунт у соціальній мережі).
  2. Клієнт: Додаток, що запитує доступ до ресурсу (наприклад, сторонній додаток).
  3. Ресурсний сервер: Сервер, на якому знаходиться ресурс (наприклад, API).
  4. Сервер авторизації: Сервер, що керує випуском і перевіркою токенів.

OAuth процес включає ці основні компоненти:

  • Authorization Code Grant (найпоширеніший для веб-додатків)
  • Implicit Grant (використовується у SPA; зазвичай не рекомендується через проблеми безпеки)
  • Client Credentials Grant (використовується для автентифікації між машинами)

Чому тестувати OAuth?

Неправильне налаштування або використання OAuth може призвести до:

  • Утечі токенів
  • Підвищення привілеїв
  • Атаки фіксації сесій
  • Обхід авторизації

Пенетест OAuth: Ключові точки атаки

Пенетест OAuth фокусується на виявленні вразливостей, таких як:

  1. Недостатня перевірка токенів: Слабкі механізми перевірки можуть дозволити зловмисникам використовувати викрадені токени.
  2. Маніпуляція з URI перенаправлення: Погана перевірка URI перенаправлення може призвести до атак відкритого перенаправлення.
  3. Cross-Site Request Forgery (CSRF): Відсутність механізмів захисту від CSRF може скомпрометувати авторизацію.
  4. Повторне використання або атаки повтору токенів: Токени доступу або поновлення можуть бути використані зловмисниками, якщо вони не належним чином захищені.
  5. Неправильні обмеження області: Занадто широкі області можуть дозволити несанкціоновані дії.

Крок за кроком: Пенетест OAuth

1. Розвідка та збирання інформації

  • Визначте кінцеві точки, пов'язані з OAuth-потоками, такі як /authorize і /token.
  • Перегляньте документацію API та специфікації OpenAPI (Swagger) для областей OAuth та дозволів.

Інструменти:

  • Burp Suite: Використовуйте проксі для захоплення запитів і відповідей, особливо під час OAuth-потоку.
  • Postman: Допомагає у вивченні API-запитів та поведінки токенів.
  • Nmap та Nikto: Для розвідки асоційованих серверів.

2. Аналіз перевірки URI перенаправлення

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

Як тестувати:

  • Спробуйте вказати різні домени або піддомени в параметрі redirect_uri.
  • Спробуйте включити спеціальні символи, такі як .., %2F або послідовності подорожі по шляхах.
  • Перевірте, чи сервер відхиляє незареєстровані URI.

Приклад: Припустимо, зареєстрований redirect_urihttps://example.com/callback. Спробуйте ввести:

https://evil.com/callback  
https://example.com/evil

Інструменти:

  • Повторювач Burp Suite: Змініть значення redirect_uri і спостерігайте за поведінкою.
  • OWASP ZAP: Скануйте URI перенаправлення на наявність потенційних вразливостей.

3. Перевірка токенів і безпека

Токени є основним елементом OAuth. Неправильне їхнє оброблення може призвести до серйозних проблем з безпекою.

Як тестувати:

  • Перевірте термін дії токенів: Тестуйте, чи токени згорають відповідно до очікувань.

Спробуйте повторно використовувати токени після їх закінчення терміну дії.
- Атаки повтору (Replay Attacks): Захопіть токен доступу та спробуйте використати його в іншій сесії, щоб перевірити, чи буде він прийнятий.
- Обмеження області (Scope Restrictions): Перевірте, чи може токен з мінімальними дозволами отримати доступ до ресурсів з високими привілеями.
- Маніпуляція з JWT (JWT Manipulation): Для токенів на основі JWT:
- Декодуйте токен за допомогою інструментів, таких як jwt.io.
- Перевірте на наявність слабких алгоритмів (наприклад, none) або відсутність перевірки підпису.

Приклад: Декодуйте токен JWT:

echo "" | base64 -d

Інструменти:

  • JWT Toolkit: Аналізуйте та маніпулюйте JSON Web токенами.
  • Postman: Виконуйте API запити з користувацькими токенами, щоб перевірити підвищення привілеїв.

4. Захист від CSRF

OAuth повинен використовувати механізми захисту від CSRF, особливо під час обміну кодом авторизації.

Як тестувати:

  • Перевірте відсутність параметра state в кінцевій точці /authorize. Параметр state повинен бути унікальним і пов'язаний із сесією користувача.
  • Спробуйте підробити запити без дійсних анти-CSRF токенів.

Інструменти:

  • Генератор PoC CSRF в Burp Suite.
  • OWASP ZAP.

5. Неправильні налаштування областей і привілеїв

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

Як тестувати:

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

Приклад: Якщо токен виданий для read_profile, спробуйте отримати доступ до запису або адміністративних кінцевих точок:

curl -H "Authorization: Bearer " https://api.example.com/admin

6. Фіксація сесій і проблеми з виведенням

Токени сесій, прив'язані до OAuth, можуть бути вразливими до атак фіксації або неправильного інвалідного виведення.

Як тестувати:

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

Інструменти:

  • Intruder в Burp Suite: Повторно використовуйте викрадені токени сесій.
  • TokenReplay: Тестуйте сценарії повторного використання токенів.

Приклад: Робочий процес пенетеста OAuth

Розглянемо реальний приклад пенетеста:

  1. Розвідка: Визначте кінцеві точки OAuth (/authorize, /token, /userinfo).
  2. Зловживання URI перенаправлення:
  • Зареєстрований URI: https://myapp.com/callback.
  • Тест: Надішліть https://malicious.com/callback.
  • Результат: Якщо сервер приймає цей URI, то система вразлива.
  1. Атака повтору токенів:
  • Захопіть дійсний токен.
  • Спробуйте використати його на іншій кінцевій точці або акаунті.
  • Якщо це вдасться, система не має належної перевірки.
  1. Маніпуляція областями:
  • Токен видано для read_profile.
  • Спробуйте: Доступ до https://api.example.com/admin.
  • Результат: Невідповідний доступ підтверджує неправильне застосування обмежень області.

Кращі інструменти для пенетеста OAuth

  • Burp Suite: Комплексне перехоплення та маніпулювання.
  • OWASP ZAP: Автоматичне сканування на наявність вразливостей, пов'язаних з OAuth.
  • Postman: Дослідження поведінки API та обробки токенів.
  • JWT.io: Декодування та аналіз JWT токенів.
  • Nmap: Початкова розвідка.

Виправлення та найкращі практики

Якщо під час пенетеста були виявлені вразливості:

  1. Забезпечте перевірку URI перенаправлення:
  • Дозволяйте тільки URI, що потрапляють до білого списку.
  1. Використовуйте безпечні токени:
  • Впроваджуйте короткоживучі токени з механізмами поновлення.
  • Підписуйте та перевіряйте токени безпечно.
  1. Перевіряйте області:
  • Обмежуйте доступ на основі принципу найменших привілеїв.
  1. Впроваджуйте захист від CSRF:
  • Завжди використовуйте унікальний параметр state в OAuth процесі.

Якщо вам сподобався цей контент, поставте «клацання» та поділіться ним

Слідкуйте за мною на : https://www.linkedin.com/in/rishav-anand-224bb5229/

Перекладено з: Earn $100–500 after Pentesting OAuth

Leave a Reply

Your email address will not be published. Required fields are marked *