برچسب: CVE

How I Hacked Facebook Again! Unauthenticated RCE on MobileIron MDM

چگونه دوباره فیس بوک را هک کردم! RCE تأیید نشده در MobileIron MDM

نسخه انگلیسی
中文 版本

سلام ، مدت طولانی از آخرین مقاله من گذشته است. این پست جدید در مورد تحقیقات من در ماه مارس است ، که در مورد چگونگی یافتن نقاط ضعف در یک محصول برجسته مدیریت دستگاه همراه است و محدودیت های زیادی را برای دستیابی به RCE غیرمجاز دور زده است. همه آسیب پذیری ها به فروشنده گزارش شده و در ژوئن رفع شده است. پس از آن ، ما شرکت های بزرگ را پیگیری کردیم تا پیشرفت کلی اصلاح را پیگیری کنیم و سپس دریافتیم که فیس بوک بیش از 2 هفته با پچ همگام نیست ، بنابراین ما پوسته ای را در فیس بوک ریختیم و به برنامه Bug Bounty آنها گزارش دادیم! [19659002] این تحقیق در HITCON 2020 نیز ارائه شده است. شما می توانید اسلایدها را در اینجا بررسی کنید

ما به عنوان یک تیم سرخ ، همیشه به دنبال مسیرهای جدید برای نفوذ به شبکه شرکت ها از خارج هستیم. درست مثل تحقیقات ما در Black Hat USA در سال گذشته ، ما نشان دادیم که چگونه می توان SSL VPN های پیشرو را هک کرد و به شبکه "عمومی" مجازی شما تبدیل شد! SSL VPN مطمئن است که امن است و تنها راه دسترسی به شبکه خصوصی شماست. اما ، اگر لوازم قابل اعتماد شما ناامن باشند چه می کنید؟

بر اساس این سناریو ، ما می خواهیم سطوح جدید حمله را بر روی امنیت شرکت جستجو کنیم و به MDM علاقه مند می شویم ، بنابراین این مقاله برای آن است!

مقاله چیست؟ MDM؟

مدیریت دستگاه موبایل ، همچنین به عنوان MDM شناخته می شود ، یک سیستم ارزیابی دارایی است که BYOD کارمندان را برای شرکت ها قابل کنترل تر می کند. در سال 2012 در پاسخ به افزایش تعداد تبلت ها و دستگاه های تلفن همراه پیشنهاد شد. MDM می تواند تضمین کند که دستگاه ها تحت سیاست شرکت و در یک محیط قابل اعتماد کار می کنند. Enterprise می تواند دارایی ها را مدیریت کند ، گواهینامه ها را نصب کند ، برنامه ها را مستقر کند و حتی دستگاه ها را از راه دور قفل / پاک کند تا از نشت داده جلوگیری کند. در زیر ما برای نشان دادن محصولات مشابه از MDM استفاده می کنیم!

هدف ما

MDM ، به عنوان یک سیستم متمرکز ، می تواند همه دستگاه های کارمندان را مدیریت و کنترل کند. این بدون شک یک سیستم ارزیابی دارایی ایده آل برای یک شرکت در حال رشد است. علاوه بر این ، MDM برای همگام سازی دستگاه ها در سراسر جهان باید به صورت عمومی قابل دسترسی باشد. یک وسیله متمرکز و افشاگر عمومی ، چه چیزی برای هکرها جذابیت بیشتری دارد؟

بنابراین ، ما این سالها شاهد سوers استفاده هکرها و گروههای APT از MDM بوده ایم! مانند قربانیان فیشینگ برای ایجاد MDM به یک سرور C&C از دستگاه های تلفن همراه خود ، یا حتی به خطر انداختن سرور MDM در معرض شرکت برای فشار دادن تروجان های مخرب به همه دستگاه ها. می توانید گزارش Malicious MDM را مطالعه کنید: بیایید این برنامه را توسط تیم Cisco Talos پنهان کنیم و اولین بار در طبیعت دیده می شود – بدافزار برای جزئیات بیشتر از MDM شرکتی به عنوان بردار حمله توسط تیم CheckPoint CPR استفاده می کند!

از موارد قبلی ، ما می دانیم که MDM یک هدف خوب برای هکرها ، و ما می خواهیم در مورد آن تحقیق کنیم. چندین راه حل MDM وجود دارد ، حتی شرکت های مشهوری مانند Microsoft ، IBM و Apple نیز راه حل MDM خود را دارند.

ما راه حل های شناخته شده MDM را لیست کرده و الگوهای مربوطه را در سراسر اینترنت اسکن کرده ایم. ما دریافتیم که رایج ترین MDM ها VMware AirWatch و MobileIron هستند!

بنابراین ، چرا ما MobileIron را به عنوان هدف خود انتخاب کردیم؟ طبق وب سایت رسمی آنها ، بیش از 20،000 شرکت MobileIron را به عنوان راه حل MDM خود انتخاب کرده اند و بیشتر مشتریان ما نیز از آن استفاده می کنند. ما همچنین می دانیم که فیس بوک از سال 2016 سرور MobileIron را در معرض دید قرار داده است. ما Fortune Global 500 را نیز مورد تجزیه و تحلیل قرار داده ایم و بیش از 15٪ را با استفاده و در معرض دید قرار دادن سرور MobileIron خود در بر داشتیم! به همین دلایل ، هدف اصلی ما شد!

از کجا شروع کنیم

از آسیب پذیری های گذشته ، ما فهمیدیم که تعداد زیادی از محققان غواصی در MobileIron وجود ندارد. شاید بردار حمله هنوز ناشناخته باشد. اما گمان می کنیم دلیل اصلی این سخت افزار برای به دست آوردن سخت افزار باشد. هنگام تحقیق در مورد دستگاه ، تبدیل یک تست BlackBox خالص به GrayBox یا آزمایش WhiteBox بسیار حیاتی است. ما زمان زیادی را برای جستجوی انواع اطلاعات در اینترنت صرف کردیم و در پایان با یک بسته RPM مواجه شدیم. این پرونده RPM قرار است بسته آزمایشی برنامه نویس باشد. این پرونده فقط روی یک WebRoot قابل فهرست نشسته و توسط جستجوی Google نمایه سازی شده است.

به هر حال ، پرونده ای برای تحقیق در اختیار ما قرار گرفت. تاریخ انتشار پرونده در اوایل سال 2018 است. به نظر می رسد کمی قدیمی است اما هنوز هم از هیچ چیز بهتر است!

P.S. ما به MobileIron اطلاع داده ایم و پرونده های حساس اکنون حذف شده است.

یافتن آسیب پذیری ها

پس از یک زمان دردناک برای حل جهنم وابستگی ، سرانجام بسته آزمایش را تنظیم کردیم. این م onلفه مبتنی بر جاوا است و سه پورت در معرض آن قرار دارد: رمزگذاری شده در TLS. Apache در جلوی قسمت وب قرار دارد و تمام اتصالات را برای پشتیبانی از پراکسی می کند ، یک Tomcat با Spring MVC در داخل.

به دلیل Spring MVC ، یافتن آسیب پذیری های سنتی مانند SQL Injection یا XSS از یک نمای واحد بنابراین ، این بار بررسی منطق و معماری هدف ماست!

در مورد آسیب پذیری صحبت می کنیم ، دلیل اصلی آن ساده است. تامکت یک وب سرویس را آشکار کرد که ورودی کاربر را با فرمت Hessian حذف می کند. با این حال ، این بدان معنا نیست که ما می توانیم همه کارها را انجام دهیم! تلاش اصلی این مقاله حل این مسئله است ، بنابراین لطفاً بهره برداری زیر را مشاهده کنید.

اگرچه می دانیم که سرویس وب ورودی کاربر را بی نیاز می کند ، اما نمی توانیم آن را فعال کنیم. نقطه پایانی در هر دو قرار دارد:

  • رابط ثبت نام کاربر – https: // mobileiron / mifs / services /
  • رابط مدیریت – https: // mobileiron: 8443 / mics / services /

ما فقط می توانیم از طریق رابط مدیریت ، محرومیت زدایی را لمس کنیم زیرا رابط کاربر دسترسی به وب سرویس را مسدود می کند. این یک ضربه مهم برای ما است زیرا اکثر شرکت ها رابط مدیریتی خود را در معرض اینترنت قرار نمی دهند و آسیب پذیری فقط مدیریتی برای ما مفید نیست بنابراین ما باید تلاش بیشتری کنیم. : (

با بررسی دقیق معماری ، متوجه شدیم که Apache از طریق Rewrite Rules دسترسی ما را مسدود می کند. خوب به نظر می رسد ، درست است؟

 RewriteRule  ^ / mifs / services /(.*)$ https: //٪ {SERVER_NAME }: 8443 / mifs / services / $ 1 [R=307,L]
 RewriteRule  ^ / mifs / services [F]

MobileIron برای جلوگیری از دسترسی به وب سرویس به قوانین بازنویسی Apache متکی بود. این در مقابل معماری پروکسی معکوس است ، و backend یک وب سرور مبتنی بر جاوا است.

آیا چیزی به خاطر آورده اید؟

بله ، Breaking Parser Logic! این سطح حمله پروکسی معکوس است که من در سال 2015 پیشنهاد کردم و در Black Hat USA 2018 ارائه شد. این روش از ناسازگاری بین Apache و Tomcat برای دور زدن کنترل ACL و دسترسی مجدد به سرویس وب استفاده کنید. BTW ، این روش عالی همچنین در مورد آسیب پذیری اخیر F5 BIG-IP TMUI RCE نیز اعمال می شود!

 https: // mobileiron / mifs /. ؛ / services / someService

بهره برداری از آسیب پذیری ها

بسیار خوب ، اکنون هر کجا که باشد در رابط ثبت نام یا رابط مدیریت ، می توانیم به محرومیت زدایی دسترسی پیدا کنیم. بیایید به بهره برداری ها برگردیم!

موریتس بچلر یک تحقیق عالی دارد که خلاصه آسیب پذیری هسیان را در مقاله سفید خود ، Java Unmarshaller Security خلاصه می کند. از کد منبع marshalsec ، می فهمیم که deserialization هسی باعث ایجاد hashcode () و hashcode () هنگام بازسازی HashMap همچنین می تواند را به [String() از طریق XString تحریک کند ، و ابزارهای شناخته شده تاکنون عبارتند از: ] ROME EqualsBean / ToStringBean

در محیط خود ، ما فقط می توانستیم زنجیره ابزار Spring AOP را ایجاد کرده و یک تزریق JNDI دریافت کنیم.

نام اثر
x Apache XBean JNDI Injection
x رزین كوچو JNDI تزریق ] ] Spring AOP JNDI Injection
x ROM EqualsBean RCE

هنگامی كه تزریق JNDI انجام دهیم ، بقیه قسمت های بهره برداری آسان است! ما فقط می توانیم از Alvaro Muñoz و Oleksandr Mirosh کار ، یک سفر از JNDI / LDAP به Remote Code Execution Dream Land ، از Black Hat USA 2016 استفاده کنیم تا کد را اجرا کنیم … درست است؟

از زمان Alvaro Muñoz و Oleksandr Mirosh این مورد را روی Black Hat معرفی كردند ، می توان گفت كه این روش به تعداد بیشماری از محققان امنیتی كمك می كند و از بین بردن جاوا برای شما مفید است. آسیب پذیری در دوره جدید. با این حال ، جاوا سرانجام آخرین پازل JNDI / LDAP را در اکتبر 2018 کاهش داد. پس از آن ، همه نسخه های جاوا بالاتر از 8u181 ، 7u191 و 6u201 دیگر نمی توانند کد را از طریق بارگیری کلاس URL از راه دور JNDI دریافت کنند. بنابراین ، اگر ما در جدیدترین MobileIron از محرومیت زدایی از هسی استفاده کنیم ، باید با این مشکل روبرو شویم!

جاوا مقدار پیش فرض com.sun.jndi.ldap.object.trustURLCodebase را به تغییر داد برای جلوگیری از بارگیری مهاجم از راه دور کلاس URL برای دریافت کد اعدام. اما فقط این منع شده است. ما هنوز هم می توانیم JNDI را دستکاری کرده و مرجع نامگذاری را به یک کلاس محلی جاوا هدایت کنیم!

این مفهوم کمی شبیه به برنامه نویسی بازگشت گرا است و با استفاده از کلاس جاوا محلی موجود برای بهره برداری بیشتر. برای جزئیات بیشتر می توانید به مقاله بهره برداری از تزریق JNDI در جاوا توسط Michael Stepankin در اوایل سال 2019 مراجعه کنید. این حمله به بهره برداری های POST-JNDI و نحوه سو abuse استفاده از Tomcat's BeanFactory برای پر کردن ابزار ELProcessor برای اجرای کد را توصیف می کند. بر اساس این مفهوم ، محقق ولکین همچنین ابزار دیگری ParseClass را در Groovy ارائه می دهد. همانطور که در مقاله (چینی) وی شرح داده شده است:

除了 javax.el.EL پردازنده , 当然 也 很多 其他 的 类 符合 条件 可以 作为 beanClass 注入 an BeanFactory 机器 利用 利用 举 个 , 如果 目标 机器 طبقه کلاس之前 库 则 可以 结合 之前 نارنجی 师傅 发 过 en جنکینز 的 漏洞 实现 利用

به نظر می رسد بهره برداری از برنامه نویسی متا در تحقیقات قبلی من در مورد جنکینز نیز می تواند در اینجا مورد استفاده قرار گیرد. این برنامه Meta Programming را دوباره عالی می کند: D

این روش فوق العاده است و برای ما عملی به نظر می رسد. اما هر دو ابزار ELProcessor و ParseClass به دلیل قدیمی بودن کتابخانه های هدف ما در دسترس نیستند. تامکت [8] از 8.5 ELProcessor را معرفی کرد اما هدف ما 7 است. در مورد گرووی Groovy ، نسخه Groovy مورد نظر برای پشتیبانی از برنامه نویسی Meta بسیار قدیمی است (1.5.6 از سال 2008) ، بنابراین ما هنوز مجبور هستیم یک ابزار جدید توسط خودمان پیدا کنیم. در پایان یک ابزار جدید در GroovyShell پیدا کردیم. اگر علاقه مند هستید ، می توانید درخواست Pull را که من برای پروژه JNDI-Injection-Bypass ارسال کردم بررسی کنید! GroovyShell . زمان هک کردن فیس بوک است!

پیش گفته ، ما می دانستیم که فیس بوک از MobileIron از سال 2016 استفاده می کند. اگرچه پاسخ های ایندکس سرور 403 اکنون ممنوع است ، اما سرویس وب همچنان قابل دسترسی است! برای بهره برداری ما! با این حال ، چند روز قبل از حمله برنامه ریزی شده ، متوجه شدیم که یک مشکل اساسی در بهره برداری ما وجود دارد. از آخرین باری که در فیس بوک ظاهر شد ، متوجه شدیم که به دلیل نگرانی های امنیتی ، ارتباطات خروجی را مسدود می کند. اتصال خروجی برای JNDI Injection امری حیاتی است زیرا هدف این است که قربانیان را برای انجام سو further استفاده های بعدی به یک سرور مخرب متصل کنند. اما اکنون ، ما حتی نمی توانیم یک ارتباط خروجی برقرار کنیم ، نیازی به ذکر دیگران نیست.

تا کنون ، تمام سطوح حمله به تزریق JNDI بسته شده است ، ما چاره ای نداریم جز بازگشت به محروم سازی هسی. . اما به دلیل کمبود اسبابک های موجود ، باید مورد جدیدی را خودمان کشف کنیم!

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

نمی توان روش Groovy's MethodClosure را بازیابی کرد همانطور که readResolve () خوانده می شود که یک استثنا را ایجاد می کند.

یک سوال به سرعت در ذهن من ایجاد شد: چرا نویسنده این مقاله را ترک کرده است اینجا کلمه؟ اگرچه به استثناها شکست خورده است ، اما باید چیز خاصی وجود داشته باشد تا نویسنده این مطلب را بنویسد.

هدف ما با یک گرووی بسیار قدیمی در حال اجرا است ، بنابراین ما حدس می زنیم که ممکن است محدودیت readResolve () هنوز به پایگاه کد اعمال نشده است! ما پرونده groovy / runtime / MethodClosure.java را بین آخرین و 1.5.6 مقایسه کردیم.

 $   diff   1_5  _6  /  بسته شدن روش [19659081].  java   3_0  _4  /  روش بسته شدن .  java 

>       خصوصی  شی ()   {
>           اگر   ( ALLOW_RESOLVE ]   {
>               بازگشت 

] } > پرتاب جدید UnsupportedOperationException ()؛ > }

بله ، حق با ماست. ALLOW_RESOLVE در Groovy 1.5.6 وجود ندارد و بعداً فهمیدیم كه CVE-2015-3253 فقط برای این منظور است. این یک تخفیف برای افزایش آسیب پذیری مایکروسافت جاوا در سال 2015 است. از آنجا که Groovy یک کتابخانه داخلی است ، اگر موارد اضطراری وجود نداشته باشد ، توسعه دهندگان آن را به روز نمی کنند. Groovy منسوخ شده همچنین می تواند یک مطالعه موردی خوب باشد تا نشان دهد چگونه یک جز بی ضرر می تواند شما را در معرض خطر قرار دهد!

البته سرانجام ما این پوسته را در فیس بوک گرفتیم. این ویدیو است:

گزارش آسیب پذیری و پچ

ما تمام تحقیقات را در ماه مارس انجام داده ایم و مشاوره را در 3/4 به MobileIron ارسال کرده ایم. MobileIron وصله را در 15/6 منتشر کرد و برای این امر به سه CVE پرداخت.

  • CVE-2020-15505 – اجرای کد از راه دور
  • CVE-2020-15506 – احراز هویت احراز هویت
  • CVE-2020-15507 – خواندن خودسرانه پرونده

پس از وصله ، می توانید وب سایت رسمی را بررسی کنید! منتشر شده است ، ما نظارت بر اینترنت را برای پیگیری پیشرفت کلی اصلاح شروع می کنیم. در اینجا ما سربرگ آخرین اصلاح شده را در پرونده های استاتیک بررسی می کنیم تا نتیجه فقط برای اطلاعات شما باشد. (ناشناخته مخفف سرور است که هر دو پورت 443 و 8443 را بسته است)

در همان زمان ، توجهات خود را در فیس بوک نیز حفظ می کنیم. با تأیید 15 روز بدون وصله ، ما سرانجام پوسته ای ایجاد کردیم و در 7/2 به برنامه Bug Bounty آنها گزارش دادیم!

نتیجه گیری

تاکنون ، ما یک RCE کاملاً غیرمجاز در MobileIron نشان داده ایم. از نحوه دریافت سیستم عامل ، یافتن آسیب پذیری و دور زدن کاهش JNDI و محدودیت شبکه. داستان های دیگری نیز وجود دارد ، اما با توجه به گذشت زمان ، ما در اینجا موضوعاتی را برای علاقمندان ذکر کرده ایم: 2020-15506 ، یک بای پس احراز هویت جالب

امیدوارم که این مقاله بتواند توجه را به MDM و اهمیت امنیت شرکت جلب کند! با تشکر از شما برای خواندن : D

.

看我如何再一次駭進 Facebook,一個在 MobileIron MDM 上的遠端程式碼執行漏洞!

ببینید که چگونه من دوباره به فیس بوک نفوذ کردم ، یک آسیب پذیری اجرای کد از راه دور در MobileIron MDM!

نسخه انگلیسی
نسخه چینی

سلام! مدتهاست که نمی بینم ، این تحقیق من در ابتدای سال جاری است ، که می گوید چگونه می توان آسیب پذیری های یک محصول معروف مدیریت دستگاه تلفن همراه را پیدا کرد و لایه های محافظت را برای دستیابی به برنامه های از راه دور دور کرد داستان اجرای کد! پس از گزارش این آسیب پذیری ، پچ رسمی در ماه ژوئن منتشر شد و به مشتریان آنها فورا اطلاع داده شد. ما همچنین دریافتیم که 15 روز پس از انتشار پچ ، فیس بوک به موقع به روز نشده است ، بنابراین ما سرور را از طریق این آسیب پذیری به دست آوردیم گزارش آن را به فیس بوک گزارش دهید!

این تحقیق در HITCON 2020 نیز منتشر شده است و شما می توانید یک نمایش اسلایدی از این سخنرانی را در اینجا دریافت کنید!

ما به عنوان یک تیم قرمز حرفه ای ، همیشه به دنبال یک سریع تر هستیم بهترین راه برای ورود به اینترانت شرکتی از خارج! مانند تحقیق ما که سال گذشته در Black Hat USA منتشر شد ، SSL VPN البته در شبکه خارجی قرار می گیرد و به زیرساختی تبدیل می شود که از امنیت شبکه محافظت می کند و به کارمندان اجازه می دهد به شبکه داخلی دسترسی پیدا کنند. تجهیزات مورد اعتماد شما و مورد استفاده برای محافظت از امنیت شما دیگر ایمن نیستند ، چه کاری باید انجام دهید؟

از این طریق ، ما به دنبال آسیب پذیری های جدید شبکه های شرکتی هستیم که می تواند به عنوان حملات تیم قرمز ما محسوب شود. با نفوذ به نقطه ورود اولیه شرکت ، در طی مراحل تحقیق به MDM / UEM علاقه مند شدیم ، و این مقاله نتیجه تحقیق ایجاد شده از آن زمان است!

MDM / UEM چیست؟

مدیریت دستگاه تلفن همراه ، در حدود سال 2012 ، هنگامی که تلفن های همراه شخصی و دستگاه های رایانه لوحی شروع به ظهور می کنند ، به اختصار MDM نامیده می شود ، برای اینکه شرکت ها بتوانند دستگاه های BYOD کارمندان را بهتر مدیریت کنند ، سیستم موجودی دارایی ایجاد شد. شرکت ها می توانند از محصولات MDM برای مدیریت دستگاه های تلفن همراه کارمندان استفاده کنند. اطمینان حاصل کنید که دستگاه فقط تحت یک محیط و خط مشی قابل اعتماد اجرا می شود. شما همچنین می توانید برنامه ها را نصب کنید ، گواهینامه ها را نصب کنید و حتی از راه دور دارایی های شرکت را از سرور نقطه پایانی مرکزی برای تلفن همراه کنترل شده کنترل کنید تا دارایی های شرکت را مدیریت کند. همچنین می تواند در هنگام گم شدن دستگاه مورد استفاده قرار گیرد. برای دستیابی به حریم خصوصی شرکت و بدون نشت ، از MDM برای قفل کردن یا پاک کردن کل داده های دستگاه از راه دور استفاده کنید!

UEM (مدیریت نقطه پایان یکپارچه) اصطلاحی است که در سال های اخیر به روز شده است و هسته اصلی آن همه دستگاه های تلفن همراه است مدیریت ، اما اصطلاح UEM شامل تعریف وسیع تری از دستگاه است! ما در زیر از اصطلاح MDM برای اشاره به محصولات مشابه استفاده خواهیم کرد.

هدف ما

به عنوان یک سیستم کنترل نقطه پایانی متمرکز ، MDM می تواند تمام وسایل شخصی کارمندان خود را کنترل و مدیریت کند! این قطعاً بهترین محصول موجودی دارایی برای شرکت های در حال رشد است. بله ، این نیز برای هکرها است! برای مدیریت اتصال دستگاه های کارمند از سراسر جهان ، MDM مجبور است در معرض اینترنت قرار گیرد. دستگاهی که می تواند "دستگاه های کارمند را مدیریت کند" و "آن را در شبکه خارجی قرار دهد" بدون شک بهترین کانال نفوذ برای تمرینات تیم قرمز ما است!

علاوه بر این ، یافتن MDM از روندهای امنیتی در سال های اخیر کار دشواری نیست. به تدریج به هدف ترجیحی هکرها و سازمان های APT تبدیل شوید! قربانیان را وادار کنید که با MDM مخرب موافقت کنند تا به سرور C&C دستگاه شما تبدیل شوند ، یا به سادگی به تجهیزات MDM این شرکت در شبکه خارجی حمله کرده و اسب های تروای دستگاه همراه را برای آلوده کردن همه شرکت ها به صورت دسته ای ارسال کنند. تلفن های همراه و رایانه های کارمندان برای دستیابی به حملات بیشتر! اینها به حقیقت تبدیل شده اند. برای گزارش های دقیق ، به MDM مخرب مراجعه کنید: بیایید این برنامه را که توسط تیم Cisco Talos منتشر شده پنهان کنیم و برای اولین بار در بدافزارهای وحشی منتشر شده توسط تیم CheckPoint CPR مشاهده شود. MDM شرکتی به عنوان بردار حمله!

از موارد قبلی ، ما دریافتیم که MDM نقطه خوبی برای امنیت شرکت است ، بنابراین ما شروع به مطالعه سطح حمله مرتبط کردیم! و فروشندگان MDM زیادی در بازار وجود دارد ، تولید کنندگان عمده مختلفی از جمله مایکروسافت ، IBM و حتی اپل محصولات MDM خود را راه اندازی کرده اند. برای شروع تحقیقات خود کدام یک را انتخاب کنیم؟

بنابراین ، ما از طریق اطلاعات عمومی محصولات MDM رایج را در بازار لیست کردیم و با هر یک همکاری کردیم Home Feature در همه جای دنیا اسکن انجام داد و دریافت که MDM بیشتر مورد استفاده شرکت ها VMware AirWatch و MobileIron است! در مورد اینکه کدام یک را مطالعه کنیم؟ ما مورد دوم را انتخاب کردیم ، با این تفاوت که بیشتر مشتریان از MobileIron استفاده می کنند علاوه بر این ، یکی دیگر از مواردی که من را به خود جلب می کند این است که فیس بوک مشتری آنها نیز هست! از تحقیقات How I Hacking Facebook، and Found Someone's Backdoor Script که در سال 2016 منتشر کردیم ، دریافتیم که Facebook از MobileIron به عنوان راه حل MDM خود استفاده می کند! [19659002] طبق شرح وب سایت رسمی MobileIron ، حداقل 20000 شرکت بیش از MobileIron را به عنوان محلول MDM خود استفاده می کنند. طبق اسکن های واقعی ما در جهان ، حداقل 15٪ از شرکتهای Fortune 500 از MobileIron و در معرض اینترنت (در واقع باید موارد بیشتری وجود داشته باشد) ، بنابراین ، یافتن آسیب پذیری MobileIron به هدف اصلی ما تبدیل شده است! [19659015] نحوه شروع تحقیق

از آسیب پذیری هایی که در گذشته ظاهر شده است ، می توان فهمید که MobileIron توسط تعداد زیادی از پرسنل امنیتی مورد مطالعه قرار نگرفته است. دلیل این امر این است که بردار حمله MDM به طور گسترده ای شناخته نشده است و دلیل دیگر این است که سیستم عامل مربوط به MobileIron بسیار بزرگ است. به سختی می توان به دست آورد ، بزرگترین مشکل در مورد تحقیق در مورد دستگاه این است که چگونه از یک جعبه سیاه خالص به یک جعبه خاکستری قابل تجزیه و تحلیل یا حتی یک جعبه سفید برویم! از آنجا که نمی توان سیستم عامل را از وب سایت رسمی بارگیری کرد ، چندین روز صرف کلمات کلیدی مختلف در اینترنت کردیم در جستجوی اطلاعات عمومی موجود ، سرانجام در دایرکتوری ریشه یکی از وب سایت های عمومی نمایه شده توسط جستجوی Google یافت شد که این یک بسته RPM مشکوک است که توسط توسعه دهنده برای آزمایش استفاده شده است.

سیستم عامل بارگیری شده نسخه در ابتدای سال 2018 است. مدت زیادی از اکنون گذشته است. شاید کد اصلی نیز بسیار تغییر کرده باشد ، اما بهتر از هیچ چیز است ، بنابراین ما از این شروع می کنیم بایگانی ها شروع به مطالعه کردند.

اظهارات: وب سایت توسعه دهنده پس از اطلاع مقام رسمی MobileIron بسته شده است.

نحوه یافتن آسیب پذیری ها

کل MobileIron از جاوا به عنوان زبان اصلی توسعه استفاده می کند و درگاه های باز 443 ، 8443 ، 9997 هستند و عملکردهای مربوط به هر درگاه به شرح زیر است:

  • 443 رابط ثبت دستگاه کاربر است
  • 8443 رابط مدیریت دستگاه است
  • 9997 یک پروتکل هماهنگ سازی دستگاه اختصاصی MobileIron است (پروتکل MI)

هر سه پورت از TLS برای محافظت از امنیت و یکپارچگی اتصال استفاده می کنند و قسمت وب از طریق Proxy Reverse Apache است این معماری اتصال را به قسمت عقب هدایت می کند ، که توسط برنامه وب مستقر شده توسط Tomcat اداره می شود و برنامه وب توسط Spring MVC توسعه یافته است.

به دلیل معماری فنی نسبتاً جدیدی كه به كار رفته است ، یافتن انواع سنتی آسیب پذیری مانند SQL Injection نیز از یك نقطه دشوارتر است. بنابراین ، شناخت منطق برنامه و همكاری با حملات سطح معماری این بار جستجوی آسیب پذیری ما شده است. هدف اصلی این زمان!

این آسیب پذیری نیز بسیار ساده است ، عمدتاً به این دلیل که وب سرویس از فرمت Hessian برای پردازش داده ها استفاده می کند و بنابراین از ضعف زدایی زدایی برخوردار است! اگرچه این آسیب پذیری را می توان با یک جمله توضیح داد ، اما کسانی که آن را می فهمند می دانند که چگونه سیستم مورد نیاز را حذف کنند این بدان معنا نیست که شما می توانید هر کاری انجام دهید ، استفاده بعدی مکان فوق العاده است!

اکنون مشخص شده است که MobileIron در پردازش وب سرویس دارای یک آسیب پذیری حذف هسی از نوع هسی است! اما وجود این آسیب پذیری به این معنی نیست که ما با این آسیب پذیری روبرو شده ایم مسیرهایی که می توانند محرومیت زدایی از هسی را تحریک کنند عبارتند از:

  • رابط کاربر عمومی – https: // mobileiron / mifs / services /
  • رابط مدیریت – https: // mobileiron : 8443 / mifs / services /

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

با دقت روش مسدودسازی MobileIron را مشاهده کنید و دریافت که با استفاده از قوانین بازنویسی در Apache از دسترسی به رابط کاربری عمومی وب سرویس:

 RewriteRule  ^ / mifs / services / ( . *) $ https: //٪ {SERVER_NAME}: 8443 / mifs / services / $ 1 [R=307,L]
 RewriteRule  ^ / mifs / services [F]

خوب ، عالی! از معماری Reverse Proxy استفاده کنید و در لایه جلویی است آیا مسدود می کنید ، آیا به چیزی فکر می کنید؟

درست است! این در سال 2015 کشف شد و در Black Hat USA 2018 منتشر شد جدول سطح حمله جدید برای معماری Reverse Proxy ، Breaking Parser Logic! این روش عالی اخیراً در اجرای کد از راه دور CVE-2020-5902، F5 BIG-IP TMUI نیز استفاده شده است!

از طریق Apache با درک تامکت از مسیرها متناقض است ، ما می توانیم قانون بازنویسی را دور بزنیم و با استفاده از روش های زیر دوباره به وب سرویس حمله کنیم!

 https: // mobileiron / mifs /.؛ / services / someService

لمس! بنابراین حالا چه رابط مدیریت 8443 باشد یا رابط کاربری عمومی 443 ، همه ما می توانیم با رفع نیاز به هسی به وب سرویس برخورد کنیم!

نحوه استفاده از این آسیب پذیری

حال بیایید برگردیم برای استفاده از شیرین سازی هسیان! برای رفع خلع سلاح هسی ، موریتس بچلر گزارش امنیتی بسیار مفصلی را در Java Unmarshaller Security خود تهیه کرده است! از منبع منبع باز marshalsec ، ما همچنین فهمیدیم که هسیان معکوس است علاوه بر راه اندازی hashcode () و hashcode () از طریق HashMap در طی فرآیند سریال سازی ، می توانید از XString برای رشته toString () استفاده کنید ، و در حال حاضر چهار زنجیره استفاده برای شیرین سازی هسی وجود دارد: فقط AOP بهاره قابل تحریک است!

نام اثر
x Apache XBean تزریق JNDI
x رزین كوچو JNDI تزریق
Spring AOP تزریق JNDI
x ROME برابر 19659050] 19199090] چگونه ، پس از تزریق JNDI ، فقط باید از Alvaro Muñoz و Oleksandr Mirosh عبور کنیم سفری از JNDI / LDAP به اجرای کد از راه دور Dream Land که در Black Hat USA 2016 منتشر شده است می تواند اجرای کد از راه دور را بدست آورد … Gan Anai؟

از Alvaro Muñoz و Oleksandr Mirosh بعد از اینکه Black Hat این ناقل حمله جدید را منتشر کرد ، من نمی دانم که به چه تعداد هکر بزرگ و کوچک به آنها کمک کرده است. برخی حتی فکر می کنند که "اگر با لغو رفع مشکل مواجه شدید ، برای ارسال از JNDI استفاده کنید درست است! "اما از اکتبر 2018 ، جاوا سرانجام آخرین قطعه تزریق JNDI را برطرف کرد. این رفع در CVE-2018-3149 ثبت شده است. از آن زمان ، همه جاوا بالاتر از 8u181 ، 7u191 ، نسخه 6u201 نمی تواند کد را از طریق JNDI / LDAP اجرا کند ، بنابراین اگر می خواهیم حمله به آخرین نسخه MobileIron را اجرا کنیم ، حتماً با این مشکل روبرو خواهیم شد!

در مورد CVE-2018-3149 ، این از طریق [19459020مقدارپیشفرض] com.sun.jndi.ldap.object.trustURLCodebase به False تغییر داده می شود تا مهاجمان از بارگیری Bytecode برای دریافت کد اجرا جلوگیری کنند.

خوشبختانه ، ما همچنان می توانیم از مرجع نامگذاری JNDI به كارخانه Class موجود این دستگاه استفاده كنیم! از طریق مفهومی مشابه برنامه نویسی بازگشت گرا ، می توانیم كلاس های موجود در classPath این دستگاه را برای استفاده بیشتر پیدا كنیم. برای جزئیات ، لطفاً به Exploiting JNDI Injections in Java منتشر شده توسط Michael Stepankin در آغاز سال 2019 مراجعه كنید ، كه به طور مفصل نحوه بارگیری ELProcessor از طریق Tomcat’s BeanFactory را شرح می دهد. به اجرای خودسرانه کد دست پیدا کنید!

به نظر می رسد این جاده صاف است ، اما در واقع کمی بدتر است. از آنجا که ELProcessor فقط پس از تامکت 8 معرفی شد ، روش بای پس فوق فقط ما فقط می توانیم در نسخه ای از تامکت بزرگتر از 8 موفق شویم و هدف ما تامکت 7.x است ، بنابراین باید یک زنجیره استفاده جدید برای BeanFactory پیدا کنیم! پس از جستجو ، متوجه شدیم که Welkin's همانطور که در مقاله ذکر شد:

البته علاوه بر javax.el.ELProcessor ، کلاسهای زیادی نیز وجود دارد که شرایط را دارند و می توانند به عنوان beanClass برای استفاده به BeanFactory تزریق شوند. به عنوان مثال ، اگر یک کتابخانه groovy در مسیر کلاس ماشین هدف وجود دارد ، می توانید از آسیب پذیری Jenkins ارسال شده توسط Master Orange

استفاده کنید. ClassPath هدف فقط Groovy را دارد! بنابراین ما برنامه نویسی Meta را دوباره عالی کردیم: D

