آسیب پذیری Windbox میکروتیک

آسیب پذیری Winbox میکروتیک

آسیب پذیری Windbox میکروتیک

طی چند روزه گذشته خبری مبنی بر آسیب پذیری Winbox انتشار شده است که  کمپانی Microtik این آسیب پذیری را تایید

و اطلاعاتی را در مورد آن انتشار کرده است.

این آسیب پذیری اجازه ی استخراج پسورد کاربران را می دهد.

در این مطلب توضیحاتی در مورد این آسیب پذیری را شرح می دهیم.

اولین موردی که بررسی می شود ترافیک بین Winbox و دستگاه است.

قبل از هر چیزی رمزگزاری ترافیک را غیر فعال کنید(از منوی Tools>Advance Mode ) بعد در پنجره مورد نظر که شکل زیر می باشد ،

Secure Mode را غیر فعال کرده و تلاش کنید با Wireshark ترافیک بین winbox و دستگاه را بررسی نمایید.

” آسیب پذیری Windbox میکروتیک “

 1-1

**Winbox: نرم افزاری است تحت وب و پایه و اساسی  ویندوزی دارد که مدیران شبکه می توانند برای مدیریت و پیکربندی روتر های OS Base از آن استفاده کنند.**

همانطور که در عکس 2-1  مشاهده می کنید بعد از Authorization یک درخواست برای لیست فایل ها ارسال می شود و اطلاعات کاملا به ما انتقال پیدا می کند.

با دیدی سطحی به نظر مشکلی وجود ندارد، ولی با نگاهی دقیق تر به این Session به نکاتی پی می بریم.

 

 1-2

” آسیب پذیری Windbox میکروتیک ”

ابتدا Winbox بسته مشابه با درخواست لیست ارسال می کند.

1-3

ساختار شکل بالا را در نظر بگیرید:

37010035-1 سایز پکیج

2- M2 مقدار ثابتی که در ابتدای پکت می آید

3- 0500FF01 –متغیر 0xff002 مقدارش درست است

0600ff009 01 -4متقیر 0xff006 مقدار آن 1   (شمارش پکت های دریافت وارسال شده)

0700ff09 07-5 –متغیر 0xff007 مقدار آن 7  (باز کردن فایلی Read Mode )

01000021-6 04 6c967374 –0x01000001 لیست خطی با 4 بایت سایز

0200ff88 02..00-7 که آرایه 0xff0001 با سایز 2 عنصر است

0100ff88 02..00-8 که آرایه 0xff0002 با سایز 2 عنصر است

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

در حال حاضر نحوه کار کردن پروتکل را می دانید ، ما می توانیم بسته های مورد نیاز خود را ساخته و واکنش دستگاه را در مقابل آن ها ببینیم.

در طرف دستگاه ،فایل اجرایی nova/bin/mproxy مسئول پردازش روی پکت ها می باشد.

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

نگاهی به این عملکرد:

1-4

PS کدی که ممکن است برای شما جالب باشد(با فلش نمایش داده شده است)

” آسیب پذیری Windbox میکروتیک ”

مرحله اول

وقتی بسته ای دریافت شود ،عمل باز کردن و خواندن آن در این بلاک شروع می شود :

1-5

” آسیب پذیری Windbox میکروتیک ”

در ابتدای بسته اسم فایل با استفاده از عملکرد nv استخراج می شود.

Nv::massage::get <nv::string_id>()

سپس،عملکرد Tokeniz نتایج رشته ای را به چندین قسمت تقسیم کرده و از “/” برای جدا کردن  آن ها استفاده می کند.

آرایه حاصل شده از رشته ها به تابع path_filter بر می گردد و برای بررسی نتیجه آرایه ی رشته ها از “..” استفاده می شود.

در صورت وجود مشکل ERROR_NOTALLOWED (0Xfe0009) را نمایش می دهد.

1-6

NOTALLOWED در صورت نبود File Permissions به عنوان جواب دریافت می شود

اگر تمامی موارد درست بود،مسیر طی شده برای نام گذاری فایل به Webfig یا pckg directory پیوسته شده است.

