🔓Bypass
Outils dédiés aux bypass en tout genre
Sites:
https://insolitum.github.io/character_encoder/: Ajouter des caractères ASCII random à la chaîne de caractères donnée.
Dontgo403
Dontgo403 est un outil permettant de tenter de contourner les accès restreints sur les pages web via différentes techniques.
Exemple d'utilisation:
$ ./dontgo403 -u https://target.com/private
ressource: https://github.com/devploit/dontgo403
Byp4xx
Byp4xx est un outil permettant de tenter de contourner les accès restreints sur les pages web via différentes techniques (verb tampering, headers, custom user agents, tips de bug bounty).
Exemple d'utilisation:
$ ./byp4xx.py https://target.com/private
ressource: https://github.com/lobuhi/byp4xx
403-bypass
403-bypass est un outil ayant la même utilité que byp4xx
Exemple d'utilisation:
$ python3 403-bypass.py -u https://target.com -p private
ressource: https://github.com/channyein1337/403-bypass
Bypass-url-parser
Bypass-url-parser est un outil permettant de tenter de contourner les restrictions via manipulation de l'url.
Exemple d'utilisation:
$ ./bypass-url-parser.py -u https://target.com/secret
ressource: https://github.com/laluka/bypass-url-parser
Recollapse
REcollapse est un outil d'aide au fuzzing des regex en boîte noire pour contourner les validations et découvrir les normalisations dans les applications Web.
Exemple d'utilisation:
$ recollapse https://target.com/secret
ressource: https://github.com/0xacb/recollapse
hakoriginfinder
Outil pour découvrir l'hôte d'origine derrière un proxy inverse. Utile pour contourner les WAF cloud.
Exemple d'utilisation:
$ prips <IP range>/24 | hakoriginfinder -h target.com
ressource: https://github.com/hakluke/hakoriginfinder
Jwt_tool
Jwt_tool est un outil permettant vérifier, scanner et falsifier des Json Web Token à la recherche de failles connues.
Exemple d'utilisation:
$ python3 jwt_tool.py <JWT>
ressource: https://github.com/ticarpi/jwt_tool
JSON Web Token Burp Suite extension
Il existe une extension dans burp suite permettant de manipuler les JWT.
ressource: https://github.com/portswigger/json-web-tokens
TIPS
Si un fichier est protégé, essayer de le fuzz avec des extensions de backup.
Rate limit Bypass
Headers Bypass
Juste en dessous du header "Host:", utiliser l'un (ou parfois plusieurs) de ces headers:
X-Forwarded-For : IP
X-Forwarded-Host : IP
X-Client-IP : IP
X-Remote-IP : IP
X-Remote-Addr : IP
X-Host : IP
Avec des caractères
L'ajout d'un octet nul (%00) à la fin d'un e-mail peut parfois contourner la limite de débit.
Essayez d'ajouter un espace après un e-mail. ( Non codé )
Quelques caractères communs qui aident à contourner la limite de débit : %0d , %2e , %09 , %20 ...
Avec une redirection
Si une page incorrecte redirige vers la page testé, changer le Host Header peu parfois permettre de contourner un rate limit.
Email verification bypass
Créer un compte avec un email
un lien de vérification sera envoyé
ne pas le suivre et changer l'email par celui d'une victime
Suivre le lien envoyé par mail
Si l'email de la victime est vérifié au lieu du votre alors il y a usurpation
Simple Bypass
Lorsqu'on a plusieurs étapes par exemple comme c'est le cas lors d'un achat en ligne, tenter de passer une étape.
Exemple:
/step/shipping/
/step/payment/
/step/confirm/
Essayer d'ajouter api devant un nom de domaine.
Exemple:
/target.com/users/ Forbidden
/api.target.com/users/ OK
Essayer d'ajouter .json à la fin de l'url.
Exemple:
/target.com/users/data Forbidden
/target.com/users/data.json OK
Si vous repérez une API avec une version dans l'url, essayer d'utiliser une version obsolète.
Exemple:
/target.com/v2/users/data Forbidden
/target.com/v1/users/data OK
Si vous avez une API, essayer d'ajouter internal à l'URL.
/target.com/v1/users/data Forbidden
/targer.com/v1/internal/users/data OK
Pour les paramètres en "id:XXX", essayer de mettre l'id dans un tableau.
Exemple:
/target.com/user.php?id=XXX Forbidden
/target.com/user.php?id=[XXX] OK
Essayer de le passer en tant qu'objet json.
/target.com/user.php?id=XXX Forbidden
/target.com/user.php?{"id"=XXX} OK
Essayer de passer par un id légitime.
/target.com/user.php?id=<victime> Forbidden
/target.com/user.php?id=<légitime>&id=<victime> OK
Essayer de fuzz le paramètre.
Exemple:
/target.com/user.php?id=FUZZ
Verb tampering
Essayer toutes les méthodes HTTP.
Method override
Via header
Via parametre
Header injection
Essayer les headers en IP avec les plages suivantes:
192.168.0.0/16
172.16.0.0/12
127.0.0.0/8
10.0.0.0/8
URI tampering
ISP bypass
via le service Google translate
https://evil.com/ Bloqué
https://evil.com.translate.goog/ Bypass
2FA bypass / manipulation / abus
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)
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.
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)
ressource: https://medium.com/@ultranoob/weird-and-simple-2fa-bypass-without-any-test-b869e09ac261
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 15:
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 16:
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 17:
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:
Si les développeurs ont oublié d'implémenter le 2FA dans les endpoints SOAP alors vous devriez être connecté
Méthode 18:
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 19:
Vérifier si il existe une API d'une ancienne version qui n'avait pas encore le 2FA.
Méthode 20:
Vérifier la durée de validité du code.
Méthode 21:
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 22:
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.
Mindmap
CORS bypass
Origin:null
Origin:attacker.com
Origin:attacker.target.com
Origin:attackertarget.com
Origin:sub.attackertarget.com
Origin:attacker.com et changer la méthode HTTP GET => POST / POST => GET
Origin:sub.attacker target.com
Origin:sub.attacker%target.com
Origin:attacker.com/target.com
SSRF bypass
Si les IP sont blacklistés, il est possible d'essayer de les bypass de ces façons.
Exemple pour IP 127.0.0.1:
Whitelist bypass
exemple: "function url must be function.target.com"
bypass:
https://localhost@function.target.com
https://localhost#@function.target.com ("#" pour essayer d'enlever le @function.target.com de la requête)
https://localhost%2523@function.target.com (avec le "#" double encodé)
XSS bypass
Il arrive parfois que des entreprises remédient à des XSS en encodant les sorties utilisateur.
Il est donc important d'essayer vos payloads encodés avec burp suite par exemple.
Exemple:
<img src=x onerror=prompt(document.domain)>
devient
%3Cimg%20src%3Dx%20onerror%3Dprompt%28document.domain%29%3E
Ou (double encodé)
%253Cimg%2520src%253Dx%2520onerror%253Dprompt%2528document.domain%2529%253E
Open redirect
target[.]com/?redirect=evil[.]com => Warning site
target[.]com/?redirect=evil[.]cOm => OK
Autre
Accès à la console d'administration
Il existe parfois un paramètre debug dans un endoint pouvant parfois permettre de bypass une restriction d'accès.
Exemple:
debug=true
_debug=true
debug=1
_debug=1
target.com/admin/console => 403 forbidden
target.com/admin/console?debug=true => 200 OK
Dernière mise à jour