آسیبپذیری موجود در OpenEMR
نرمافزار OpenEMR محبوبترین برنامه جهت مدیریت پروندههای پزشکی به صورت الکترونیکی میباشد. این برنامه به زبان فارسی ترجمه شده است و در ایران نیز از آن استفاده میشود.
این نرمافزار به صورت تحت وب و متنباز ارائه شده است و علاوه بر انعطاف پذیری به صورت مستقل از سیستمعامل، با وب سرور و پایگاهداده در ارتباط است. در واقع افراد با دارا بودن دسترسیهای مورد نیاز و یک شبکه محلی میتوانند از این سیستم استفاده کنند.
اخیراً آسیبپذیری Unrestricted File Upload و Code Execution موجود در OpenEMR 5.0.1 به یک مهاجم احراز هویت شده امکان میدهد کدهای php مخرب خود را روی سیستم آسیبپذیر بارگیری و اجرا کند.
اولین قدم در حملات Unrestricted File Upload، دریافت كدی در سیستم برای حمله و سپس اجرای آن کد میباشد. استفاده از بارگذاری فایل به مهاجم امکان میدهد تا اولین مرحله را انجام دهد.
عواقب بارگذاری فایل میتواند متغیر باشد، از جمله تصاحب کامل سیستم، سیستم فایل یا پایگاه داده overload شده، انجام حملاتی در سیستمهای back-end و…
کد PoC
یک کد PoC برای این آسیبپذیری در لینک زیر منتشر شده است:
با توجه به شکل بالا، مهاجم میتواند با استفاده از این کد به سیستم قربانی نفوذ کرده و فایل Shell مخرب خود را در آن بارگذاری کند.
بهرهبرداری
جهت بهرهبرداری از این آسیبپذیری مهاجم با استفاده از درخواست http://[HOST]/controller.php?document&upload&patient_id=00&parent_id=4& میتواند کدهای PHP مخرب خود را بارگذاری کند.
مثالی از استفاده از درخواست ذکر شده در شکل زیر قابل مشاهده میباشد:
استفاده از این درخواست و بارگذاری کدهای PHP مخرب، منجر به اجرای کد از راه دور میشود. پاسخ سرور به درخواست موجود در شکل 2، در شکل زیر قابل مشاهده است:
تصویر سایت پس از بارگذاری shell مخرب در شکل 4 مشاهده میشود: