Cheat Sheet how to test Forgot password

Як правильно тестувати функціонал “Forgot Password”? 🔐 1️⃣ Посилання на скидання пароля: Переконайтеся, що воно має обмежений термін дії та не може використовуватися багаторазово. 2️⃣ Витік токена: Перевірте, чи токен для скидання пароля не передається в заголовку Referer або у відповіді сервера. 3️⃣ Маніпуляція параметрами: Перевірте можливість підміни електронної адреси в запиті на скидання пароля. 4️⃣ Верифікація: Переконайтеся, що підтвердження змін надсилається лише на електронну пошту або номер телефону власника акаунта. 5️⃣ Обмеження запитів: Функціонал повинен мати обмеження кількості запитів для запобігання спаму та атак на акаунти. 6️⃣ Перевірка існування акаунта: Переконайтеся, що система не видає інформацію про наявність або відсутність користувача через різні повідомлення. 7️⃣ Безпека токена: Токен має ставати недійсним після успішної зміни пароля або після зміни email-адреси. Пам’ятайте, що навіть невеликі вразливості у функції “Forgot Password” можуть призвести до захоплення акаунта атакувальником! 🔓

TOOLS FOR FIND VULNERABILITY

Логин Свят

1/30/20251 min read

CHEAT SHEET Forgot password

Як правильно тестувати функціонал “Forgot Password”? 🔐

1️⃣ Посилання на скидання пароля: Переконайтеся, що воно має обмежений термін дії та не може використовуватися багаторазово.

2️⃣ Витік токена: Перевірте, чи токен для скидання пароля не передається в заголовку Referer або у відповіді сервера.

3️⃣ Маніпуляція параметрами: Перевірте можливість підміни електронної адреси в запиті на скидання пароля.

4️⃣ Верифікація: Переконайтеся, що підтвердження змін надсилається лише на електронну пошту або номер телефону власника акаунта.

5️⃣ Обмеження запитів: Функціонал повинен мати обмеження кількості запитів для запобігання спаму та атак на акаунти.

6️⃣ Перевірка існування акаунта: Переконайтеся, що система не видає інформацію про наявність або відсутність користувача через різні повідомлення.

7️⃣ Безпека токена: Токен має ставати недійсним після успішної зміни пароля або після зміни email-адреси.

Пам’ятайте, що навіть невеликі вразливості у функції “Forgot Password” можуть призвести до захоплення акаунта атакувальником! 🔓

1) Посилання для скидання пароля не має терміну дії

Коли користувач запитує зміну пароля, він отримує посилання для скидання пароля, що є нормальною поведінкою. Однак це посилання повинно мати термін дії. Якщо воно не має обмеженого терміну дії і його можна використовувати багаторазово, це можна розглядати як вразливість.

Перший сценарій:

1. Перейдіть на https://site.com/forgotten_password та надішліть посилання для скидання пароля на свою електронну пошту.

2. Відкрийте свою електронну пошту, знайдіть токен скидання пароля, наприклад:

https://site.com/users/new_password?reset_token=your-reset-token

Натисніть на це посилання для зміни пароля.

3. Ви можете використовувати це посилання багаторазово для скидання пароля.

Вплив:

Посилання для скидання пароля не стає недійсним після зміни пароля.

Другий сценарій:

1. Перейдіть на https://site.com/forgot та запросіть посилання для скидання пароля.

2. Не використовуйте його, просто залиште в електронній пошті.

3. Через деякий час повторіть крок 1 (запросіть нове посилання).

4. Використайте посилання, запитане на кроці 3.

5. Після зміни пароля спробуйте скористатися посиланням, яке ви отримали у кроці 1.

6. Ви побачите, чи ще старе посилання все ще дійсне, навіть після зміни пароля.

Третій сценарій:

1. Створіть обліковий запис або використайте існуючий.

2. Підтвердьте свою електронну пошту або телефон.

3. Вийдіть із облікового запису та запросіть код скидання пароля.

4. Не використовуйте цей код.

5. У новому браузері увійдіть у свій обліковий запис.

6. Перейдіть у налаштування та змініть пароль.

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

8. Використайте цей код для зміни пароля.

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

Вплив:

Токен скидання пароля залишається дійсним після зміни пароля.

Четвертий сценарій:

1. Надішліть посилання для скидання пароля на свою електронну пошту.

2. Не відкривайте його, просто скопіюйте та збережіть у редакторі.

3. Увійдіть у свій акаунт.

4. Перейдіть у налаштування акаунта.

5. Змініть свою електронну пошту та підтвердьте її.

6. Після цього відкрийте збережене посилання для скидання пароля.

7. Використайте його для зміни пароля.

Вплив:

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

П’ятий сценарій:

1. Атакувальник заходить на https://site.com/forgetPassword.php та вводить свою електронну адресу.

2. Отримує посилання на скидання пароля та використовує proxy для моніторингу запиту (Burp Suite).

3. Змінює електронну адресу у запиті, підставляючи email жертви.

4. Після відправки зміненого запиту пароль жертви змінюється на пароль, обраний атакувальником.

Вплив:

Жертві не потрібно нічого робити – атакувальник може перехопити та змінити пароль.

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

1. Перейдіть на https://site.com/lost-password.

2. Введіть свою електронну пошту та натисніть Reset Password.

3. Перейдіть до електронної пошти та відкрийте посилання для скидання пароля.

4. На сторінці скидання пароля натисніть на будь-яке посилання на соцмережі (Facebook, Twitter).

5. Використовуючи Burp Suite, перевірте Referer Header.

Вплив:

Якщо токен передається у Referer Header, адміністратори соцмережі можуть змінити пароль жертви.

3. Витік токена скидання пароля через відповідь сервера

1. Відправте запит на скидання пароля.

2. Перехопіть відповідь сервера.

3. Якщо у відповіді міститься resetPasswordLink, це витік чутливих даних.

Вплив:

Атакувальник може отримати доступ до пароля жертви без взаємодії з ним.

4. Маніпуляція параметром електронної пошти

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

email=victimmail@site.com&email=hackermail@site.com

Або використовувати інші методи:

email=victimmail@site.com,hackermail@site.com

email=victimmail@site.com|hackermail@site.com

5. Підміна заголовка Host

Якщо сервер вразливий до підміни заголовка Host, атакувальник може переспрямувати посилання для скидання пароля на свій сервер.

Host: attackersite.com

X-Forwarded-Host: attackersite.com

6. Відсутність обмеження частоти запитів на скидання пароля

Якщо сервер не обмежує кількість запитів на скидання пароля, атакувальник може надіслати багато запитів та отримати доступ до акаунта жертви.

7. Визначення існування користувача через сторінку скидання пароля

Якщо при введенні неіснуючого email сервер повертає помилку, атакувальник може дізнатися, чи існує обліковий запис.