cyber:vulnerabilite:http_methods
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
cyber:vulnerabilite:http_methods [2025/07/11 15:21] – admin | cyber:vulnerabilite:http_methods [2025/07/13 14:44] (Version actuelle) – [Exemple 1] admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== HTTP - Methods ====== | ====== 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.1752240097.txt.gz · Dernière modification : 2025/07/11 15:21 de admin