
استغلال PoC لثغرة CVE-2018-11736 التي تؤثر على Pluck CMS في الإصدارات السابقة لـ 4.7.7-dev2، وهي ثغرة رفع ملفات.
إخلاء مسؤولية ⚠️: تم تطوير هذا الاستغلال بلغة Rust بشكل أساسي كتمرين تمهيدي لتعلّم البرمجة. أرجو المعذرة عن أي نقص في الصرامة التقنية أو أنماط الشيفرة غير الاصطلاحية. كما أن هذا الاستغلال ليس من اكتشافي؛ فقد اعتمدت على التقارير الرسمية لكتابته.
استغلال PoC لثغرة CVE-2018-11736 التي تؤثر على إصدارات Pluck CMS السابقة للإصدار 4.7.7-dev2. تكمن الثغرة في /data/inc/images.php، والتي تسمح للمهاجم برفع ملفات عشوائية. من خلال رفع ملف .htaccess خبيث مُموّه بنوع MIME image/jpeg، يمكن إجبار خادم الويب على تفسير ملفات .jpg كنصوص برمجية PHP، مما يؤدي إلى تنفيذ كود PHP عشوائي.
يجب أن يكون لديك Cargo مثبّتًا لتجميع ملف main.rs.
cargo build
وتحتاج إلى جلسة كوكيز مُصادق عليها وصالحة من مثيل Pluck CMS المستهدف:
./CVE-2018-11736 -h
CVE-2018-11736 exploit. Uploads a malicious .htaccess to force the web server to interpret .jpg files as PHP scripts, leading to Remote Code Execution (RCE)
Usage: CVE-2018-11736 --cookie <COOKIE> --base-url <BASE_URL> --hta-path <HTACCESS> --image-path <IMAGE>
Options:
-c, --cookie <COOKIE> Session Cookie (Once you have logged in succesfully). Format: xxxxxxxxxxxx
-u, --base-url <BASE_URL> Base URL (e.g. http://localhost)
-H, --hta-path <HTACCESS> Path to the .htaccess file
-i, --image-path <IMAGE> Path to the fake image file
-h, --help Print help
-V, --version Print version
لضمان قابلية إعادة الإنتاج والاختبار الآمن، يمكن نشر مثيل ضعيف من Pluck CMS v4.7.4-dev5 باستخدام Docker. ولنشره، تحتاج إلى تنزيل ملف الـ .zip الخاص بالإصدار الضعيف:
wget https://github.com/pluck-cms/pluck/archive/refs/tags/4.74-dev5.zip
بعد ذلك، شغّل الأمر التالي في نفس مجلد ملفات Docker:
docker-compose up -d
سيكون تطبيق الويب متاحًا على http://localhost:8080. إذا أردت فتح جلسة TTY داخل الحاوية:
docker exec -it pluck-cms bash
إليك الـ PoC أثناء العمل، حيث يعرض عملية رفع الإعداد الخبيث وتحقيق تنفيذ الأوامر عن بُعد (RCE).