با این حال ، در واقع ، نسخه Groovy در سرور هدف 1.5.6 است ، نسخه ای که برای پشتیبانی از برنامه نویسی Meta ده سال پیش خیلی قدیمی است ، بنابراین ما سرانجام یک نسخه را بر اساس کد Groovy پیدا کردیم زنجیره بهره برداری در GroovyShell ! برای جزئیات استفاده از زنجیره ، لطفاً به درخواست Pull که برای JNDI-Injection-Bypass ارسال کرده ام مراجعه کنید! JNDI + BeanFactory + GroovyShell آسیب پذیری اجرای کد از راه دور کامل ، بیایید شروع به حمله به فیس بوک کنیم! همانطور که در بالا ذکر شد ، ما آن را در سال 2016 می شناسیم فیس بوک از MobileIron به عنوان راه حل MDM خود استفاده می کند. اگرچه دوباره بررسی شد و مشخص شد که صفحه اصلی 403 ممنوع شده است ، خوشبختانه لایه سرویس وب مسدود نشده است!
s

آماده شد ، فقط مدیون باد! فقط چند روز قبل از این که قصد حمله به فیس بوک را داشته باشیم ، ناگهان فکر کردیم که از آخرین باری که وارد سرور فیس بوک شدیم ، به دلیل ملاحظات امنیتی ، به نظر می رسد فیس بوک تمام ارتباطات غیرقانونی با خارج را ممنوع می کند. این درست است. حمله تزریق JNDI ما تأثیر مهمی دارد! اول از همه ، هسته اصلی تزریق JNDI اتصال به یک سرور مخرب است که توسط مهاجم از طریق قربانی کنترل می شود و یک سری سو explo استفاده های ناشی از مرجع نامگذاری مخرب را دریافت می کند. اما اکنون حتی اتصال اولیه به سرور مخرب مهاجم نیز امکان پذیر نیست ، چه رسد به استفاده بعدی.

از آن زمان ، راه تزریق JNDI به طور كامل مسدود شده است ، ما فقط می توانیم به محرومیت زدایی Hessian برگردیم و تجدید نظر كنیم! و زنجیره استفاده موجود نمی تواند به اجرای كد از راه دور دست یابد ، بنابراین ما

برای پیدا کردن یک زنجیره استفاده جدید ، ابتدا باید اصول و دلایل زنجیره استفاده موجود را عمیقا درک کنیم. پس از بازخوانی مقاله امنیت Java Unmarshaller ، من در مورد یک جمله کنجکاو شدم:

نمی توان روش Groovy MethodClosure را بازیابی کرد همانطور که readResolve () نامیده می شود که یک استثنا را ایجاد می کند.

اوه ، چرا نویسنده این جمله را به طور خاص اضافه کرده است؟ من شروع کردم به حدس زدن:

نویسنده امکان استفاده از Groovy را به عنوان یک زنجیره استفاده ارزیابی کرده است. اگرچه محدود است ، اما باید احساس کنم فرصتی برای نوشتن آن در مقاله وجود دارد!

با شروع این حدس ، گرچه زنجیره استفاده از Groovy است. readResolve () محدود شده است ، اما نسخه هدف ما از Groovy بسیار قدیمی است ، شاید این محدودیت به کتابخانه اضافه نشده باشد!

ما Groovy-1.5.6 را با آخرین نسخه واقع در groovy مقایسه کردیم اجرای readSolve () در /runtime/MethodClosure.javacepts19459021]:

 $   diff   1_5  _6  /  روش بسته شدن   java   3_0  _4  /  روش بسته شدن .  java 

>       خصوصی   شی   بخوانید حل  [19659098] {
>           اگر   ( اجازه_ RESOLVE ]   {
>               بازگشت   این  ؛ 
>          } 
>           پرتاب   جدید 

] پشتیبانی نشده 19659083] ()؛ > }

می توان دریافت که در واقع هیچ محدودیتی در ALLOW_RESOLVE در نسخه قدیمی وجود ندارد. بعداً ، پس از باستان شناسی ، مشخص شد که این محدودیت در واقع اقدامات تخفیف خود گرووی در پاسخ به آسیب پذیری مایکروسافت برای جاوا است که در سال 2015 ظاهر شد. بنابراین ، شماره آسیب پذیری CVE-2015-3253 نیز به آن اختصاص داده شد! از آنجا که Groovy تنها نقش حمایتی کوچکی است که فقط از داخل استفاده می شود و از آن استفاده خارجی نمی شود ، توسعه دهندگان آن را به ویژه بدون نیازهای خاص به روز نمی کنند ، بنابراین به ما تبدیل شده است یک حلقه در زنجیره حمله! این همچنین یک بار دیگر ثابت می کند که "هر جز small کوچک به ظاهر ناچیز ممکن است دلیل اصلی حمله شما شود"!

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

اعلان آسیب پذیری و تعمیر

ما در ماه مارس کل تحقیق درباره آسیب پذیری را به اتمام رساندیم و نتایج تحقیق را در تاریخ 4/3 در یک گزارش نوشتیم و از طریق [email protected] آن را به MobileIron گزارش دادیم! دریافت رسمی پس از آن ، تعمیر آغاز شد. وصله در تاریخ 6/15 منتشر شد و سه شماره CVE ثبت شد. برای روش های دقیق تعمیر ، به وب سایت رسمی MobileIron مراجعه کنید!

  • CVE-2020-15505-اجرای کد از راه دور
  • CVE-2020- 15506-احراز هویت بای پس
  • CVE-2020-15507-خواندن خودسرانه پرونده

پس از انتشار رسمی پچ ، ما همچنین شروع به نظارت بر وضعیت تعمیر همه شرکت های استفاده کننده از MobileIron در جهان کردیم. در اینجا فقط پرونده های استاتیک را بررسی می کنیم آخرین اصلاح شده هدر ، نتیجه فقط برای مرجع است و به طور کامل وضعیت واقعی را نشان نمی دهد (ناشناخته به این معنی است که 443/8443 بدون باز شدن قابل استفاده نیست):

در همان زمان ، ما همچنین به نظارت بر فیس بوک ادامه می دهیم ، و پس از 15 روز تأیید عدم وصله ، آنها با موفقیت در 7/2 وارد سرور فیس بوک شده و برنامه Facebook Bug Bounty را گزارش دادند!

نتیجه گیری

تاکنون ، ما با موفقیت نشان داده ایم که چگونه یک آسیب پذیری را در سرور MDM پیدا کنیم! از دور زدن سطح حفاظت از سطح زبان جاوا و محدودیت های شبکه ، تا نوشتن برنامه های حمله و بهره برداری موفقیت آمیز از برنامه Bug Bounty! به دلیل طولانی بودن مقاله ، هنوز داستان های زیادی وجود دارد که برای به اشتراک گذاشتن خیلی دیر است ، در اینجا فقط لیستی از افرادی است که علاقه مند به ادامه تحصیل هستند!

  • نحوه کنترل بازگشت به دستگاه های تلفن همراه کارمندان از سرور MDM
  • نحوه تجزیه و تحلیل MI خصوصی MobileIron پروتکل
  • CVE-2020-15506 در واقع یک آسیب پذیری بای پس احراز هویت بسیار جالب توجه است

امیدوارم این مقاله بتواند توجه عموم را به سطح حمله MDM و اهمیت امنیت شرکت برانگیزد! با تشکر برای تماشای: D [19659134].

飛鴿傳書 - 紅隊演練中的數位擄鴿

بیوگرافی کبوتر پرواز-کبوترهای اسیر دیجیتال در تمرین تیم قرمز | DEVCORE دیو کول

سیستم نامه پستی ، به عنوان اصلی ترین روش تبادل اطلاعات در اکثر شرکت ها ، یک موقعیت مهم استراتژیک را اشغال می کند. کنترل سرور پست الکترونیکی نه تنها می تواند از محتوای نامه استراق سمع کند ، بلکه حتی بسیاری از پرونده های مهم نیز در سیستم نامه یافت می شوند که به هکر امکان نفوذ بیشتر می دهد. در این مقاله آسیب پذیری حافظه کشف شده توسط تیم تحقیقاتی بر روی نرم افزار Openfind Mail2000 و روش های حمله استفاده شده برای بهره برداری از این آسیب پذیری ارائه خواهد شد.
این آسیب پذیری در سال 2018 کشف شد. در آن زمان ، Openfind به شما اطلاع داده شد و سریعاً برطرف شد. در همان زمان ، به کاربران مربوط نیز برای به روز رسانی کمک کرده است.

Openfind Mail2000

Mail2000 یک سیستم نامه الکترونیکی ساده و با کاربرد آسان است که توسط سازنده تایوانی Openfind ساخته شده است و به طور گسترده در موسسات دولتی و مؤسسات آموزشی تایوان از جمله دفتر آموزش شهری تایپه ، آکادمی علوم چین و علوم تایوان استفاده می شود. دانشگاه ها از Mail2000 به عنوان سرور اصلی ایمیل خود استفاده می کنند. رابط ورودی مشترک به شرح زیر است:

آسیب پذیری این بار از این رابط وب است ، با استفاده از تکنیک باینری برای به خطر انداختن کل سرور!

معماری سرور

Mail2000 یک رابط وب را برای کار با سرپرستان و کاربران فراهم می کند ، که به آن Webmail نیز گفته می شود ، و در اینجا Openfind از فناوری CGI (رابط مشترک دروازه) برای پیاده سازی استفاده می کند. اکثر سرورهای وب CGI را همانطور که در شکل نشان داده شده است پیاده سازی می کنند:

ابتدا httpd درخواست مشتری را می پذیرد و پرونده CGI مربوطه را مطابق با مسیر CGI مربوطه اجرا می کند. بیشتر توسعه دهندگان با توجه به نیازهای خود ، توابع مشترک مشترک را به عنوان کتابخانه برای تماس های CGI خواهند نوشت.
با نگاهی به پایین ، می توان فهمید كه اگرچه به آن سرور وب گفته می شود ، اما هنوز هم بسیاری از مؤلفه ها روی باینری ساخته شده اند! به عنوان مثال ، httpd بیشتر برای کارایی توسط C / C ++ نوشته شده است ، و موارد دیگر مانند کتابخانه ، ماژول توسعه یافته و CGI هر صفحه نیز یکسان است. بنابراین ، آسیب پذیری های مربوط به باینری این بار هدف حمله ما هستند!

آسیب پذیری

این آسیب پذیری در کتابخانه libm2kc پیاده سازی شده توسط Openfind واقع شده است .این كتابخانه شامل كاركردهای عمومی CGI مختلف مانند تجزیه و تحلیل پارامتر و پردازش پرونده و غیره است و این آسیب پذیری رخ می دهد. در بخش آنالیز پارامتر. از آنجا که پردازش پارامتر یک عملکرد بسیار سطح پایین و اساسی است ، دامنه تأثیرگذاری بسیار بزرگ است ، حتی سایر محصولات Openfind نیز تحت تأثیر قرار می گیرند!
شرایط تحریک کننده این آسیب پذیری به شرح زیر است:

  • مهاجم برای ارسال درخواست های HTTP POST از Multartart استفاده می کند
  • POST بیش از 200 مورد داده را ارسال می کند

multipart یک پروتکل HTTP است که برای رسیدگی به چندین فایل ارسال می شود. نمونه ای از قالب به شرح زیر است:

 نوع محتوا: چند قسمت / فرم-داده ؛ مرز = AaB03x

--AaB03x
محتوا-دفع: فرم-داده؛ name = "پرونده"؛ filename = "file1.txt"
نوع محتوا: متن / ساده

... محتویات file1.txt ...
--AaB03x--

در libm2kc ، از آرایه ای برای ذخیره پارامترها استفاده می شود:

 g_stCGIEnv .  param_cnt   =   0 ؛ ] [p =  next_param  ()) 
 {
   g_stCGIEnv .  param  [ param_cnt [196590101]] p ؛ 
   g_stCGIEnv .  param_cnt  ++ ؛ 
} 

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

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

 ساختار   param 
] {
     char   *  key ؛ 
     char   *  مقدار ؛ 
     int   پرچم ؛ 

بنابراين هنگام تحريك خارج از محدوده ، نوشتن مقدار وارد شده در حافظه نیز نشانگر رشته است و محتوای رشته اشاره شده پارامتری است که باعث ایجاد سرریز شده است.

استثمار آسیب پذیری

برای بهره برداری از آسیب پذیری نوشته شده در آن سوی مرز ، ابتدا باید بفهمیم که با استفاده از این سرریز می توان چه کاری انجام داد. ساختار متغیر جهانی سرریز به شرح زیر است:

 00000000 CGIEnv struc؛ (sizeof = 0x6990، mappedto_95)
00000000 buf dd ؟؛ افست
00000004 طول dd؟
00000008 field_8 dd 6144 dup (؟)؛ افست
00006008 param_arr param 200 dup (؟)
00006968 file_vec dd ؟؛ افست
0000696C vec_len dd؟
00006970 vec_cur_len dd؟
00006974 arg_cnt dd؟
00006978 زمینه_6978 dd؟
errcode 0000697C dd؟
روش 00006980 دی دی؟
00006984 is_multipart dd؟
00006988 read_func dd؟
0000698C زمینه_698C dd؟
00006990 CGIEnv به پایان می رسد

آرایه سرریز param_arr است ، بنابراین متغیرهای پس از آن بازنویسی می شوند. از جمله post_files ، vec_len ، vec_cur_len ، arg_cnt … و غیره. برای من یکی از جذاب ترین متغیر file_vec است که یک وکتور است که برای مدیریت پرونده های بارگذاری POST استفاده می شود ، بیشتر ساختار به این شکل است:

از ضبط اندازه برای ضبط کل طول آرایه ، پایان استفاده کنید تا جایی که در حال حاضر استفاده می شود را ضبط کنید ، تا در صورت عدم کفایت ظرفیت بتوان آنرا گسترش داد. اگر از آسیب پذیری برای ساختن نشانگر سرریز وکتور استفاده کنیم ، می توان از آن به طور مؤثر استفاده کرد! با پوشاندن این نشانگر ، می توانیم به اثر جعل پرونده پرونده POST و کلیه متغیرهای مرتبط دست یابیم و این ساختار پرونده POST شامل متغیرهای مختلف مرتبط با پرونده ، مانند مسیر و نام پرونده ، و ساختار FILE که برای مدیریت پرونده ها در لینوکس استفاده شده است ، و ساختار FILE کلید این حمله است. !

FILE Exploit Structure

این حمله از تکنیک بهره برداری از ساختار FILE استفاده می کند ، که یک روش حمله نسبتاً جدید است که در سالهای اخیر کشف شده است. این توسط Angelboy در HITCON CMT [1] منتشر شده است:

ساختار FILE در لینوکس استفاده می شود. ساختار مورد استفاده برای پردازش پرونده مانند STDIN ، STDOUT ، STDERR یا ساختار پس از تماس fopen پرونده . دلیل اصلی اینکه این ساختار می تواند به نقض آسیب پذیری تبدیل شود ، این است که آن را دربردارنده نشانگر vtable :

 struktur   _IO_FILE_plus 
 {
   FILE  ]  ؛ 
   const   struktur   _IO_jump_t   *  vtable ؛ 

struktur _IO_jump_t * vtable ؛

struktur

vtable vtable ضبط کننده انواع مختلف عملکرد پردازش توابع مرتبط:

 ساختار   _IO_jump_t 
 {
     JUMP_FIELD  ( size_t ،   __ آدمک [1965900189]] 
    ]  size_t  ،   __ dummy2 
     JUMP_FIELD  ( _IO_finish_t ،   __ پایان ] * / 
     JUMP_FIELD  ( _IO_read_t ،   __ بخوانید ) ؛ 
     JUMP_FIELD  ( _IO_write_t] T  _IO_write_t] )؛ 
     JUMP_FIELD  ( _IO_s eek_t  ،   __ به دنبال 
     JUMP_FIELD  ( _IO_close_t ،   __ بست ) [[659017] 19659028]}؛ 

بنابراین اگر می توانیم این [ vtable را دستکاری و جعل کنیم ، می توانیم جریان برنامه را در حالی که برنامه در حال انجام پردازش پرونده است ، ربودیم! ما می توانیم از این روش برای تعیین مراحل حمله زیر استفاده کنیم:

  1. اتصال برقرار کنید ، با CGI
  2. تماس بگیرید با استفاده از تعداد زیادی پارامتر ، نشانگر بردار
  3. FILE * را در پرونده POST جعلی بازنویسی کنید و به ساختار FILE جعلی
  4. بازنویسی کنید. ] عملیات مربوط به FILE را در فرآیند CGI فراخوانی کنید
        

    • Fread ، Fwrite ، Fclose ، …
    •     

      

  5. جریان برنامه ربودن

اکنون می دانیم که نقطه پایان است که یک عملیات FILE را فراخوانی می کند ، سپس می توانیم به عقب برگردیم که عملکرد CGI است که معمولاً FILE استفاده می شود ، وجود دارد. کدام CGI را می توان به عنوان یک نقطه ورود برای هک کردن زنجیره حمله ما استفاده کرد! ما ابتدا توابع مربوط به پرونده POST را مورد مطالعه قرار دادیم و هدف را انتخاب کردیم MCGI_VarClear () .
MCGI_VarClear () در بسیاری از CGI هایی که از FILE استفاده می کنند فراخوانی می شود ، برای پاک کردن g_stCGIEnv قبل از اتمام برنامه ، از جمله حافظه پویا تنظیم شده رایگان ( ) خاموش ، و همه FILE را ببندید ، یعنی با fclose () تماس بگیرید ، این بدان معنی است که می توان با vtable آن را ربود! ما می توانیم از این آسیب پذیری خارج از محدوده برای نوشتن file_vec استفاده کنیم ، و محتوای مورد اشاره به آن پارامترهای درخواست HTTP است ، که می توانند به صورت پرونده های POST جعل شوند! مانند ساختار زیر:

هدف نهایی ما این است که FILE را به یک ساختار جعلی ، با یک جعل جعلی برای ربودن جریان برنامه نشان دهیم! در این زمان مشکلی پیش آمد. ما باید نشانگر FILE * را به مکانی با محتوای کنترل پذیر نشان دهیم ، اما در واقع نمی دانیم به کجا اشاره کنیم و این مشکل توسط مکانیسم دفاعی در Linux-ASLR ایجاد می شود. .

Randomization Layout Space Space (ASLR)

ASLR باعث می شود که هر برنامه هنگام اجرای و بارگذاری در حافظه ، به طور تصادفی در یک مکان حافظه مختلف بارگذاری شود ، می توانیم سعی کنیم از cat / proc / self استفاده کنیم. / نقشه ها مشاهده کنید که آیا مکان حافظه هر بار که اجرا می شود یکسان است:

ASLR به طور پیش فرض در اکثر محیط ها فعال شده است ، بنابراین هنگام نوشتن یک مورد بهره برداری ، اغلب با شاخص هایی که می تواند جعل شود مواجه می شوید ، اما نمی دانید خجالت از کجا اشاره کرد.
و این سازوکار در چارچوب CGI موانع بیشتری ایجاد می کند ، روند حمله کلی سرور ممکن است به این صورت باشد:

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

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

Post-Auth RCE- / cgi-bin / msg_read

نقطه ورود اولین بهره برداری صفحه ای است که باید وارد سیستم شوید. این برنامه دارای برنامه های بزرگتر و عملکردهای بیشتری است. در این بهره برداری ، ما از روش پشته اسپری برای غلبه بر ASLR استفاده کردیم ، یعنی پر کردن تعداد زیادی اشیاء مکرر در پشته ، به طوری که احتمال بالایی از حدس بزنید نسبت به آن داشته باشیم. محل سکونت

محتوای اسپری تعداد زیادی از سازه های FILE جعلی ، از جمله vtables جعلی است. از این باینری ، یک ابزار بسیار عملی پیدا کردیم که یک قطعه برنامه کوچک است: [

نقش این اسباب بازی این است که ما می توانیم موقعیت پشته را تغییر دهیم ، و در این زمان ، محتوای اشاره گر eax قابل کنترل است ، بنابراین می توان محتوای کل پشته را جعل کرد ، به این معنی که می توانیم از ROP (برنامه نویسی برگشت گرا) برای استفاده از آن استفاده کنیم! بنابراین ما اسبابک منتقل شده توسط پشته و زنجیره حمله متعاقب آن را در vtable جعلی تنظیم کردیم تا حمله ROP را انجام دهیم!

ما می توانیم ROP انجام دهیم ، بنابراین می توانیم پوسته را بگیریم ، درست است؟ به نظر شما این مورد است؟ خیر ، در واقع یک مشکل بزرگ وجود دارد ، همچنین به دلیل مکانیسم دفاعی فوق الذکر ASLR – ما موقعیت سیستم را نداریم! این گجت تهیه شده توسط خود باینری برای باز کردن یک پوسته کافی نیست ، بنابراین امیدواریم که بتوانیم به طور مستقیم از سیستم در libc استفاده کنیم تا به هدف برسیم ، اما همانطور که قبلاً نیز اشاره شد ، مکان حافظه هر بار که بارگیری می شود تصادفی است ، ما من محل دقیق سیستم را نمی دانم!
پس از مشاهده دقیق این برنامه ، چیز بسیار ویژه ای پیدا کردیم این برنامه از لحاظ تئوری دارای NX باز است که یک مکانیزم محافظت غیر اجرایی برای بخش های قابل نوشتار است

اما در واقع اجرا شد. در آن زمان مجوز اجرای پشته باز خواهد شد!

صرف نظر از دلیل ، این تنظیمات برای هکرها بسیار مناسب است .ما می توانیم از این بخش اجرایی استفاده کنیم تا بتواند کد صدف را اجرا کند و ما می توانیم با موفقیت پوسته را بدست آوریم و به RCE برسیم!

با این حال ، این حمله نیاز به ورود دارد ، که برای تیم تحقیق DEVCORE که دنبال کمال است ، کافی نیست! بنابراین ، ما دیگر مسیرهای حمله را بررسی کرده ایم!

Pre-Auth RCE- / cgi-bin / cgi_api

پس از جستجو در تمام نقاط ورودي CGI ، يكي را پيدا كرديم كه نيازي به ورود ندارد و با MCGI_VarClear () CGI- / cgi-bin / cgi_api . همانطور که از نام آن پیداست ، این یک واسط برای فراخوانی API است ، بنابراین خود برنامه بسیار کوچک است و پس از فراخوانی در کتابخانه تقریباً تمام شده است ، بنابراین دیگر یک ابزار محوری برای پشته در دسترس نیست.
در این زمان ، از آنجا که می دانیم پشته قابل اجرا است ، می توانیم از مرحله ROP صرفنظر کنیم و shellcode را مستقیماً روی پشته قرار دهیم .در اینجا ، ما از یک ویژگی CGI استفاده می کنیم – متغیرهای مربوط به HTTP قرار خواهد گرفت. در بین متغیرهای محیطی ، مانند متغیرهای رایج زیر:

  • HTTP_HOST
  • REQUEST_METHOD
  • QUERY_STRING

و متغیر محیط در واقع در انتهای پشته قرار دارد ، یعنی موقعیت بخش اجرایی ، بنابراین ما فقط نیاز به جعل vtable داریم و مستقیماً با کد صدایی تماس می گیریم!

البته در حال حاضر نیز مشکلی وجود دارد: ما هنوز مکان حافظه پشته را نداریم. در این زمان ممکن است برخی از افراد به یک راز بپردازند ، فکر می کنند که این حمله به یکباره صورت می گیرد ، مانند یک تیرانداز ، در یک ضربه خواهد کشت ، اما در واقع ممکن است اینگونه باشد که با یک مسلسل دشمن را خاموش کند:

با نگاه از منظر ، این باینری 32 بیت است ، بنابراین 1.5 بایت در این موقعیت تصادفی است و در مجموع 16 3 ترکیب احتمالی وجود دارد ، بنابراین در حقیقت ، فقط به 4096 درخواست نیاز دارد تا یک بار ضربه بزنید! این در واقع چند دقیقه برای سرعت رایانه و شبکه فعلی چند دقیقه است ، بنابراین انجام عملی مستقیماً ترک خوردن نیروی بی رحمانه نیز امکان پذیر است! بنابراین فرایند بهره برداری نهایی ما این است:

  1. ارسال درخواست پست به cgi_api
        

    • کد صدف را در QUERY_STRING قرار دهید
    •     

      

  2. محرک خارج از محدوده نوشتن ، بازنویسی file_vec
        

    • FILE جعلی و جدول را در پارامترهای فراتر از مرز آماده کنید
    •     

      

  3. cgi_api با تماس بگیرید MCGI_VarClear
  4. قبل از پرش به محل صدف را در vtable ، پوسته معکوس

را با موفقیت نوشتیم ، و این بهره برداری تحت تأثیر نسخه های مختلف باینری قرار نمی گیرد! مورد واقعی همچنین امکان سنجی این بهره برداری را اثبات کرد .در یک تمرین ، ما از 1day Mail2000 به عنوان دستیابی به موفقیت استفاده کردیم تا داده های VPN هدف را با موفقیت به بیرون درز کنیم و بیشتر به داخل اینترانت نفوذ کنیم!

رفع آسیب پذیری

این آسیب پذیری در نسخه Mail2000 V7 Patch 050 نسخه منتشر شده در 2018/05/08 برطرف شده است. شماره وصله های OF-ISAC-18-002 و OF-ISAC-18-003 هستند.

Postscript

سرانجام ، من می خواهم در مورد اینکه چه نوع تولید کننده ذهنیت باید برای مقابله با این نقاط ضعف استفاده کند ، صحبت کنم. به عنوان ارائه دهنده محصول ، Openfind چندین نکته کلیدی دارد که ارزش آن را در این زمینه در مورد آسیب پذیری می آموزد:

  • ذهن باز
        
      
  • اشکالات را به طور جدی برطرف کنید
        

    • در مواجهه با این نگرش مثبت ، به سرعت با
    • مقابله کنید. پس از اتمام تعمیر ، با گزارشگر برای تأیید
    • همکاری کنید
          

      

  • ارزش ایمنی مشتری
        

    • به روزرسانی های اصلی را منتشر کنید و به طور فعال به مشتریان اطلاع دهید و با به روزرسانی ها به آنها کمک کنید.
          

      

در حقیقت ، حفره هایی در محصول وجود دارد كه عادی و دشوار برای جلوگیری از آن است ، و تیم تحقیقاتی ما به عنوان یك تسهیلگر نقش دارد ، امیدواریم كه با تهیه گزارش های مشكلات ، بهبود آگاهی از امنیت و افزایش سطح امنیتی تایوان به شركتها كمك كند! امید است که تولیدکنندگان نیز با نگرش مثبت و نه گول زدن و دوری از این مسئله ، با نگرش مثبت روبرو شوند و این تنها باعث می شود کاربران در معرض خطرات امنیتی بیشتری قرار بگیرند!

و کاربرانی که از دستگاه های مختلفی استفاده می کنند نیز باید بر دارایی های خود تسلط داشته باشند فایروال ها ، سرورها و سایر محصولات خریداری و نصب نمی شوند .بعد از راه اندازی مشکلی وجود نخواهد داشت. موجودی خوبی را انجام دهید و به روز رسانی های امنیتی تولید کنندگان را پیگیری کنید. برای اطمینان از این که محصول توسط 1day مورد حمله قرار نمی گیرد! آزمایش نفوذ منظم و مته های تیم قرمز می توانند به شرکتها کمک کنند تا نقاط کمبود یا نقص نقاط کور را مشخص کنند و سپس به منظور کاهش خطرات امنیتی شرکت بهبود یابد.

من پناهنده هستم.
              

.

شما برای استفاده آنلاین از آن استفاده می کنید ، من از آن استفاده می کنم به اینترانت شما! آسیب پذیری اجرای کد از راه دور دستگاه داده از راه دور Chunghwa Telecom | DEVCORE دیو

شما برای استفاده آنلاین از آن استفاده می کنید ، من از آن استفاده می کنم به اینترانت شما! آسیب پذیری اجرای کد از راه دور دستگاه داده از راه دور Chunghwa Telecom | DEVCORE دیو

سلام بر همه ، من نارنجی هستم! این مقاله موضوعی است که من در کنفرانس DEVCORE 2019 به اشتراک گذاشتم ، در مورد چگونگی راه اندازی صدها هزار یا حتی میلیون ها واحد از مجموعه های Chunghwa Telecom.

پیش شماره

به عنوان یک تیم تحقیقاتی DEVCORE ، کار ما بررسی آخرین روند حمله ، کشف آخرین نقاط ضعف ، شناسایی آسیب پذیری هایی که می تواند بر کل جهان تأثیر بگذارد و برای جلوگیری از این آسیب پذیری ها به فروشندگان بازگردیم. بازار سیاه زیرزمینی توسط هکرهای کلاه سیاه و حتی هکرهای در سطح کشور مورد استفاده قرار می گیرد تا جهان به مکانی امن تر تبدیل شود!

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

استخراج آسیب پذیری مانند ضبط پرچم (CTF) نیست. باید راه حل هایی وجود داشته باشد و یک راه حل صحیح در انتظار شما باشد تا بتوانید آن را حل کنید .در محدوده محدود موضوع ، فقط شرایط و سرنخ های موجود را دنبال کنید تا مشکل را پیدا کنید. قصد ، نه از ده نفر می تواند مشکل را پیدا کند. اگرچه هنوز بازی های تازه ، با کیفیت بالا و سختی مانند HITCON CTF یا Plaid CTF وجود دارد ، اما "پیدا کردن آسیب پذیری" و "نحوه بهره برداری از آسیب پذیری" در اصل دو چیز متفاوت هستند!

CTF برای ارتقاء سطح توانایی افراد مناسب برای افراد معینی بسیار مناسب است ، اما کاستی در این است که اگر شما اغلب در یک قاب کوچک محدود می شوید ، ایده ها و بینش به راحتی محدود می شوند ، دنیای واقعی توهین آمیز و دفاعی تمایل به پیچیدگی بیشتری دارد ، بعد نیز بزرگتر است! بالغ ، سالهاست که مورد استفاده قرار می گیرد ، و پرسنل امنیتی جهان در تلاش هستند نقاط ضعف جدیدی را در محصولات مورد نظر خود پیدا کنند .این قطعاً یک موضوع ساده نیست! یک رقابت CTF حداکثر 48 ساعت است ، اما نمی توان دانست که آیا این هدف وجود دارد یا خیر. تحت فرض آسیب پذیری ، تا چه مدت می توانید پایدار بمانید؟

در آخرین مطالعه ما ، آسیب پذیری اجرای کد از راه دور را دیدیم که توسط سه فروشنده مشهور SSL VPN تأیید نشده است. اگرچه نتایج مثمر ثمر بود ، اما برای کل گروه تحقیق نیم سال طول کشید. زمان (بعلاوه روند پیگیری حتی می تواند تا یک سال باشد) حتی در دو ماه اول نیز خروجی کاملاً صفر است ، نمی تواند در زیر شکاف تکمیل شود. بنابراین ، برای یک محقق آسیب پذیری خوب ، علاوه بر توانایی جامع ، دانش و خاکبرداری عمیق ، شما نیز باید بتوانید به طور مستقل فکر کنید ، و علاقه جدی داشته باشید تا بتوانید در برابر تنهایی و غیره مقاومت کنید تا یک مشکل دشوار داشته باشید. کشتن یک جاده خونین!

تحقیقات در مورد آسیب پذیری اغلب یک پروژه سرمایه گذاری در یک شرکت نیست بلکه یک بخش است که نمی توان آن را سرمایه گذاری کرد چند شرکت می تواند به کارمندان اجازه دهد یک مطالعه را انجام دهند که لزوماً برای نیم سال یا حتی یک سال خروجی ندارد؟ علاوه بر این ، بازگشت بی قید و شرط نتایج تحقیقات فقط برای ایمن سازی جهان است؟ به همین دلیل DEVCORE ما بهتر از سایرین در آزمایش نفوذ یا تمرینات تیم قرمز است ، به جز جمع آوری زرادخانه در روزهای هفته. هنگام مواجهه با آسیب پذیری ، تمام تلاش خود را خواهیم کرد تا از آسیب پذیری این آسیب پذیری حداکثر استفاده کرده ، از تفکر هکر استفاده کنیم ، از طریق ترکیبات مختلف استفاده کنیم و از آسیب پذیری کم خطر در حد شدید استفاده کنیم که این همسو با حمله هکرهای دنیای واقعی به شماست. راه!

دامنه تأثیرگذاری

داستان به روز آغاز سال جاری برمی گردد ، ما مرکز عاطفی DEVCORE را رصد می کنیم تایوان دارای تعداد زیادی از شبکه پورت آدرس 3097 باز است، و جالب توجه است، این آدرس ها چیزهایی هستند که آدرس سرور، اما کامپیوتر خانگی معمولی نیست. به طور کلی ، رایانه خانگی از طریق دستگاه داده به اینترنت متصل است و هیچ خدمتی به دنیای خارج باز نمی شود.حتی رابط مدیریت SSH و HTTP دستگاه دیتا فقط از طریق شبکه داخلی قابل دسترسی است ، بنابراین ما گمان می کنیم این مربوط به ISP باشد. خطاهای پیکربندی مربوط می شوند! ما همچنین با موفقیت از آسیب پذیری اجرای کد از راه دور استفاده کردیم که در این پورت تصدیق نشده است! قیاس این است که هکر قبلاً در اتاق نشیمن شما در مبل خوابیده است!

از طریق این سوراخ ما می توانیم تکمیل:

  1. استراق سمع در ترافیک شبکه ، سرقت هویت شبکه ، رمز عبور PTT و حتی اطلاعات کارت اعتباری خود
  2. به روز رسانی ربودن ، حمله گودال ، حمله رله اینترانت برای کنترل رایانه یا حتی تلفن همراه شخصی
  3. همراه با تمرین تیم قرمز برای دور زدن سیاست های مختلف لیست سفید توسعه دهندگان
  4. اطلاعات بیشتر …

و شماره آسیب پذیری CVE مربوط به آن است:

در مقایسه با حملات قبلی به دستگاه های داده خانگی ، این تأثیر جدی تر است! در گذشته ، حتی اگر این آسیب پذیری جدی باشد ، مادامی که دستگاه داده خانگی هیچ ارتباطی را باز نکند ، مهاجم نمی تواند از آن استفاده کند ، اما این بار آسیب پذیری از جمله خطاهای پیکربندی Chunghwa Telecom ، دستگاه داده شما در اینترنت پخش می شود ، فقط مهاجم "تا زمانی که IP خود را بشناسید ، می توانید بدون هیچ شرایطی وارد شبکه خانگی خود شوید" ، و به این دلیل هیچ کنترلی بر روی دستگاه داده وجود ندارد ، بنابراین این حمله توسط یک کاربر متوسط ​​قابل دفاع و تعمیر نیست!

پس از اسکن کل شبکه IPv4 ، حدود 250،000 دستگاه داده در تایوان وجود دارد. "حداقل 250،000 خانوار تحت تأثیر قرار گرفتند " ، اما این نتیجه فقط در " دستگاههای داده اسکن متصل به اینترنت در آمار گنجانده شده است " ، بنابراین قربانی واقعی باید از این تعداد بیشتر باشد!

با توجه به بررسی ضد آدرس اینترنتی ، حداکثر 90 درصد قربانیان IP پویا Chunghwa Telecom هستند ، در حالی که 10 درصد باقیمانده شامل IP ثابت و سایر شرکتهای مخابراتی است.چرا شرکتهای مخابراتی دیگری وجود دارند؟ این قابل درک است که Chunghwa Telecom ، به عنوان بزرگترین شرکت مخابراتی تایوان ، دارای منابع و امکانات سخت افزاری است که بسیار عقب تر از سایر اپراتورهای مخابراتی است ، بنابراین در بعضی از مناطق نسبتاً دور افتاده است. شاید آخرین مسیر سایر ارائه دهندگان مخابراتی برای کاربران نیز تجهیزات Chunghwa Telecom باشد! از آنجا که ما تولید کننده نیستیم ، نمی توانیم لیست مجموعه داده های کاملاً تحت تأثیر را بدانیم ، اما نویسنده نیز قربانی (╯_╰) ╭ است ، بنابراین می توان مشخص کرد که پرکاربردترین دستگاه نوری GPON نسل نوری Chunghwa Telecom نیز تحت تأثیر قرار گرفته است!


(تصویر از اینترنت)

معدن آسیب پذیری

فقط یک خطای پیکربندی نیست این یک مشکل بزرگ است ، بنابراین ما امیدواریم که در این سرویس آسیب پذیری های جدی تری پیدا کنیم! استخراج آسیب پذیری های نرم افزار را می توان با توجه به کد منبع ، پرونده اجرایی و پرونده API تقسیم کرد:

  • Black Box
  • آزمون جعبه خاکستری
  • تست جعبه سفید

در صورت عدم وجود هر چیزی ، می توانید به تجربه و درک سیستم اعتماد کنید تا حدس بزنید اجرای پشت هر دستورالعمل را تشخیص داده و آسیب پذیری را تشخیص دهد.

Black Box Test

3097 بندر تعدادی دستورالعمل مربوط به شبکه ارتباطات از راه دور را ارائه می دهد ، احتمالاً توسط شرکت Chunghwa Telecom به مهندس می دهد تا از راه دور انواع تنظیمات شبکه دستگاه داده را از بین ببرد!

[19659018] در میان آنها ، همه توابع را می توان از طریق دستورالعمل HELP ذکر کرد ، که در آن ما یک دستورالعمل به نام MISC پیدا کردیم ، و منظور از این نام ، طبقه بندی دسته ای از دستورالعمل هایی است که نمی دانند چگونه طبقه بندی کنند. این ، و یکی از آنها به نام SCRIPT ما را به خود جلب کرد! پارامتر آن نام پرونده است پس از اجرا ، پرونده را به صورت Shell Script اجرا می کند ، اما در دستگاه از راه دور قابل کنترل نیست. تحت فرض پرونده ، دستیابی به اجرای کد دلخواه از طریق این دستورالعمل غیرممکن است. جالب اینجاست که ، با این حال ، MISC SCRIPT این دستور STDERR را نشان می دهد ، بنابراین می توانید از این ویژگی برای تکمیل خواندن پرونده دلخواه استفاده کنید!

تکامل یافته از جعبه سیاه به جعبه خاکستری [19659028] در استفاده از آسیب پذیری ها ، چه از آن استفاده از حافظه باشد و چه از طریق نفوذ به شبکه ، چیزی جز خواندن ، نوشتن و اجرای کد (eXecute) از هدف نیست. اکتساب شده ، اکنون مجوز خواندن اول را داریم ، پس؟

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

از طریق شکستن رمز عبور کاربر root ، ما با ورود به سیستم داده SSH با موفقیت وارد "جعبه سیاه" شدیم و به سیستم "جعبه خاکستری" تبدیل می شد! گرچه اکنون می توانیم با موفقیت کنترل کنیم. دستگاه داده ، اما دستگاه داده خانگی به طور کلی سرویس SSH را باز نمی کند ، برای رسیدن به کنترل "از راه دور" دستگاه داده های افراد دیگر ، ما هنوز باید راهی را از 3097 این سرویس پیدا کنیم اجازه برای اجرای کد.

کل موتور داده مخابراتی Chunghwa یک سیستم لینوکس تعبیه شده است که روی معماری پردازنده MIPS کار می کند ، در حالی که سرویس 3097 توسط / usr / bin / omcimain ارائه می شود. پرونده باینری پردازش می شود ، کل اندازه پرونده تقریباً 5 مگابایت است ، مقدار کمی برای مهندسی معکوس نیست ، اما در مقایسه با تست جعبه سیاه ، حداقل چیزی را می توان بسیار جذاب توصیف کرد!

 $ uname - یک
Linux I-040GW.cht.com.tw 2.6.30.9-5VT # 1 PREEMPT چهارشنبه 31 ژوئیه 15:40:34 CST 2019
[luna SDK V1.8.0] rlx GNU / Linux

$ netstat -anp | grep 3097
Tcp 0 0 127.0.0.1:3097 0.0.0.0:* LISTEN

$ ls -lh / usr / bin / omcimain
-rwxr-xr-x 1 root root 4.6M 1 اوت 1 13:40 / usr / bin / omcimain

$ پرونده / usr / bin / omcimain
ELF 32 بیتی MSB قابل اجرا ، MIPS ، MIPS-I نسخه 1 (SYSV) ، به صورت پویا در ارتباط است

از جعبه خاکستری گرفته تا جعبه سفید

اکنون ، ما می توانیم اصل و اجرای هر دستورالعمل را از طریق مهندسی معکوس درک کنیم! اما اول ، مهندسی معکوس یک فرآیند دردناک و خسته کننده است ، یک برنامه کوچک. این ممکن است حاوی دهها هزار یا حتی صدها هزار خط کد زبان ترکیبی باشد ، بنابراین استراتژی خراشیدن در این زمان بسیار مهم می شود! از دیدگاه عملکردی ، یک سوراخ در تزریق فرمان وجود دارد ، بنابراین عملکرد به عنوان نقطه شروع انجام می شود. شروع به حفاری کنید!

هسته پردازش کل سرویس 3097 در واقع یک گزینه چند لایه IF-ELSE است. اجرای یک تابع متناسب با هر جعبه کوچک ، به عنوان مثال cli_config_cmdline همان CONFIG است ] این دستورالعمل ، بنابراین ما با دستورالعمل HELP به هر یک از معادن اجرای توابع جفت شدیم!

