php-fpm میں کمزوری جو سرور پر ریموٹ کوڈ کے نفاذ کی اجازت دیتی ہے۔

دستیاب پی ایچ پی 7.3.11، 7.1.33 اور 7.2.24 کی اصلاحی ریلیز، جس میں ختم کر دیا تنقیدی کمزوری (CVE-2019-11043) PHP-FPM (FastCGI پروسیس مینیجر) ایکسٹینشن میں ہے جو آپ کو سسٹم پر اپنے کوڈ کو دور سے چلانے کی اجازت دیتا ہے۔ Nginx کے ساتھ مل کر پی ایچ پی اسکرپٹ کو چلانے کے لیے PHP-FPM استعمال کرنے والے سرورز پر حملہ کرنے کے لیے، یہ پہلے سے ہی عوامی طور پر دستیاب ہے۔ کارکن۔ استحصال.

حملہ nginx کنفیگریشنز میں ممکن ہے جس میں PHP-FPM میں فارورڈنگ "fastcgi_split_path_info" کا استعمال کرتے ہوئے URL کے حصوں کو تقسیم کرکے اور PATH_INFO ماحولیاتی متغیر کی وضاحت کے ذریعے کیا جاتا ہے، لیکن پہلے "try_files $fastcgi_script_name" کے ساتھ فائل کی موجودگی کی جانچ کیے بغیر۔ ہدایت یا "if (!-f $ document_root$fastcgi_script_name)"۔ سمیت مسئلہ خود ہی ظاہر ہوتا ہے نیکسٹ کلاؤڈ پلیٹ فارم کے لیے پیش کردہ ترتیبات میں۔ مثال کے طور پر، فارم کی تعمیرات کے ساتھ کنفیگریشنز خطرناک ہیں:

مقام ~ [^/]\.php(/|$) {
فاسٹکی_اسپلٹ_پاتھ_ انفو ^ (. +؟ \. پی ایچ پی) (/.*) $؛
fastcgi_param PATH_INFO $fastcgi_path_info؛
fastcgi_pass php:9000؛
}

آپ ان صفحات پر تقسیم میں ٹربل شوٹنگ کی پیروی کر سکتے ہیں: Debian, RHEL, اوبنٹو, سوس/اوپن سوس, FreeBSD, قوس, Fedora. حفاظتی کام کے طور پر، "fastcgi_split_path_info" لائن کے بعد، آپ درخواست کردہ PHP فائل کے وجود کے لیے ایک چیک شامل کر سکتے ہیں:

try_files $fastcgi_script_name =404؛

مسئلہ فائل میں پوائنٹرز کو جوڑتے وقت غلطی کی وجہ سے ہوا ہے۔ sapi/fpm/fpm/fpm_main.c. پوائنٹر تفویض کرتے وقت، یہ فرض کیا جاتا ہے کہ PATH_INFO ماحولیاتی متغیر کی قدر میں لازمی طور پر ایک سابقہ ​​شامل ہو جو PHP اسکرپٹ کے راستے سے میل کھاتا ہو۔
اگر fastcgi_split_path_info ڈائریکٹیو میں ریگولر ایکسپریشن کا استعمال کرتے ہوئے اسکرپٹ کے راستے کو تقسیم کرنے کی وضاحت کی گئی ہے جو کہ نیو لائن کریکٹر کی منتقلی کے لیے حساس ہے (مثال کے طور پر، بہت سی مثالوں میں اسے "^(.+?\.php)(/ استعمال کرنے کی تجویز دی گئی ہے۔ *)$")، پھر حملہ آور PATH_INFO ماحولیاتی متغیر پر خالی قیمت لکھ کر حاصل کر سکتا ہے۔ اس صورت میں، مزید پھانسی کے ساتھ ساتھ کئے گئے path_info[0] کو صفر پر لکھنا اور FCGI_PUTENV کو کال کرنا۔

ایک مخصوص طریقے سے فارمیٹ کیے گئے یو آر ایل کی درخواست کرنے سے، حملہ آور path_info پوائنٹر کو "_fcgi_data_seg" ڈھانچے کے پہلے بائٹ میں منتقل کر سکتا ہے، اور اس بائٹ پر صفر لکھنے سے "char * pos" پوائنٹر کو پہلے جانے والے میموری ایریا میں منتقل کر دیا جائے گا۔ اگلا کہا جانے والا FCGI_PUTENV اس میموری میں موجود ڈیٹا کو اس قدر کے ساتھ اوور رائٹ کر دے گا جسے حملہ آور کنٹرول کر سکتا ہے۔ مخصوص میموری دیگر FastCGI متغیرات کی قدروں کو بھی ذخیرہ کرتی ہے، اور ان کے ڈیٹا کو لکھ کر حملہ آور ایک ڈمی PHP_VALUE متغیر بنا سکتا ہے اور اپنے کوڈ پر عمل درآمد حاصل کر سکتا ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں