Pentest & Bug Bounty
  • 🥷Pentest et Bug Bounty
    • 👾Pentest Methodology
    • 💸Bug Bounty Methodology
      • 📓Ecrire un bon rapport
      • ⚖️Aspect Juridique (FR)
  • 👣OSINT / Recon
    • 🧦Sock Puppet
    • 🧠Mindmaps
    • 🏢Entreprise
    • 👀Leaks
    • 👊Manuel / Dorks
      • Google dorks
      • Github dorks
      • Twitter Dorks
      • Shodan Dorks
    • 👥Réseaux sociaux (SOCMINT)
      • 🕵️Telegram OSINT
      • 👻Snapchat OSINT
      • 🤵‍♂️Linkedin OSINT
      • 🗣️Facebook OSINT
      • 🎼Tik tok OSINT
      • 📷Instagram OSINT
      • 🐦Twitter OSINT
      • 🔊Discord OSINT
    • 🖇️Domaines et Sous-domaines
    • 🚪Scan de ports / web
    • ✉️Emails
    • 🔗Réseau
    • 📷Screenshots
    • 📹Live camera
    • 🧔Reconnaissance faciale / images
    • 🌆Images
    • 🗺️Maps
    • 👁️Active Directory
    • ☁️Cloud
    • Autre
  • 🌐Pentest Web
    • ✊Brute force / Fuzzing
    • 💉Injections
      • 🍪XSS
        • PDF injection
      • 📄HTMLi
      • 📃XXE
      • 7️⃣SSTI
      • 🔢SQLi
        • 👫UNION based
        • ⏳Time based
        • 🥽Boolean based / Error Based
        • 📤Out-Of-Band
      • ↩️CRLF
      • 🐚OS injection
      • ☕Log4Shell
      • 🥠CSV
      • 🍻ESI
      • 😎XSLT
      • 💌Injections dans emails
      • 🔀ELi
        • OGNLi
    • ↪️Open redirect
    • 📁Path Traversal / LFI / RFI
    • 🔓Bypass
      • 〰️WAF / Filter bypass
      • 2️2FA
    • ☠️Charges utiles
    • 📚CMS (Content Management System)
      • WordPress
      • Joomla!
      • Magento
      • Drupal
    • 🎭SOP bypass
      • CORS
      • postMessage()
      • JSONP
    • 🖱️Clickjacking
    • ⚙️Insecure deserialization
    • ☣️Web Cache Poisoning / Deception
    • 🤝HTTP Smuggling
    • 👋OAuth
    • ⛔SAML
    • 🗝️JSON Web Token
    • 🎣CSRF
      • 🚀Cross-site WebSocket Hijacking (CSWSH)
    • 🎯IDOR
    • 🕹️SSRF
      • Cloud SSRF
      • Protocol Smuggling
    • ⚙️APIs
      • 🍽️REST
      • 📶GraphQL
    • ❓Mot de passe oublié
    • 🛒Fonctions d'achat et de facturation
    • 👽Broken authentication / register
    • 🏁Panneaux d'administration
    • ⏬Upload features
    • 🔗Broken Link Hijacking
    • 🎮Prise de contrôle de sous-domaine
    • 🛂Prise de contrôle de DNS
    • ☝️One liners
    • 🚧Misconfigurations
    • 🗿Analyse statique
      • PHP
      • Ruby On Rails
      • Perl
      • JAVA
      • Javascript
      • Python
      • Golang
      • .NET
    • 🪣AWS S3
    • 🤖Captcha
    • 🪞Race conditions
    • ☄️.git exposé
    • 💭Business logic
    • 🥡Prototype pollution
    • 💣Dependency confusion
    • 🛑DoS
      • 🤯ReDoS
      • 👏Hash flooding
      • 🧨Cookie bomb
    • Autre
      • Flask
      • Symphony
      • Spring Boot
      • Django
      • Jenkins
  • 🌩️Pentest Cloud
    • IaC (Infrastructure as Code)
      • Terraform
      • Helm
      • Kustomize
    • AWS
      • Enumeration
    • Azure
      • Entra ID
      • Azure Resource Manager (ARM)
        • Enumeration
    • GCP
      • GCP IAM
      • Authentification
      • Enumeration
    • Kubernetes
  • 🕸️Pentest Réseau
    • 🪡Protocoles réseau
    • 📡Wifi
    • 🔋BLE
    • 📍VPN
  • 🗂️Pentest AD
    • 👺GPP
    • ➡️Mouvements latéraux
      • 🔪Pass The Hash
      • 🗡️Over Pass The Hash
    • 📜ADCS
  • 📱Pentest Mobile
    • 🤖Android
      • 👾Méthodologie
      • 🌳Setup environnement
      • 🍇Collecte d'informations
      • 🔠Enumeration des données locales
      • 🔙Reverse engineering
        • 🪢Dé-obfuscation
      • ⛰️Analyse statique (Android)
      • 🐞Debug
      • 🎰Stockage de données non sécurisé
        • 📰Logs
        • 🤝Shared Preferences
        • 🔤Strings
        • 🗄️SQLite DB
        • 🗃️Realm DB
        • 🧠Mémoire
        • 📍Copy/Paste buffer caching
        • ⌨️Keyboard press caching
        • 🔙Backup
        • Carte SD
      • 🌩️Firebase/Appspot misconfig
      • 🔗Deeplinks vulns
        • Interception de contenu
        • WebView hijacking (via deeplink)
        • Invalid Digital assets links
      • 🖼️WebView vulns
        • WebView Hijacking
        • Exfiltration de données
        • RXSS
        • Vol de token
      • Guides outils
        • ⛏️Outil Drozer
          • Injections SQL (Android)
          • Path traversal (Android)
        • 🔬Outil Objection
        • 🪝Outil Frida
        • Outil Medusa / Mango
      • Bypass
        • 📲Contournement de détection d'emulateur
          • 📂Fichiers d'emulateurs
          • 🙋‍♂️Network Operator Name
        • 🦷Contournement des détections de rootage
          • 🧮Root management
          • 🗝️Clé de signature du noyau
          • 🧊Props dangereux
          • 🦸‍♂️Binaire "su"
          • ❌Permissions sur les repertoires
        • ☝️Contournement des protections biometriques
        • 📜SSL pinning bypass
        • Contournement de code PIN
      • 🔳Lecteur de code QR/EAN/Barres...
      • 💔Injection de backdoor
      • 🪧Task hijacking
      • 🎭Overlay attacks
        • Tapjacking
        • Invisible Keyboard
      • 📵Résilience
        • ⌨️Third Party Keyboards
        • ©️Allowed Copy/Paste on sensitive fields
        • 🛤️Background screen caching
        • 🖋️Schémas de signature
        • ⬆️In-App updates
      • 🤯Corruption de Mémoire
    • 🍏iOS
      • 🥅Méthodologie
      • 🧱Setup environnement (iOS)
      • ⏮️Reverse engineering (iOS)
      • 🏔️Analyse statique (iOS)
      • 🧿Contournement de détection de Jailbreak
      • 📌SSL pinning bypass (iOS)
      • 👇Contournement d'authentification biométrique
      • 🐛Contournement d'anti-Hooking/Debugging
      • 🙈Stockage de données non sécurisé (iOS)
        • 💭Mémoire (iOS)
        • 🏓Copy/Paste buffer caching (iOS)
        • 🍪Cookies (iOS)
        • 🗞️Logs (iOS)
        • ⌨️Cache du clavier (IOS)
        • Backup (IOS)
      • 📱Background screen caching
      • 🧑‍🚀WebView vulns (iOS)
      • Deeplinks vulns (iOS)
      • Lecteur de code QR
      • Firebase misc
  • 👷Pentest physique
    • 🔐Crochetage
    • 💳RFID
    • ⚙️Equipements
    • 💾Hardware Hacking
      • 📈UART
      • 🧪JTAG
      • ⚡SWD
      • 🪢SPI
      • 🚌I²C
      • 🔴Fault Injection
      • Side-Channel Attacks
    • 🐣Firmware hacking
  • 🖨️Pentest IoT
    • ⏪Replay de stream camera
    • 🗣️Assistants vocaux
    • 📹Camera IP
    • ⬇️DoS
    • 🖨️Imprimantes
    • 🎬Chromecast
  • 💀Hacking protocols
    • 😩Telnet - port 23
    • 🔐SSH - port 22
    • 📤FTP - port 21
    • ❔Whois - port 43
    • 👉DNS - port 53
    • 🐕‍🦺Kerberos - port 88
    • 💼SNMP - ports 161-162
    • 📨SMB - ports 445-139
    • 📧SMTP - ports 25-587
    • 🎦RTSP - port 554
    • 🔎MS-RPC - ports 135-593
    • ➕Rsync - port 873
    • 🔢MS-SQL - port 1433
    • 🏗️Docker - port 2375
    • 🔡MySQL - port 3306
    • 📝LDAP - ports 389, 636, 3268, 3269
    • 🖥️RDP - port 3389
    • ⌨️VNC - ports 5800,5801,5900,5901
  • 😈Ingénierie sociale
    • 🧠Concepts / Principes / Attaques
    • 🪧Ethique
    • 👤Profils comportementaux
  • 🔓Crack
  • 🛠️Autres outils utiles
    • 🚿Sandbox / Sanitizer
    • 🔤Générateurs de wordlists personnalisées
  • 🌜Post-Exploitation
    • 👔Énumération /Élévation de privilèges
      • 🐧Linux
        • CVE-2022-0847 (Dirty Pipe)
        • CVE 2021-4034 (PwnKit)
        • CVE 2021-3560 (Polkit)
      • 🪟Windows
        • 🖨️PrintNightmare
        • 🖨️SpoolFool
        • 🆔Usurpation de SAMAccountName
        • ⏲️Scheduled task/job (T1573.005)
        • 🐝HiveNightmare
        • 🔑Stored Credentials
        • 🎩SeImpersonatePrivilege
        • 🎒SeBackupPrivilege
        • 🍞Unquoted Service Path
        • 🧩DLL Hijacking
        • ©️SeBackupPrivilege
      • ⛴️Docker
    • 👻Effacement des traces
    • ⚓Persistance / Downloaders
    • 🛡️Defense evasion
    • 📦Exfiltration de Données
  • 🔎Forensic
    • 💡Méthodologie
    • 📺Live forensic
    • 💻Mémoire non volatile
    • 🕊️Mémoire volatile
    • 📄File forensic
Propulsé par GitBook
Sur cette page
  • Mindmap
  • Checklist
  • Outils
  • MFASweep

Cet article vous a-t-il été utile ?

  1. Pentest Web
  2. Bypass

2FA

PrécédentWAF / Filter bypassSuivantCharges utiles

Dernière mise à jour il y a 2 mois

Cet article vous a-t-il été utile ?

Mindmap

Checklist

Méthode 1:

Changer le code 4XX en code 200 OK.

Méthode 2:

  • Intercepter la demande de 2FA avec burp

  • Forward la requête

  • Regarder si il n'y a pas de leak en réponse

Méthode 3:

Chercher d'éventuels leaks dans les fichiers JS.

Méthode 4:

Vérifier si on peu utiliser plusieurs fois le même code.

Méthode 5:

  • Vérifier si il y a un rate limit en tentant de brute force le code.

  • Tenter des contournements de rate limit génériques.

  • Vérifier si la fonction de resend ne réinitialise pas le compteur.

Méthode 6:

Vérifier si changer de mot de passe ou d'email désactive le 2FA.

Méthode 7:

Tester s'il est possible d'utiliser du clickjacking avec des iframes pour forcer l'utilisateur à désactiver son 2FA.

Méthode 8:

Tenter d'utiliser un code "null" ou "000000"

