hacktricks/src/pentesting-web/account-takeover.md

130 lines
6.1 KiB
Markdown

# Przejęcie Konta
{{#include ../banners/hacktricks-training.md}}
## **Problem z Autoryzacją**
Należy spróbować zmienić adres e-mail konta, a proces potwierdzenia **musi być zbadany**. Jeśli okaże się **słaby**, adres e-mail powinien zostać zmieniony na adres zamierzonej ofiary, a następnie potwierdzony.
## **Problem z Normalizacją Unicode**
1. Konto zamierzonej ofiary `victim@gmail.com`
2. Należy utworzyć konto używając Unicode\
na przykład: `vićtim@gmail.com`
Jak wyjaśniono w [**tej prezentacji**](https://www.youtube.com/watch?v=CiIyaZ3x49c), poprzedni atak można również przeprowadzić, wykorzystując zewnętrznych dostawców tożsamości:
- Utwórz konto u zewnętrznego dostawcy tożsamości z podobnym adresem e-mail do ofiary, używając jakiegoś znaku unicode (`vićtim@company.com`).
- Zewnętrzny dostawca nie powinien weryfikować adresu e-mail.
- Jeśli dostawca tożsamości weryfikuje adres e-mail, być może możesz zaatakować część domeny, na przykład: `victim@ćompany.com` i zarejestrować tę domenę, mając nadzieję, że dostawca tożsamości wygeneruje wersję ascii domeny, podczas gdy platforma ofiary znormalizuje nazwę domeny.
- Zaloguj się za pośrednictwem tego dostawcy tożsamości na platformie ofiary, która powinna znormalizować znak unicode i umożliwić dostęp do konta ofiary.
Aby uzyskać więcej informacji, zapoznaj się z dokumentem na temat Normalizacji Unicode:
{{#ref}}
unicode-injection/unicode-normalization.md
{{#endref}}
## **Ponowne Wykorzystanie Tokena Resetowania**
Jeśli system docelowy pozwala na **ponowne wykorzystanie linku resetującego**, należy podjąć wysiłki, aby **znaleźć więcej linków resetujących** przy użyciu narzędzi takich jak `gau`, `wayback` lub `scan.io`.
## **Przed Przejęciem Konta**
1. Adres e-mail ofiary powinien być użyty do rejestracji na platformie, a hasło powinno być ustawione (należy spróbować je potwierdzić, chociaż brak dostępu do e-maili ofiary może to uniemożliwić).
2. Należy czekać, aż ofiara zarejestruje się za pomocą OAuth i potwierdzi konto.
3. Mamy nadzieję, że standardowa rejestracja zostanie potwierdzona, co umożliwi dostęp do konta ofiary.
## **Błąd Konfiguracji CORS do Przejęcia Konta**
Jeśli strona zawiera **błędy konfiguracji CORS**, możesz być w stanie **ukraść wrażliwe informacje** od użytkownika, aby **przejąć jego konto** lub zmusić go do zmiany informacji uwierzytelniających w tym celu:
{{#ref}}
cors-bypass.md
{{#endref}}
## **CSRF do Przejęcia Konta**
Jeśli strona jest podatna na CSRF, możesz być w stanie zmusić **użytkownika do zmodyfikowania swojego hasła**, e-maila lub uwierzytelnienia, abyś mógł uzyskać do niego dostęp:
{{#ref}}
csrf-cross-site-request-forgery.md
{{#endref}}
## **XSS do Przejęcia Konta**
Jeśli znajdziesz XSS w aplikacji, możesz być w stanie ukraść ciasteczka, lokalne dane lub informacje ze strony internetowej, które mogą pozwolić ci przejąć konto:
{{#ref}}
xss-cross-site-scripting/
{{#endref}}
## **Ta Sama Pochodna + Ciasteczka**
Jeśli znajdziesz ograniczone XSS lub przejęcie subdomeny, możesz manipulować ciasteczkami (na przykład je ustalając), aby spróbować skompromitować konto ofiary:
{{#ref}}
hacking-with-cookies/
{{#endref}}
## **Atakowanie Mechanizmu Resetowania Hasła**
{{#ref}}
reset-password.md
{{#endref}}
## **Manipulacja Odpowiedzią**
Jeśli odpowiedź uwierzytelniająca może być **zredukowana do prostego boolean, spróbuj zmienić false na true** i zobacz, czy uzyskasz dostęp.
## OAuth do Przejęcia Konta
{{#ref}}
oauth-to-account-takeover.md
{{#endref}}
## Wstrzyknięcie Nagłówka Host
1. Nagłówek Host jest modyfikowany po zainicjowaniu żądania resetowania hasła.
2. Nagłówek proxy `X-Forwarded-For` jest zmieniany na `attacker.com`.
3. Nagłówki Host, Referrer i Origin są jednocześnie zmieniane na `attacker.com`.
4. Po zainicjowaniu resetowania hasła i wybraniu opcji ponownego wysłania maila, stosowane są wszystkie trzy powyższe metody.
## Manipulacja Odpowiedzią
1. **Manipulacja Kodem**: Kod statusu jest zmieniany na `200 OK`.
2. **Manipulacja Kodem i Treścią**:
- Kod statusu jest zmieniany na `200 OK`.
- Treść odpowiedzi jest modyfikowana na `{"success":true}` lub pusty obiekt `{}`.
Te techniki manipulacji są skuteczne w scenariuszach, w których JSON jest wykorzystywany do przesyłania i odbierania danych.
## Zmiana e-maila bieżącej sesji
Z [tego raportu](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea):
- Napastnik prosi o zmianę swojego e-maila na nowy.
- Napastnik otrzymuje link do potwierdzenia zmiany e-maila.
- Napastnik wysyła ofierze link, aby kliknęła w niego.
- E-mail ofiary zostaje zmieniony na ten wskazany przez napastnika.
- Napastnik może odzyskać hasło i przejąć konto.
To również miało miejsce w [**tym raporcie**](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea).
### Ominięcie weryfikacji e-maila w celu przejęcia konta
- Napastnik loguje się jako attacker@test.com i weryfikuje e-mail podczas rejestracji.
- Napastnik zmienia zweryfikowany e-mail na victim@test.com (brak dodatkowej weryfikacji przy zmianie e-maila).
- Teraz strona pozwala victim@test.com na logowanie, a my ominięliśmy weryfikację e-maila użytkownika ofiary.
### Stare Ciasteczka
Jak wyjaśniono [**w tym poście**](https://medium.com/@niraj1mahajan/uncovering-the-hidden-vulnerability-how-i-found-an-authentication-bypass-on-shopifys-exchange-cc2729ea31a9), możliwe było zalogowanie się na konto, zapisanie ciasteczek jako uwierzytelniony użytkownik, wylogowanie się, a następnie ponowne zalogowanie.\
Przy nowym logowaniu, chociaż mogą być generowane różne ciasteczka, stare zaczęły działać ponownie.
## Referencje
- [https://infosecwriteups.com/firing-8-account-takeover-methods-77e892099050](https://infosecwriteups.com/firing-8-account-takeover-methods-77e892099050)
- [https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea)
{{#include ../banners/hacktricks-training.md}}