مرحله دوم:

1-7

اگر همه چیز به خوبی پیش برود،فایل باز شده و descriptor آن در Global Object  ذخیره می شود.

اگر نتوانیم فایل را باز کنیم،سپس جوابی که به ما برگردانده می شود ERROR :(Can Not Open Source File ) می باشد.

” آسیب پذیری Windbox میکروتیک ”

1-8

برای دیدن جزئیات فایل سه شرط باید در نظر داشت:

1-مسیر فایل شامل “..” نمی شود.

2-انواع دسترسی به فایل وجود دارد

3-فایل وجود دارد و می توان آن را با موفقیت باز کرد

با ارسال چندین بسته می توانید به درست بودن این عملکرد دست پیدا کنید.

$ ./untitled.py -t 192.168.88.1 -f /etc/passwd Error: SYS_ERRNO => ERROR_FAILED Error: SYS_ERRSTR => cannot open source file $ ./untitled.py -t 192.168.88.1 -f /../../../etc/passwd Error: SYS_ERRNO => ERROR_NOTALLOWED $ ./untitled.py -t 192.168.88.1 -f //./././././../etc/passwd Error: SYS_ERRNO => ERROR_FAILED Error: SYS_ERRSTR => cannot open source file

بنابراین موردی عجیب در اینجا وجود دارد،همانطور که می دانید اگر path_filter از آزمایش خود رد شود ERROR_NOTALLOWED نمایش داده می شود ،

در غیر این صورت ما همچنان پیامی در مورد نداشتن Access Rights را دریافت می کنیم.

اما  در حالتی دیگر ، مشخص می شود که فایل در دایرکتوری سطح بالایی جستجو شده است.

این متود را امتحان می کنیم:

$ ./untitled.py -t 192.168.88.1 -f //./.././.././../etc/passwd xvM2        1Enobody:*:99:99:nobody:/tmp:/bin/sh root::0:0:root:/home/root:/bin/sh

این متود کار کرد اما چرا؟نگاهی به کد Path_filter

1-9

با این کد شما به صورت واضح می توانید ببینید که “..” در آرایه ای از رشته ها جستجو شده است

اما جالبتر از آن نکته ای است که آن را در عکس بالا مشخص کرده ایم.

ماهیت این کد به صورتی است که : اگر عنصر قبلی آن نیز “..” باشد بررسی آن با شکست مواجه می شود.

در این صورت در نظر بگیرید که همه چیز خوب است

به همین ترتیب همه چیز به خوبی کار می کند و شما برای رفتن به هر مسیر و هر سطح مسیرFSای فقط  “/./” را با “/../”  جابه جا کنید.

نگاهی به رفع مشکل MICROTIK می اندازیم :

مقایسه کد PSEUDO-C

1-10

” آسیب پذیری Windbox میکروتیک “

در اولین چرخه جستجو “..” رخ می دهد و در حقیقت چرا ورود یک نقطه اضافه تایید شده است.

متاسفانه به دلیل تغییرات در سطح مکانیزم فعال سازی هیچ راهی برای مشاهده آن در حالت dynamic وجود ندارد.

و در آخر

1-OS  روتر پکت ها را قبل از مجوز کاربر هندل می کند

2-با فیلتری اشتباه ما می توانیم به هر فایلی دسترسی داشته باشیم

با توجه به مطالب قبلی ما می توانیم به راحتی عمل های   Create,delete,write,read و ساخت Directory را انجام دهیم.

و همین موارد باعث تعجب است که می توانیم بدون مجوز به هر فایلی دسترسی داشته باشیم و آن را بخوانیم.

اولین موردی که انجام می شود خواندن فایل ها با پسورد کاربران است.اطلاعات زیادی در مورد نحوه پیدا کردن و استخراج آن وجود دارد.

بنابراین این آسیب پذیری می تواند مورد خوبی برای فعال کردن developer mode باشد.

به دلیل اینکه برای reboot کردن دستگاه نیازی به پشتیبانی گیری و بازیابی فایل پیکربندی ندارید.

برای کسب اطلاعات بیشتر با ما تماس حاصل فرمایید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *