
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.
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.
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 :
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 :
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.
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 :
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 :
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.
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 :
<?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.
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.
En soumettant la charge utile suivante dans le paramètre query :
<script>alert('XSS');</script>
L'attaquant peut déclencher une attaque XSS lorsque l'administrateur consulte la demande de devis.
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 :