Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/ally-petitt/cve-2023-45503
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationSécurité des Bases de Données
GitHubally-petitt/cve-2023-45503

CVE-2023-45503

Référence CVE-2023-45503

Voir le dépôt
3il y a 2 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2023-45503 Détails de la vulnérabilité

Aperçu

Dans le système de gestion de contenu (CMS) Macrob7 Macs Framework versions 1.1.4f et antérieures, une gestion non sécurisée des entrées utilisateur entraîne 16 vulnérabilités d'injection SQL. La capacité d'exécuter des requêtes SQL arbitraires peut entraîner la fuite de données privées, notamment les hachages de mots de passe des utilisateurs, ainsi que la possibilité de modifier les identifiants et le niveau de privilège d'autres utilisateurs. L'impact peut inclure une escalade de privilèges et une éventuelle exécution de code à distance (RCE).

Un tableur décrivant chaque point de terminaison affecté, paramètre vulnérable et fonctions vulnérables peut être trouvé à ce lien.

Classification CWE : CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

Signalé par : Ally Petitt

Produit affecté : Macrob7 Macs CMS

Versions affectées : 1.1.4f et antérieures

Détails techniques

Dans 16 cas que j'ai repérés, les entrées utilisateur étaient reçues sans aucune sanitisation ni paramétrisation appropriée. Par exemple, dans la fonctionnalité 'Mot de passe oublié' de ce CMS, une adresse e-mail est demandée.

Application/plugins/CMS/controllers/CMS.php:224

root@kitploit:~
public function forgotPasswordProcess()
{
  $this->loadModels();
  $emailAddress = Post::getByKey('emailAddress');

  $user = $this->usersModel->getUserByEmailAddress($emailAddress);

L'adresse e-mail est ensuite transmise à la méthode , qui passe l'e-mail à , une méthode qui ne protège pas correctement contre les requêtes SQL injectées.

Télécharger l’outil
getUserByEmailAddress()
selectSingle()

Application/plugins/CMS/models/Users_Model.php:41

root@kitploit:~
public function getUserByEmailAddress($emailAddress)
{
   return $this->selectSingle( $this->getCMSTableNameUsers(), array('EmailAddress'=>$emailAddress));
}

Ensuite, selectSingle() appelle select() avec l'entrée utilisateur transmise.

Application/core/DB.php:200

root@kitploit:~
public function selectSingle($tableName, array $where = array(), array $fields = array('*'))
{
  $return = $this->select($tableName, $where, $fields);

  $single = NULL;

  if( count($return) > 0 )
    $single = $return[0];

  return $single;
}

La fonction vulnérable select() concatène ensuite les paramètres qui lui sont passés dans une requête SQL qui est ensuite exécutée.

Application/core/DB.php:186

root@kitploit:~
public function select($tableName, array $where = array(), array $fields = array('*'))
{      
  $fieldsString = $this->generatePair($fields, ',');
  $whereString = $this->generateKeyValuePair($where, '=', 'AND');

  $sql = 'SELECT '.$fieldsString.' FROM '.$tableName;

  if($whereString !='')
    $whereString = ' WHERE '.$whereString;

  $sql = $sql.' '.$whereString.';';     
  return $this->execute($sql)->fetchAll($this->returnType, $this->className);
}

En raison du manque de sanitisation, de validation et de paramétrisation des entrées, cette fonction reste vulnérable aux attaques par injection SQL.

Atténuation

Malheureusement, un manque de maintenance sur ce CMS signifie qu'une mise à jour corrigée n'est pas disponible. Les utilisateurs individuels peuvent modifier le code pour utiliser des requêtes SQL paramétrées au lieu de se reposer sur la concaténation pour passer les entrées utilisateur dans la base de données. Les instructions préparées sont un exemple d'atténuation qui peut accomplir cela.