Méthode 9:

Tenter de passer la page de 2FA (https://target.com/login => https://target.com/account)

Utiliser le header referer pour faire croire à l'application qu'on est bien passé par cette étape.

Exemple:

GET /account

Host: target.com

Referer: https://target.com/login

Méthode 10:

Utiliser le code de validation de l'attaquant sur le compte d'une cible.

Méthode 11:

Essayer de générer 2 codes de vérifications pour le même compte et regarder si celui-ci est bien changé à chaque demande.

Méthode 12:

Vérifier si la génération du code est basé sur le moment de la demande en envoyant la demande exactement au même moment. (race condition)

#Script python

import requests
url = "https://target.com/login"
headers = {}
target ={"LOGIN": "<login target>", "PASS": "<password>"}
attacker ={"LOGIN": "<login attacker>", "PASS": "<password>"}
requests.post(url, headers=headers, data=target, verify=False)
requests.post(url, headers=headers, data=attacker, verify=False)

Méthode 13:

Manipulation des méthodes HTTP, URL, Paramètres (aléatoires ou malformés)

Méthode 14:

Se connecter sur des navigateurs différents puis vérifier si activer ou modifier les paramètres de 2FA déconnecte la première session.

Méthode 15:

Vérifier la requête d'authentification avec puis sans 2FA permet parfois de relever quelques informations utiles.

Sans

Requête:

{"email" : "abc@gmail.com" , "password" : " abc1234" , "mfa" : null , "code" : ""}

Réponse:

Location: https://target.com/user/dashboard

Avec

Requête:

{"email" : "abc@gmail.com" , "password" : " abc1234" , "mfa" : true , "code" : ""}

Réponse:

Location: https://target.com/v1/proxy/authentication/authenticate

Dans ce cas, peut-être que si on modifie la requête en envoyant ceci avec le 2FA d'activé on pourra bypass le bypass.

{"email" : "abc@gmail.com" , "password" : " abc1234" , "mfa" : null , "code" : ""}

ou en allant directement sur le lien vers le dashboard.

Méthode 16:

Dans le cas ou le 2FA serait géré avec une appli mobile tier type Google authenticator. L'application devrait vous donner des codes de backup uniques à sauvegarder.

Dans ce cas, sélectionner la connexion avec le code de backup et vérifier la bonne validation de la fonctionnalité en entrant un code aléatoire. (Avec un peu de chance aucune vérification n'est faite)

Méthode 17:

  • Envoyer une demande de mot de passe oublié ave 2FA.

  • Entrer un mauvais code de vérification.

  • Si un code d'erreur est généré dans l'url, essayer de changer la valeur de ce code.

Méthode 18:

Si après plusieurs demandes de vérification sont raté, il arrive que certains site demande de se connecter avec username et password après 3 code de vérification raté par exemple.

Dans ce cas voici une technique pour bypass cette méthode.

Dans burp:

Récupérez les page de login et de vérification GET et POST dans le HTTP history.

Allez dans "Projet options" puis dans Session handling rules cliquez sur "Add"

Dans scope choisissez "include all URLs"

Ensuite, dans Details > Rule Actions, cliqez su "Add".

Sélectionnez les requêtes:

  • GET /login

  • POST /login

  • GET /verification

Cliquez sur "OK" puis sur "Test macro", dans la réponse à la requête POST /verification, sélectionnez le dtexte de la demande de code (Veuillez entrer le code de vérification 4-digit)

Retournez dans Proxy > HTTP history.

Envoyez le POST /verification dans "Intruder".

Bruteforce le paramètre contenant le code de 0000 à 9999.

Méthode 19:

  • 2FA implémenté en api REST (exp: /rest/login)

Exp: { "username":"user","pass":"password":"SecurityToken":"173572537"}

  • Vérifier si un des endpoints accepte SOAP (exp: /endpoint/Soap/version).

  • Si c'est le cas, écrire un message sans SecurityToken et envoyer la requête.

Exp:

<SOAP-ENV:Envelope xmlns:se="">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<login xmlns="">
<username>user</username>
<password>password</password>
</login>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
  • Si les développeurs ont oublié d'implémenter le 2FA dans les endpoints SOAP alors vous devriez être connecté

Méthode 20:

  • Changer d'adresse email

Si un lien est envoyé à l'ancien email pour prévenir du changement et qu'il y a un lien permettant d'annuler le changement,

  • Suivre le lien (si il redirige vers la page de connexion)

  • Entrer ses identifiants

Si le second facteur n'est pas demandé alors la manipulation a fonctionné.

Méthode 21:

Vérifier si il existe une API d'une ancienne version qui n'avait pas encore le 2FA.

Méthode 22:

Vérifier la durée de validité du code.

Méthode 23:

Vérifier si passer par un lien tier contourne la demande de 2FA (lien de réinitialisation de mot de passe, lien dans une newsletter...)

Méthode 24:

Si utilisation de OAuth, tenter de se connecter en OAuth via un sous-domaine et vérifier si la demande de 2FA est effectuée.

Si il n'y a pas de 2FA sur le sous-domaine et que le cookie de session s'applique à des domaines qui demandent du 2FA vous devriez pouvoir ouvrir une session sans avoir besoin de passer par l'étape de 2FA.

Outils

MFASweep

MFASweep est un script powershell créé spécifiquement pour les contournements de MFA Microsoft (O365, Azure, ADFS...)

Exemple d'utilisation:

> Invoke-MFASweep -Username target@example.xyz -Password P@ssw0rd123!

ressource:

ressource:

🌐
🔓
2️
https://medium.com/@ultranoob/weird-and-simple-2fa-bypass-without-any-test-b869e09ac261
https://github.com/dafthack/MFASweep