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
  • Méthodologie
  • Créer 2 comptes ou plusieurs comptes pour chaque niveau de permissions
  • Où peut-on trouver ces IDs ?
  • Comment les ressources sont gérées ?
  • Enumeration de ressources via code de reponse
  • Automatisation avec Burp Suite
  • Checklist
  • REST APIs
  • Vulnérabilités UUIDs
  • Outils
  • Versions
  • Vulnérabilités
  • Répartition des IDOR
  • Outils
  • Reset-Tolkien

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

  1. Pentest Web

IDOR

Insecure Direct Object Reference

Les références d'objet directes non sécurisées (IDOR) sont un type de vulnérabilité de contrôle d'accès qui survient lorsqu'une application utilise une entrée fournie par l'utilisateur pour accéder directement à un objet.

Il existe de nombreux exemples de vulnérabilités de contrôle d'accès dans lesquelles des valeurs de paramètre contrôlées par l'utilisateur sont utilisées pour accéder directement aux ressources ou aux fonctions.

L'un des exemples les plus connu est le populaire paramètre id qu'on peut essayer d'incrémenter pour accéder aux données d'un autre utilisateur.

https://target.com/customer_account?id=132355

Cependant ce type d'attaque ne se limite pas à un exemple si simple.

Méthodologie

Créer 2 comptes ou plusieurs comptes pour chaque niveau de permissions

Où peut-on trouver ces IDs ?

En effet on peut retrouver des IDs directement dans une url comme dans l'exemple précèdent mais également dans le code source de la page comme c'est souvent le cas sur les sites de réseaux sociaux.

Comment les ressources sont gérées ?

Se connecter avec un "UserA" et intercepter les requêtes des différentes fonctionnalités pour comprendre le fonctionnement de celles-ci.

Créer un compte pour chaque niveau de privilèges..

Créer une ressource avec un "UserA" et essayer de modifier ces ressources avec un "UserB".

Enumeration de ressources via code de reponse

Exemple si on a un endpoint donnant un 404 pour une ressource qui n'existe pas:

GET /api/user/test987123 404 Not Found HTTP/1.1 => n'exite pas

GET /api/user/userA 405 Unauthorized HTTP/1.1 => exite

GET /api/user/1337 405 Unauthorized HTTP/1.1 => existe

GET /api/user/phone/2018675309 405 Unauthorized HTTP/1.1 => existe

Automatisation avec Burp Suite

Autorize

Si vous avez 2 comptes avec des droits différents, connectez vous aux deux avec un navigateur différent, prenez le cookie de session de celui avec le moins de privilèges et entrez le dans Autorize.

Navigez ensuite sur le site avec le compte ayant le plus de privilèges et vérifiez que le compte avec le moins de privilèges n'ai pas l'autorisation d'accéder à des ressources auquelles il ne devrait pas avoir accès.

AutoRepeater

Pour remplacer les UUID et ID dans les requêtes.

Checklist

  • Trouver et remplacer les IDs dans les urls headers et body

Exemples: /users/01 -> /users/02

  • Essayer la pollution de paramètres

Exemple: users=01 -> users=01&users=02

Exemple: /users/01* ou /users/*

  • Essayer les anciennes versions d'API

Exemple: /api/v3/users/01 -> /api/v1/users/02

  • Bypass via ajouter d'extension

Exemple: /users/01 -> /users/01.json

  • Changer la méthode HTTP

Exemple: POST / PUT / PATCH / DELETE /users/01

  • Bypass via l'en-tête Referer

Exemple:

Get /users/02 403 Forbidden

Referer: target.com/users/01

Get /users/02 200 Ok

Referer: target.com/users/02

  • Remplacer les UUID avec un ID numérique ou un email

Exemple: /users/1b16c096-135d-346f-b54a-eda97413ce28 -> /users/02 ou /users/abc@xyz.com

  • Essayer des UUID tels que:

00000000-0000-0000-0000-000000000000 -> 11111111-1111-1111-1111-111111111111

  • Rechercher des leaks de GUID via le contenu des réponses aux fonctions de signup, reset password etc.

  • Essayer de mettre les deux userID dans un tableau.

{
    "userID":[
        1234,
        4321
    ]
}
  • Essayer de mettre un double userID.

{
    "userID":{
        "userID":1234
        }
}
  • Essayer d'utiliser un booleen ("userID":true)

  • Utiliser un ID très long

  • Mettre des zéros devant l'ID

  • Mettre un "-" devant l'ID

  • Mettre un ,0 après l'ID

  • Mettre les deux ID dans une même chaîne de caractères simplement séparé par une virgule.

  • Si le userID est reflété dans une URL => "userID":"1234/../4321" (path traversal)

  • IDOR en aveugle

  • Coupler IDOR et XSS pour account takeover

Niveau d'impact

Une IDOR est critique si:

  • Elle permet-elle de faire fuiter des données personnelles (Identité, emails etc)

  • Elle permet de bypass un payement (en payant avec la carte de crédit enregistré d'un autre utilisateur par exemple)

  • Elle permet d'effectuer des actions au nom d'un autre utilisateur

  • Elle permet de détruire ou endommager des informations ou assets.

REST APIs

Type
Requête
IDOR

ID prédictible

GET /api/v1/account/2222

GET /api/v1/account/2223

Double ID

GET /api/v1/UserA/data/2222

GET /api/v1/UserB/data/2223

Int

{"Account": 2222 }

{"Account": [2222] }

email

{"email": " UserA@email.com"}

{"email": " UserB@email.com"}

Group

GET /api/v1/group/CompanyA

GET /api/v1/group/CompanyB

Group + email

GET /api/v1/group/CompanyA {"email": " UserA@email.com"}

GET /api/v1/group/CompanyB {"email": " UserB@email.com"}

Nested object

{"Account": 2222 }

{"Account": {"Account": 2223 } }

Token prédictible

{"data": "DflK1df7jSdfa1acaa"}

{"data": "DflK1df7jSdfa2faaa"}

Vulnérabilités UUIDs

Outils

Versions

UUID

00000000-0000-0000-0000-000000000000

UUIDv1

UUIDv2

UUIDv3 et UUIDv5

UUIDv3 et UUIDv5 sont générés en utilisant le hachage du namespace identifier et du nom. La principale différence entre les versions trois et cinq est que UUIDv3 utilise du MD5 comme algorithme de hachage, tandis que UUID v5 utilise du SHA-1.

UUIDv4

Les UUIDsv4 sont générés presque entièrement aléatoirement. Seuls 4 bits sont utilisés pour indiquer la version et deux 2 bits sont utilisés pour indiquer la variante (lorsque la variante-1 est adoptée). Les autres bits (122) sont générés aléatoirement.

Vulnérabilités

UUIDv1

Sandwitch attack:

Le principe est de générer 3 UUID (attaquant puis victime puis attaquant) le plus rapidement possible en utilisant une race condition par exemple. l'UUIDv1 étant basé sur le temps, les 3 UUIDs devraient être très ressemblant les un des autres:

UUIDs attaquant:
https://target.com/reset/99874128-7592-11e9-8201-bb2f15014a14
https://target.com/reset/998796b4-7592-11e9-8201-bb2f15014a14

Le but est ensuite de bruteforcer la plage hexadecimal entre les deux UUIDs de l'attaquant jusqu'à trouver celle de la victime. (Dans le cas où il n'existe pas de rate limite ou s'il peut être contourné)

Attention: Cette possibilité est compromise dans le cas où le site ciblé utilise un load balancer ou plusieurs serveurs différents pour gérer la fonctionnalité auquel cas le seul moyen d'utiliser cette attaque est de trouver un moyen de cibler toujour le même serveur ce qui est complexe. (peut être fait en modifiant le /etc/hosts ou en faisant un plus grand nombre de requêtes simultanées.

Il est aussi possible que la fonctionnalité mette du temps à générer les UUIDs auquel cas plus ce temps est élevé plus l'écart entre les UUIDs sera important et donc logiquement plus le temps de bruteforce sera augmenté.

Répartition des IDOR

Outils

Reset-Tolkien

Reset-Tolkien est un outil d'analyse de secrets permettant d'exploiter les secrets non sécurisés basés sur le temps et les attaques sandwich lors de l'usage d'UUID non sécurisés.

Exemple d'utilisation:

$ reset-tolkien detect <secret> -d "Wed, 27 Mar 2024 14:42:25 GMT" --prefix "attacker@example.com" --timezone "-7"

PrécédentCross-site WebSocket Hijacking (CSWSH)SuivantSSRF

Dernière mise à jour il y a 3 mois

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

Essayer bypass via

ID chiffré ? encodé ? ou decoder via différents outils

Essayer de retrouver des leaks de GUID via

Essayer de bypass la restriction via

: decodeur d'UUID en ligne

cella peut être fait avec l'outil suivant:

Ressource:

🌐
🎯
Cracker
Google Dorks, Github, la Waybackmachine...
403 bypass
https://www.uuidtools.com/decode
https://github.com/Lupin-Holmes/sandwich
https://github.com/AethliosIK/reset-tolkien
Decomposition d'un UUIDv1
Decomposition d'un UUIDv2
caractères spéciaux