cyber:vulnerabilite:http_methods
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| cyber:vulnerabilite:http_methods [2025/06/27 15:08] – créée admin | cyber:vulnerabilite:http_methods [2025/07/13 14:44] (Version actuelle) – [Exemple 1] admin | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== HTTP - Methods ====== | ||
| + | ===== Description ===== | ||
| + | |||
| + | |||
| + | **Les méthodes HTTP sont des verbes utilisés dans les requêtes HTTP pour indiquer l' | ||
| + | |||
| + | D' | ||
| + | * **GET** sert à obtenir une représentation de la ressource spécifiée. Par exemple, on récupérera des informations sur un utilisateur avec un GET (GET / | ||
| + | * **POST** sert à soumettre une nouvelle entité à la ressource spécifiée. Par exemple, on enregistrera un nouvel utilisateur sur une plateforme avec un formulaire soumis via un POST (POST / | ||
| + | * **PUT** sert à remplacer les données de la ressource spécifiée avec les données de la requête. Par exemple, on mettra à jour les informations d'un utilisateur avec la méthode PUT (PUT / | ||
| + | * **DELETE** sert à supprimer la ressource spécifiée. Par exemple, on supprimera un utilisateur avec la méthode DELETE (DELETE / | ||
| + | |||
| + | Exemple d'une requête de type GET : | ||
| + | |||
| + | <code http> | ||
| + | GET / | ||
| + | Host: www.example.com | ||
| + | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/ | ||
| + | Accept: text/ | ||
| + | Accept-Encoding: | ||
| + | Accept-Language: | ||
| + | Cookie: sessionID=12345; | ||
| + | </ | ||
| + | |||
| + | Réponse du serveur : | ||
| + | |||
| + | <code html> | ||
| + | HTTP/1.1 200 OK | ||
| + | Date: Thu, 31 Mar 2023 10:15:00 GMT | ||
| + | Content-Type: | ||
| + | Content-Length: | ||
| + | Connection: keep-alive | ||
| + | Server: Apache/ | ||
| + | X-Powered-By: | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | On notera que toutes les APIs et toutes les applications ne respectent pas nécessairement la RFC. | ||
| + | |||
| + | Les services web exposent parfois involontairement des ressources qui ne devraient pas être accessibles, | ||
| + | |||
| + | ===== Prérequis d' | ||
| + | Pour exploiter cette vulnérabilité, | ||
| + | |||
| + | ==== Connaissances nécessaires ==== | ||
| + | * Connaissance de base du fonctionnement du protocole HTTP ; | ||
| + | * Maîtrise de la notion de méthode HTTP. | ||
| + | |||
| + | ==== Outils nécessaires ==== | ||
| + | |||
| + | * Outils de modification et/ou d’interception de requêtes (Burp, Curl). | ||
| + | |||
| + | ===== Flux d' | ||
| + | |||
| + | ==== Explorer ==== | ||
| + | |||
| + | Naviguer sur l’application pour récupérer les endpoints et/ou pages de l’application pour en déterminer les méthodes HTTP utilisées pour l' | ||
| + | |||
| + | ==== Expérimenter ==== | ||
| + | |||
| + | Pour chacune des requêtes identifiées, | ||
| + | |||
| + | ==== Exploiter ==== | ||
| + | |||
| + | |||
| + | ===== Conséquences potentielles ===== | ||
| + | |||
| + | Une exploitation réussie de ce type de vulnérabilité peut permettre : | ||
| + | * Le contournement de certains mécanismes de contrôle d' | ||
| + | * L' | ||
| + | |||
| + | ===== Contre-mesures ===== | ||
| + | |||
| + | Les contre-mesures suivantes peuvent être mises en œuvre : | ||
| + | * Configurer le serveur web pour n' | ||
| + | * Utiliser des contrôles d' | ||
| + | * Utiliser un pare-feu applicatif pour bloquer les requêtes HTTP non autorisées ou suspectes. | ||
| + | |||
| + | ====== Comment cela fonctionne ====== | ||
| + | Les scénarios suivants peuvent être joués via l’exploitation de cette vulnérabilité : | ||
| + | * L' | ||
| + | * L' | ||
| + | |||
| + | ===== Exemple 1 ===== | ||
| + | |||
| + | Voici une configuration Apache potentiellement vulnérable aux modifications de méthodes HTTP : | ||
| + | |||
| + | <code apache> | ||
| + | < | ||
| + | AllowOverride None | ||
| + | Require all granted | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Cette configuration permet aux utilisateurs de l' | ||
| + | |||
| + | Voici une nouvelle version de la configuration Apache : | ||
| + | |||
| + | <code apache> | ||
| + | < | ||
| + | AllowOverride None | ||
| + | <Limit GET POST> | ||
| + | Require all granted | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Cette configuration permet uniquement les méthodes GET et POST, ce qui signifie que toutes les autres méthodes seront bloquées. Cette limitation peut aider à protéger un serveur contre les modifications non autorisées via les méthodes HTTP. | ||
| + | |||
| + | ===== Exemple 2 ===== | ||
| + | |||
| + | |||
| + | Un attaquant identifie une ressource protégée par le cookie de session sur le site " | ||
| + | L' | ||
| + | |||
| + | <code shell> | ||
| + | |||
| + | $ curl -X GET vulnerable.org/ | ||
| + | > < HTTP/2 401 | ||
| + | > [...] | ||
| + | > Forbidden | ||
| + | </ | ||
| + | |||
| + | En modifiant la méthode HTTP utilisée, l' | ||
| + | |||
| + | <code shell> | ||
| + | |||
| + | $ curl -X POST vulnerable.org/ | ||
| + | > < HTTP/2 200 | ||
| + | > [...] | ||
| + | > username: victim | ||
| + | > [...] | ||
| + | </ | ||
| + | |||
| + | ====== CWEs ====== | ||
| + | * [[https:// | ||
| + | * The server contains a protection mechanism that assumes that any URI that is accessed using HTTP GET will not cause a state change to the associated resource. This might allow attackers to bypass intended access restrictions and conduct resource modification and deletion attacks, since some applications allow GET to modify state. | ||
| + | |||
| + | ====== References ====== | ||
| + | |||
| + | URL : | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| ====== Retour fiches vulnérabilités ====== | ====== Retour fiches vulnérabilités ====== | ||
| * [[cyber: | * [[cyber: | ||
cyber/vulnerabilite/http_methods.1751029691.txt.gz · Dernière modification : 2025/06/27 15:08 de admin
