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
  • Sites
  • Basic
  • En-têtes intéressantes
  • Authorization
  • Content-Type
  • Vulnérabilités
  • Classiques
  • Checklist
  • Tips
  • Outils
  • OWASP OFFAT
  • Swagger Jacker
  • Fuzzapi
  • Astra
  • OpenAPI Security Scanner
  • Swagroutes

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

  1. Pentest Web
  2. APIs

REST

Representational State Transfer

PrécédentAPIsSuivantGraphQL

Dernière mise à jour il y a 1 mois

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

Sites

  • : Base de données d'informations sur les APIs

  • : Identification de clé / Token d'API

Basic

Les APIs RESTful ont été conçues pour améliorer de nombreux défaut d'autres APIs plus anciennes telles que les APIs SOAP. Les APIs RESTful fonctionnent notamment entièrement sur le protocole HTTP rendant de ce fait beaucoup plus accessible son utilisations aux utilisateurs finaux. Les APIs RESTful utilisent principalement les méthodes HTTP GET, POST, PUT et DELETE.

Le design de ces APIs dépend de six contraintes:

  1. Une interface uniforme: l'interface de l'API est la même pour ordinateur, mobile et IoT.

  2. Client / Serveur: Les clients sont les visiteurs du site qui font leurs requêtes et le serveur donnent les informations demandées aux clients.

  3. Stateless: Les APIs REST ne stocke pas de données et ne fait référence à aucune transaction passée. Chaque transaction est effectuée à partir de rien, comme si c'était la première fois.

  4. Cachable: La réponse du fournisseur d'API doit indiquer si la réponse est cachable ou non, rendre les APIs REST cachable est un moyens de rendre les interactions plus rapides et moins couteuses en terme de ressources. Cela est principalement mis en place par des en-têtes types "Cache:" et "Miss:"

  5. Architecture en couche: Le client doit pouvoir demander des données à partir d'un endpoint sans connaître l'architecture du serveur sous-jacent.

  6. Code à la demande (optionnel): Permet d'envoyer du code à un client pour execution.

En-têtes intéressantes

Authorization

Il s'agit de l'en-tête utilisée par l'API pour vous identifier, elle fonctionne comme ceci:

Authorization: <type> <token/credentials>

#types:
#    Basic <base64 encoded credentials (username:password)> (facile à bruteforce)
#    Bearer <Token>
#    AWS-HMAC-SHA256 <secret key>

Content-Type

Il s'agit de l'en-tête utilisée pour indiquer le type de données transmises, les types les plus utilisés dans les APIs RESTful sont les types:

  • application/json

  • application/xml

  • application/x-www-form-urlencoded

Vulnérabilités

Classiques

Les API RESTful nécessites de procéder aux mêmes tests que pour d'autres APIs à savoir le Top 10 OWASP et autres vulnérabilités WEB.

Checklist

Fuites d'information

IDOR

Exemples:

Broken user authentication

Exposition de données excessive

Exemple:

GET sur https://target.com/api/users/exemple donne:

}
 "user": {
"id": 1121,
"admin": false,
"username": exemple,
"multifactor": false
}
"sales_assoc": {
 "email": "exemple@target.com",
 "admin": true,
 "username": super_sales_admin,
 "multifactor": false
}

Manque de rate limit / ressources

Bruteforce fonction sensible avec burp suite ou autre et vérifier si les requêtes sont bloqués au bout de 100-200-300 requêtes...

Bypass:

  • Ajout de caractères spéciaux

  • mettre une lettre différente en maj à chaque requête

  • ...

Broken Function Level Authorization

Mass assignment

Exemples:

POST /api/v1/register

}
    "username":"exemple",
    "email":"exemple@target.com"
}


POST /api/v1/register

}
    "username":"exemple",
    "email":"exemple@target.com",
    "admin":"true"
}
POST /api/v1/register

