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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-6218 — إثبات مفهوم بسيط لـ WinRAR Path Traversal | RCE | CVE-2025-6218 | Kitploit
أدوات/GitHubGitHub/ignis-sec/cve-2025-6218
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقاستغلال الملفات الثنائية
GitHubignis-sec/cve-2025-6218

CVE-2025-6218

إثبات مفهوم بسيط لـ WinRAR Path Traversal | RCE | CVE-2025-6218

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2025-6218 | ZDI-CAN-27198 | ZDI-25-409 - تجاوز المسار في WinRAR -> تنفيذ التعليمات البرمجية عن بُعد (RCE)

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

معلومات إضافية:

  • https://www.win-rar.com/singlenewsview.html?&L=0
  • https://www.cvedetails.com/cve/CVE-2025-6218/
  • https://www.zerodayinitiative.com/advisories/ZDI-25-409/

ثغرة تنفيذ التعليمات البرمجية عن بُعد عبر تجاوز المسار في RARLAB WinRAR. تسمح هذه الثغرة للمهاجمين عن بُعد بتنفيذ تعليمات برمجية عشوائية على التثبيتات المتأثرة من RARLAB WinRAR. يتطلب استغلال هذه الثغرة تفاعل المستخدم، حيث يجب على الهدف زيارة صفحة ضارة أو فتح ملف ضار.

يكمن الخلل المحدد في معالجة مسارات الملفات داخل ملفات الأرشيف. يمكن لمسار ملف مصمم خصيصًا أن يتسبب في انتقال العملية إلى أدلة غير مقصودة. يمكن للمهاجم استغلال هذه الثغرة لتنفيذ تعليمات برمجية في سياق المستخدم الحالي. كان ZDI-CAN-27198.

نُشر 2025-06-21 00:09:03 تم التحديث 2025-06-23 20:16:22 المصدر Zero Day Initiative

فئة الثغرة: تجاوز المسار | تنفيذ التعليمات البرمجية

إثبات مفهوم بسيط للغاية للثغرة CVE-2025-6218 لتجاوز المسار في WinRAR. (مضمن أيضًا: مجموعتي الأدوات للتلاعب بتنسيق RAR لاختبار الثغرات)

تسلسل تجاوز المسار إلى RCE غير مضمن في إثبات المفهوم، لكن كتابة ملف عشوائي إلى RCE على ويندوز أمر تافه.

أنشئ إثبات المفهوم:

root@kitploit:~
$ python3 cve-2025-6218.py

إذا قمت باستخراج هذا الأرشيف، سيتم استخراج test.txt على مستوى واحد خارج الدليل الحالي.

ينشأ المشكلة من تعارض محدد بين كيفية معالجة المسافات البيضاء وكيفية فحص تجاوزات المسار في ملف WinRAR القابل للتنفيذ حتى الإصدار 7.11:

نسخة مبسطة ومنظفة قليلاً:

root@kitploit:~
void file_name_check(char *a1){
  cur_filename = a1;
  j = 0;
  cur_pos = 0;
  if ( *(a1 + 4) > 0 )
  {
    offset = 0;
    while ( 1 )
    {
      if ( (cur_pos + 1) == cur_filename[2] )
        goto BREAK;
      str = cur_filename;
      if ( cur_filename[3] > 7 )
        str = *cur_filename;
      if ( str[offset + 1] == '\\' || str[offset + 1] == '/' )
      {
BREAK:
        if ( cur_pos >= 0 )
          break;
      }
LOOP_START:
      ++cur_pos;
      ++offset;
      if ( cur_pos >= *(cur_filename + 4) )
        goto LABEL_47;
    }
    while ( 1 )
    {
      if ( str[offset] != '.' )
      {
        if ( str[offset] != ' ' )
          goto LOOP_START;
      }
      if ( !cur_pos )
      {
        if ( str[offset] == ' ' )
        {
          str[offset] = '_';
          goto LOOP_START;
        }
      }
      if ( str[offset] == '.' )
      {
        if ( !cur_pos )
          goto LOOP_START;
        if ( str[offset - 1] == '\\' || str[offset - 1] == '/' )
          goto LOOP_START;
        if ( cur_pos == 2 )
        {
          if ( is_safe_character(cur_filename) )
            goto LOOP_START;
        }
        else if ( cur_pos < 1 )
        {
          goto DELETE;
        }
        if ( str[offset - 1] == '.' )
        {
          if ( cur_pos == 1 )
            goto LOOP_START;
          if ( str[offset - 2] == '\\' || str[offset - 2] == '/' || cur_pos == 3 && is_safe_character(cur_filename) )
            goto LOOP_START;
        }
      }
DELETE:
      delete_char(cur_filename, cur_pos, 1u);
      --offset;
      if ( --cur_pos < 0 )
        goto LOOP_START;
    }
  }

//...
}

بعد الإصدار 7.12:

root@kitploit:~
void __fastcall file_name_check(char **a1){
  cur_filename = a1;
  j = 0;
  if ( *(a1 + 4) > 0 )
  {
    offset = 0;
    fname_index = 1;
    do
    {
      if ( fname_index == cur_filename[2] )
        goto HANDLE_DIR_NEXT;
      str = cur_filename;
      if ( str[offset + 1] == '\\' || str[offset + 1] == '/' )
      {
HANDLE_DIR_NEXT:
        if ( offset >= 0 )
        {
          if ( str[offset] == '.' )
            goto FILENAME_BEGINS;
          if ( str[offset] == ' ' )
          {
FILENAME_BEGINS:
            if ( str[offset] != '.' )
              goto CONT;
            if ( offset )
            {
              if ( str[offset - 1] != '\\'
                && str[offset - 1] != '/'
                && (offset != 2 || !is_safe_character(cur_filename)) )
              {
                if ( str[offset - 1] != '.' )
                  goto CONT;
                if ( offset != 1 )
                {
                  if ( str[offset - 2] != '\\'
                    && str[offset - 2] != '/'
                    && (offset != 3 || !is_safe_character(cur_filename)) )
                  {
CONT:
                    str[offset] = '_';
                  }
                }
              }
            }
          }
        }
      }
      ++j;
      ++offset;
      ++fname_index;
    }
    while ( j < *(cur_filename + 4) );
  }

//...

}
تنزيل الأداة