مدتی مورد مطالعه قرار گرفت ، هیچ مشکلی جدی پیدا نکرد 🙁 با این حال ، ما متوجه شدیم که اگر همه مسابقات فرمان شکست بخورد ، تابعی از with_fallback را وارد می کند. هدف اصلی این عملکرد ادامه اجرای دستورالعمل هایی است که مسابقه را با شکست / usr / bin / diag !

with_fallback منطق کلی به شرح زیر است: Ghidra هنوز ظاهر نشد ، بنابراین این کد منبع به آرامی از خواندن زبان ترکیبی MIPS ترمیم شد! s1 دستورالعمل ورودی است ، اگر دستورالعمل در لیست مشخص نباشد و علامت سؤال در دستورالعمل ظاهر شود ، فقط کافیست / usr / bin / diag را کنار هم قرار داده و آن را در سیستم اعدام کنید! البته برای جلوگیری از نقاط ضعف مرتبط مانند تزریق فرمان ، قبل از پرتاب به سیستم بررسی کنید که آیا طبق لیست BLACKLISTS شخصیت های مضر وجود دارد.

   char   *  input   =   Use_trim  ( s1 
   if   ( input  [ 0 ]   ==   ' 0'   ||   input  [[19659053] 0 ]   ==   '#' [19659046]) 
       بازگشت   0 ؛ 

   در حالی که   ( SUB_COMMAND_LIST ] [ i ]  ! ]]   {
       sub_cmd   =   SUB_COMMAND_LIST  [ i  ++ 
       if [1965905043] strnc ( input ،   sub_cmd ،   strlen  ( sub_cmd ))   ==  0 )  ] break ؛ 
  } 
  
   if   ( SUB_COMMAND_LIST  [ i ]   ==   & [] Strchr  ( input ،   '؟' )   ==   0 ) 
       Return   -  10  
      
   // ... 
  
   در حالی که   ( BLACKLISTS  [ i ]  ! =   0 ]   {
       اگر   ( strchr  ( ورودی    BLACKLISTS  [ i ])  ! =   0 )  ] {
           Use_fdprintf  (fd  fd  ،   "نامعتبر نامشخص"٪ c "در فرمان   n "  ،   BLACKLISTS  [ i ])؛   بازگشت   ] -  1 ؛ 
      } 
       i  ++  + ؛ 
  } 
  
   snprintf  ( file_buf ، [19651746] 64 ،   "/ tmp / tmpfile.٪ d.٪ 06ld"  ،   getpid  ()،   random  ()  ٪   1000000 
   snprintf  ( cmd_buf ،   1024 ،   "/ usr / bin / diag٪ s>٪ s 2> / dev / نول " ،   ورودی  ،   file_buf ) ؛ [سیستم
    ( cmd_buf )؛ [196590202]  [BLACKLISTS] ] به شرح زیر تعریف شده است: 

 char   *  BLACKLISTS   =   "| <> () {}`؛ "[19659046] ؛ 

اگر این شما هستید ، می توانید به این فکر کنید که چگونه می توانید دور شوید؟

پاسخ بسیار ساده است ، تزریق دستور اغلب بسیار ساده و بی تکلف است!

در اینجا ما نشان می دهیم که چگونه از PTT ، آدرس IP قربانی را بشناسید ، و به داده داده وارد شوید تا معنای واقعی "چه چیزی را صدا کنیم" را بدست آورید!

Postscript

داستان در این پایان تقریباً پایان می یابد ، به نظر می رسد که کل مقاله به دست آمده است. از کشف تا به کارگیری کل فرآیند ، ممکن است فقط یک تزریق دستور ساده از تئوری نتیجه باشد ، اما در واقع زمان صرف شده در وسط ، روشی که طی کرده اید همان روشی است که شما می خوانید ، دقیقاً مانند تاریکی نمی توانید تصور کنید. در دخمه پرپیچ و خم ، شما هرگز نمی دانید که آیا قبل از بیرون آمدن از پیچ و خم جاده ، قدم می زنید آیا این راه صحیح رسیدن به هدف است!

حفر کردن نقاط ضعف های جدید خصوصاً از راه های مختلف کار ساده ای نیست. امروز تکنیک حمله بالغ شده است و رسیدن به یک روش جدید حمله حتی دشوارتر است.در زمینه تحقیقات آسیب پذیری ، تایوان اگر طبیعی باشد ، از انرژی کافی برخوردار نیست. این چالش نمی تواند شما را برآورده کند ، شما می خواهید دنیای واقعی تهاجمی و دفاعی را تجربه کنید ، به ما بپیوندید تا جریان موز را به اشتراک بگذارید: دوره زمان اعلان [D

  • 28 ژوئیه 2019 - بازگشت از طریق TWCERT / CC به Tel Chomhwa Telecom. 14 آگوست - تولید کنندگان به تجهیزات موجودی و تعمیر پاسخ دادند
  • 27 آگوست 2019 - پاسخ تولید کننده در اوایل سپتامبر به اتمام رسید
  • 30 اوت 2019 ، - پاسخ فروشنده به روزرسانی سیستم عامل تجهیزات آسیب دیده را تکمیل کرد
  • 11 سپتامبر 2019 - پاسخ بخشی از کاربر برای ارسال به روزرسانی ، زمان عمومی به تعویق افتاده نیاز به ارسال کارکنان دارد
  • 23 سپتامبر 2019 - تأیید شده با TWCERT / CC را می توان عمومی کرد
  • 25 سپتامبر 2019 - ارسال شده به کنفرانس DEVCORE 2019
  • 11 نوامبر 2019 - انتشار مقاله وبلاگ

.

  • انتی فیلتر antifilter
  •   .  
  • خرید وی پی ان
  •  .  
  • پنل نمایندگی وی پی ان نامحدود پنل vpn
  •   .  
  • خرید vpn
  •   .  
  • vpn خرید
  •   .  
  • کلودوی پی ان cloudvpn
  •   .  
  • فیلترشکن
  •   .  
  • دانلود فیلترشکن
  •   .  
  • فیلترشکن brazzers وی پی ان برای باز کردن سایت های پورن فیلتر شکن سکس
  •   .  
  • وی پی ان
  •   .  
  • وی پی ان اندروید
  •   .  
  • فیلتر شکن
  •   .  
  • وی پی ان اپل
  •   . 
  • خرید کریوخرید kerio
  •   .  
  • خرید vpn آی او اس
  •   .  
  • vpn اکانت vpn
  •  .  
  • اکانت فیلترشکن
  •   .  
  • خرید openvpn
  •   .  
  • خرید وی پی ان پرسرعت
  •   .  
  • خرید speedvpn خرید وی پی ان
  •   .  
  • وی پی ان ویندوز
  •   .  
  • خرید ویپی ان عمده
  •   .  
  • خرید فیلترشکن پروکسی
  •   .  
  • خرید vpn هوشمند وی پی ان
  •   .  
  • خرید vpn ارزان ساکس
  •   .  
  • آنتی فیلتر
  •   .  
  • فیلترشکن برای
  •  .  
  • دانلود vpn دانلود فیلتر شکن
  •   .  
  • لیچر تورنت رایگان
  •   .  
  • مستقیم کننده فایل لیچر رایگان
  •   .  
  • فروش vpn
  •   . 
  • دانلود وی پی ان خرید آنلاین vpn
  •   .  
  • خرید فیلترشکن تلگرام
  •   .  
  • خریدپروکسی فیلترشکن جدید
  •   .  
  • خرید ساکس خرید فیلترشکن
  •   .  
  • وی پی ان ارزان
  •   .  
  • تمدید وی پی ان تمدید اکانت
  •   .  
  • وی پی ان ایران vpn
  •   .  
  • vipvpn وی آی پی وی پی ان vip
  •   .  
  • vpn TEH VPN خرید فیلترشکن خرید وی پی ان اکانت کریوvip سایت tehvpn
  •   .  
  • httpوی پی ان پرسرعت
  •   .  
  • خرید وی پی ان هوشمند
  •   .  
  • اکانت وی پی ان نامحدود فیلترشکن ویندوز
  •   .  
  • خرید vpn آی پی ایران
  •   .  
  • وی پی انikev2 کرونا
  •   .  
  • مولتی وی پی ان
  •   .  
  • آموزش میلیونر شدن
  •   .  
  • بهترین فیلترشکن kerio کریو
  •   .  
  • فیلترشکن شادوساکس shadowsocks
  •   .  
  • مهاجرت اوکراین اقامت اروپا
  •   .  
  • خرید پاسپورت شباهتی
  •   .  
  • خرید iphone وی پی ان آی او اس
  •   .  
  • فیلترشکن آی پی ثابت vpn ای پی ثابت
  •   .  
  • امپراتور وی پی ان emperaturvpn empvpn سایت ویپی ان emptratur vpn
  •   .  
  • وی پی ان wireguard وایرگارد خرید ساکس
  •   .  
  • متین وی پی ان matinvpn
  •   .  
  • خرید انتی فیلتر فیلتر شکن
  •   .  
  • خرید وی پی ان برتر نت bartarnet vpn
  •   .  
  • پروکسی mtprotoتلگرام ساکس
  •   .  
  • سایت تیک نت وی پی ان خرید VPN پرسرعت اختصاصی خرید vpn برای ios خرید ساکس تلگرام خرید vpn اندروید خرید پراکسی تلگرام خرید وی پی ان tiknet vpn
  •   .  
  • خرید فیلترشکن
  •   . 
  • آنتی فیلتر AntiFilter
  •   .  
  • راهنمای vpn مجانی vpn رایگان
  •   .  
  • سایت GOVPN خرید go vpn سایت گو وی پی ان go اکانت goVPN فیلترشکن
  •   .  
  • matinvpn متین وی پی ان matin vpn
  •   .  
  • وی پی انمودم vpn برای مودم
  •   .  
  • DNS VPN خرید اکانت dns فیلترشکن پرسرعت DNS وی پی ان
  •   .  
  • کار دراینترنت درآمد آنلاین کسب سود میلیونی
  •   .  
  • اسپید وی پی ان Speedvpn خرید vpn خرید فیلترشکن خرید کریو پرسرعت
  •   .  
  • فیلترشکن تلگرام وی پی ان پرسرعت
  •   .  
  • تمدیداکانت وی پی ان تمدید vpn
  •   .  
  • WepnStore فروش انواع فیلترشکن | فروش وی پی ان موبایل و کامپیوتر vpn store
  •   .  
  • وی پی ان ilcvpn آی ال سی فروشگاه فیلترشکن
  •   .  
  • خرید vpn وی پی ان پراکسی NextVPN فیلترشکن Open فیلترشکن VPN فیلترشکن Kerio فیلترشکن Ciscovpn VPN Makers
  •   .  
  • خرید vpn خرید وی پی ان کریو خرید kerio خرید pptp خرید فیلترشکن cisco خرید ikev2
  •   .  
  • weVPN خرید vpn خرید فیلتر شکن خرید وی پی ان
  •   .  
  • وی پی ان وی آی پی vip vpn سایت vipvpn وی آی پی
  •   .  
  • وی پی ان خرید فیلتر شکن vpn اپلیکیشن vpn
  •   .  
  • خرید فیلترشکن 20speed وی پی ان 20اسپید اکانت خرید 20speed
  •  .  
  • آدرس فیلترباز اکانت وی پی ان filterbaz vpn خرید فیلترشکن باز
  •   .  
  • ویندوز فیلترشکن رایگان فیلترشکن تلگرام nextvpn
  •   .  
  • vpn خرید وی پی ان فیلترشکن پروکسی ساکس تلگرام
  •   .  
  • خرید وی پی ان خرید سیسکو خرید کریو خرید فیلترشکن tehvpn
  •   .  
  • خرید وی پی ان خرید فیلترشکن vpn
  •   .  
  • خرید وی پی ان لایک vpnlike خرید vpn like
  •   .  
  • HIVPNS وی پی ان|خرید اکانت فیلترشکن vpn|vpn ارزان|وی پی ان رایگان
  •   .  
  • hivpn خرید وی پی ان های وی پی ان خرید فیلتر شکن
  •   .  
  • زبرا وی پی ان آنلاین zebravpn خرید وی پی ان
  •   .  
  • خرید vpn خرید فیلترشکن
  •   .  
  • ابر وی پی ان abr vpn امپراتور empraturvpn emp
  •   .  
  • بهترین سایت بهترین اپلیکیشن
  •   .  
  • خرید VPN وی پی ان دوکاربره پر سرعت و ارزان Mehr VPN
  •   .  
  • من و وی پی ان خرید فیلترشکن خرید وی پی ان manovpn
  •   .  
  • سینیتیو فیلتر شکن اورجینال خرید اکانت پریمیوم خریدآنتی ویروس
  •   .  
  • TurboVPN خرید VPN پرسرعت vpn خرید vpn توربو وی پی ان
  •   .  
  • خرید وی پی ان گذرآزاد فیلترشکن پروکسی
  •   .  
  • خرید vpn خرید فیلترشکن خرید کریو دیجی وی پی ان
  •   .  
  • وی پی ان ایران ip اختصاصی آی پی ثابت وی پی ان آی پی ثابت خرید وی پی ان ارزان
  •   .  
  • چیتا وی پی ان ChitaVpn خرید vpn وی پی ان خرید فیلترشکن
  •   .  
  • خرید سیم کارت بین المللی ویزاگردی اخذ ویزا شنگن ویزا اوکراین سیم کارت خرید مستر کارت
  •   .  
  • اقامت اروپا ثبت شرکت بین المللی حساب بانکی اروپا پاسپورت آژانس مهاجرت شنگن
  •   .  
  • vpn خرید وی پی ان ترید آی پی ثابت وی پی ان ip اختصاصی
  •   .  
  • نمناک وبگردی تناسب اندام هنرمندان آشپزی اخبار
  •   .  
  • مستر وی پی ان خرید وی پی ان vpn خرید فیلترشکن آی پی اختصاصی
  •   .  
  • فیلترشکن خرید vpn ترید آی پی ثابت وی پی ان خرید پروکسی
  •   .  
  • خرید فیلترشکن خرید VPN بولد وی پی ان
  •   .  
  • خرید آی پی ایران vpn iran وی پی ان ایران vpn با آی پی ایران vpn iran
  •   .  
  • خرید وی پی ان bvpn اکانت وی پی ان
  •   .  
  • buy vpn buy proxy socks fast
  •   .  
  • дешевый аккаунт купить vpn купить прокс
  •   .  
  • 购买vpn购买代理人shadowsocks 廉价的VPN帐户
  •   .  
  • ucuz hesap vpn satın al vekil vpn satın al
  •   .  
  • حساب رخيص شراء vpn شراء بروکسی ساکس vpn
  •   .  
  • buy VPN Service cheap VPN Software Buy VPN cheap proxy
  •   .  
  • ipsabet ترید آی پی ثابت vpn آی پی ثابت ترید
  •   .  
  • سایت عبورینگ Obooring VPN خرید VPN خرید فیلترشکن
  •   .  
  • تاج وی پی ان خرید وی پی ان پرسرعت خرید فیلترشکن خرید vpn
  •   .  
  • بهار وی پی ان خرید وی پی ان ارزان vpn پرسرعت آی پی ثابت
  •   .  
  • خرید vpn با ip ثابت خرید vpn خرید فیلتر شکن
  •   .  
  • وی پی ان خرید فیلترشکن خرید ساکس
  •   .  
  • خرید vpn آی پی ثابت وی پی ان ایران نیم بها فیلتر شکن تلگرام ساکس
  •   .  
  • خرید vpn خرید فیلترشکن خرید ip ثابت و اختصاصی Hi VPN
  •   .  
  • خرید وی پی ان خرید vpn خرید آی پی ثابت فیلترشکن بایو وی پی ان
  •   .  
  • خرید وی پی ان خرید vpn خرید آی پی ثابت فیلترشکن بایو وی پی ان
  •   .  
  • vpnsaz خرید وی پی ان ساز فیلترشکن vpn saz
  •   .  
  • خرید فیلتر شکن
  •   .  
  • خرید وی پی ان
  •   .  
  • وی پی ان vpn
  •   .  
  • لایت وی پی ان با ای پی ثابت
  •   .  
  • خرید وی پی ان
  •   .  
  • خرید آی پی ثابت خرید vpn با ip ثابت خرید ip ثابت
  •   .  
  • خرید vpn بایننس خرید فیلترشکن وی پی ان ip ثابت
  •   .  
  • takvpn تک وی پی ان خرید فیلترشکن
  •   .  
  • SNAP VPN خرید اسنپ وی پی ان خرید ساکس تلگرام خرید فیلتر شکن
  •   .  
  • دانلود بازی اندوید
  •   .  
  • اکانت پریمیوم vpn
  •   .  
  • خرید vpn fitnet خرید فیلترشکن فیت نت
  •   .  
  • buy vpn
  •   .  
  • vpn ایران
  •   .  
  • خرید فیلترشکن خرید وی پی ان
  •   .  
  • خرید vpn ثابت
  •   .  
  • vpn خرید وی پی ان
  •   .  
  • وی پی ان
  •   .  
  • خرید وی پی ان
  •   .  
  • وی پی ان smart vpn فیلترشکن
  •   .  
  • فیلترشکن موبایل vpn
  •   .  
  • خرید فیلترشکن
  •   .  
  • اکانت فیلترشکن
  •   .  
  • vpn خرید vpn
  •   .  
  • وی پی ان کاورنت
  •   .  
  • وی پی ان
  •   .  
  • خرید وی پی ان
  •   .  
  • خرید VPN خرید وی پی ان
  •   .  
  • فیلترشکن توشه
  •   .  
  • خرید سرور
  •   .  
  • وی پی ان کاورنت
  •   .  
  • فیلترشکن پرسرعت amovpn
  •   .  
  • فیلترشکن
  •   .  
  • اکانت وی پی ان ipgozar
  •   .  
  • ویستا وی پی ان
  •   .  
  • خرید VPN با IP ثابت و VPS برای بایننس
  •   .  
  • buy vpn
  •   .  
  • فیلترشکن
  •   .  
  • نصب فیلترشکن
  •   .  
  • اکلیپس وی پی ان ECLIPSE VPN
  •   .  
  • خرید vpn
  •   .  
  • خرید VPN فیلترشکن
  •   .  
  • vpn خرید وی پی ان
  •   .