{
"username":"exemple",
"email":"exemple@target.com",
"password":"Password"
}

POST /api/v1/register

{
"username":"exemple",
"email":"exemple@target.com",
"org": "Company",
"password":"Password"
}

/api/v1/register

{
"username":"exemple",
"email":"exemple@target.com",
"password":"Password"
}

POST /api/v1/register

{
"username":"exemple",
"email":"exemple@target.com",
"mfa": "false",
"password":"Password"
}

Security misconfigurations

Fuites d'infos techniques

Générer des erreurs détaillées dans les APIs

  1. Envoyer une chaîne de caractères au lieu d'un nombre (et inversement).

  2. Enlever des paramètres essentiels au fonctionnement de la requête.

  3. Casser la structure JSON (supprimer un '}').

  4. Enlever des headers/cookies nécessaires au fonctionnement de la requête.

  5. Entrer un nombre très grand quand le nombre attendu doit être bas et inversement

  6. Entrer une valeur "null" (null, (null), %00, ou 0x00)

  7. Entrer des caractère spéciaux (!@#$%^&*();':''|,./?>)

  8. Utiliser des langages imprévus (漢, さ, Ж, Ѫ, Ѭ, Ѧ, Ѩ, Ѯ)

Exemples:

Headers:
X-Powered-By: Fuite d'info

Erreur verbeuses:
- leak de version
- leak de code source
- leak des techno utilisées
- leak d'IP interne
...
  • Manques de Headers de securité (X-XSS-Protection, X-Iframe-Options...)

  • HTTP méthode TRACE ou autre inutile au fonctionnement de l'API autorisée

  • Identifiants par défauts

  • Pas de HSTS

...

Injections

Exemples:

Improper Assets Management

API v1, v2, v3

Business Logic vulnerabilities

Exemples:

Tips

Si l'endpoint ne renvoie rien, essayer:

  • d'utiliser le header "X-Request-With: XMLHttpRequest" afin de simuler un frontend.

  • d'utiliser des user-agent de mobiles (Si l'API est spécifiquement utilisée par une application, il est possible qu'elle check que le user-agent est bien celui d'un mobile).

Outils

OWASP OFFAT

L'outil OWASP OFFAT est un scanner de vulnérabilité pour API prenant comme entrée un fichier de definition OpenAPI (swagger.json), bien que la compatibilité totale avec OAS v3 soit en attente. Le projet reste un travail en cours, évoluant continuellement vers son achèvement.

Utilisation:

$ offat -f swagger.json

Swagger Jacker

SJ est une alternative à OFFAT, il permet également de faire un scan automatisé d'API en se basant sur un fichier de définition OpenAPI (swagger.json).

Fuzzapi

Fuzzapi est une application rails avec interface graphique permettant de scanner des APIs.

Astra

Astra est une application python avec interface graphique permettant de scanner des APIs.

OpenAPI Security Scanner

OpenAPI Security Scanner est un scanner complexe permettant de recherches des vulnérabilités dans les contrôles d'accès de manière automatique en définissant les endpoints à tester et les identifiants de plusieurs utilisateurs et rôles différents.

Swagroutes

Swagroutes est un outil permettant tout simplement d'extraire les endpoints d'une defnition OpenAPI.

Utilisation:

$ swagroutes swagger.json

ressource:

ressource:

ressource:

ressource:

ressource:

ressource:

🌐
⚙️
🍽️
https://www.programmableweb.com/
https://api-guesser.netlify.app/
🌐Pentest Web
🎯IDOR
🔓Bypass
✊Brute force / Fuzzing
💉Injections
🛒Fonctions d'achat et de facturation
⏬Upload features
https://github.com/OWASP/OFFAT
https://github.com/BishopFox/sj
https://github.com/Fuzzapi/fuzzapi
https://github.com/flipkart-incubator/Astra
https://github.com/ngalongc/openapi_security_scanner
https://github.com/amalmurali47/swagroutes