تحلیل گامبهگام آسیبپذیری ps_facetedsearch در پرستاشاپ، خطاهای صفحه مدیریت ماژولها، شناسایی وبشلهای Tiny File...
فروشگاهساز پرستاشاپ (PrestaShop) به دلیل سهم بازار بالا، پیوسته از سوی رباتهای خودکار و اکسپلویتهای آماده مورد اسکن قرار میگیرد. ماژولهای پرکاربردی همچون جستجوی لایهای (Faceted Search / ps_facetedsearch) به دلیل تعامل بیواسطه با پارامترهای آدرس مرورگر (URL)، فیلترهای قیمت، شاخهها و مشخصات محصول، یکی از آسیبپذیرترین بخشهای هر فروشگاه به شمار میروند.
در این مقاله تحلیلی و مستند، تمام ابعاد یک رخنه امنیتی واقعی بر پایه آسیبپذیری بحرانی CVE-2026-54159 را بازخوانی میکنیم؛ از رفتار اولیه اسکنر در لاگهای وبسرور، نحوه بارگذاری وبشل و ایجاد کارمند نفوذی در پایگاه داده، تا خطاهای احتمالی در صفحه مدیریت ماژولها و راهحلهای پایدار پیشگیری.
۱. ریشه فنی آسیبپذیری در ps_facetedsearch (تزریق داده و Unserialization ناامن)
در نسخههای آسیبپذیر ماژول (از نسخه 3.0.0 تا 4.0.3)، مقادیر بازههای عددی مانند اسلایدر قیمت و وزن بدون اعتبارسنجی نوعی (Type Cast) یا فیلترسازی دقیق دریافت میشدند. دادههای دریافتی جهت افزایش سرعت پاسخدهی وارد مکانیسم کش داخلی بلوک فیلترها (واقع در src/Filters/Block.php) میشدند.
مشکل اساسی زمانی اتفاق میافتاد که ماژول با استفاده از تابع بومی unserialize() دادههای ذخیرهشده را از کش بازیابی میکرد. این کار امکان راهاندازی زنجیره گجت شیء PHP (PHP Object Injection) و دستیابی به اجرای کد از راه دور (Remote Code Execution - RCE) را فراهم میکرد.
۲. ردگیری گامبهگام حمله در لاگهای خام سرور (Raw Access Logs)
بررسی لاگهای خام سرور روند زمانی و فازهای مختلف حمله را به وضوح نشان میدهد:
فاز اول: اسکن ماژول و خواندن نسخه
مهاجم در این مرحله فایل پیکربندی ماژول را بازخوانی میکند تا فعال بودن و نسخه ماژول را بسنجد:
31.207.7.82 - - [02/Oct/2026:15:33:36 +0330] "GET /modules/ps_facetedsearch/config.xml HTTP/1.1" 200 494 "-" "cve-2026-54159-multi/1.0"
کد پاسخ 200 نشان میدهد فایل config.xml در دسترس بوده و مهاجم از آسیبپذیر بودن ماژول مطمئن شده است.
فاز دوم: تزریق پیلود در فیلترها و استقرار وبشل
ثبت دو درخواست متوالی با فاصله تنها یک ثانیه نشاندهنده موفقیت حمله است:
31.207.7.82 - - [06/Oct/2026:05:22:55 +0330] "POST /modules/ps_tools/ps_tools.php HTTP/1.1" 404 22561 ... 31.207.7.82 - - [06/Oct/2026:05:22:56 +0330] "POST /modules/ps_tools/ps_tools.php HTTP/1.1" 302 0 ...
۳. ماهیت وبشلهای تزریقشده و کارکرد آنها
- پوشه ماژولهای جعلی: ساخت مسیرهایی مانند
modules/ps_tools/ps_tools.php. - تزریق در پوشه قالب: قرار دادن فایلی نظیر
themes/YOUR_THEME/ps_reader.phpکه کپی ابزارهایی مانند Tiny File Manager 2.6 هستند.
۴. خطاهایی که در صفحه مدیریت ماژولها و هنگام دسترسی به شل نمایان میشوند
خطای اول: خطای بارگذاری پیکربندی وبشل (Tiny File Manager)
Tiny File Manager Error: Cannot load configuration
خطای دوم: پاسخ JSON نامعتبر وبشل (unknown op)
{"ok":0,"o":"","e":"dW5rbm93biBvcCA="}
خطای سوم: خطای ارتقای ماژول (Module Upgrade Failure)
There was an error while upgrading module ps_facetedsearch: Could not copy files / unable to clear cache.
خطای چهارم: خرابی بارگذاری کش در هسته ماژول (Fatal Exception)
CRITICAL - Fatal Error: Uncaught Error: Call to a member function getFilters() on bool in .../modules/ps_facetedsearch/src/Filters/Block.php
۵. پایدارسازی دسترسی در دیتابیس (بررسی جدول ps_employee)
مهاجمان بلافاصله یک مدیر جعلی با دسترسی کامل ایجاد میکنند:
- ورود به جدول
ps_employeeو افزودن سطری با نامهای ساختگی (مانند Lukas Meyer). - تنظیم فیلد
id_profile = 1جهت اعطای دسترسی سوپرادمین.
۶. چکلیست گامبهگام پاکسازی و دفع کامل حمله
- مسدودسازی فوری آیپیها در فایروال.
- بررسی و پاکسازی جدول کارمندان: حذف اکانتهای ناشناس از
ps_employee. - حذف فایلها و پوشههای مخرب: حذف
modules/ps_toolsو فایلهای مشکوک در قالبها. - ارتقای ماژول به نسخه 4.0.4+: جایگزینی با نسخه ایمن.
- تخلیه کامل کش پرستاشاپ: حذف محتویات
var/cache/.
۷. پیکربندی پیشگیرانه در فایلهای htaccess
الف) جلوگیری از اجرای کدهای PHP در پوشه قالبها
<FilesMatch "\.(php|phtml|php3|php4|php5|php7|phps)$">
Order Deny,Allow
Deny from all
</FilesMatch>
ب) مسدودسازی خواندن فایلهای XML، متنی و لاگها
<FilesMatch "\.(xml|log|md|txt|sql)$">
Order Deny,Allow
Deny from all
</FilesMatch>
آخرین نظرات