من در مورد خطرات واقعی اجرای shell.openExternal روی محتوای غیرقابل اعتماد کنجکاو هستم. مستندات به طور خاص بیان می کند که این امر می تواند برای RCE اعمال شود:
استفاده نادرست از openExternal می تواند برای به خطر انداختن میزبان کاربر مورد استفاده قرار گیرد. هنگامی که از openExternal با محتوای غیرقابل اعتماد استفاده می شود ، می توان از آن برای اجرای دستورات دلخواه استفاده کرد.
همه گزارش هایی که می توانم در مورد این ادعا آنلاین پیدا کنم که دارای RCE هستند با باز کردن برنامه ماشین حساب یا باز کردن / etc / passwd در یک ویرایشگر متن اما هیچکدام از اینها در واقع اجرای کد از راه دور نیستند. بله ، آسیب پذیری های RCE معمولاً با باز کردن برنامه ماشین حساب ، PoC'ed هستند ، اما باز کردن برنامه ماشین حساب به معنای داشتن RCE نیست: این موارد صرفاً اجرای کد محلی است که در سیستم فایل قربانی وجود دارد ، یا باز کردن پرونده ها قبلاً در سیستم پرونده قربانی در برنامه پیش فرض خود قرار دارد. من نمی دانم که چگونه می توانید از این توانایی برای به خطر انداختن میزبان کاربر استفاده کنید ، و من هنوز نمونه ای از سوء استفاده یا آسیب پذیری RCE واقعی RCE که ناشی از اجرای shell.openExternal است ، نیافته ام. در مورد محتوای غیرقابل اعتماد.
از اسناد و آزمایش ها ، به نظر می رسد که shell.openExternal با باز کردن یک url ، پرونده یا باینری در برنامه ای که معمولاً سیستم شما برای اجرای آن کار می کند ، کار می کند. شما نمی توانید استدلال ها را تصویب کنید ، بنابراین استناد به یک پوسته به ویژه مفید نیست. به بهترین وجهی که می توانم بگویم ، سوءاستفاده از این برای [R45] واقعی RCE ابتدا نیاز به ریختن باینری مخرب روی سیستم پرونده های هدف در یک مکان قابل پیش بینی دارد. توجه داشته باشید که بارگذاری یک باینری مخرب در اینترنت و اشاره به آن از طریق URL کار نمی کند – فقط نتیجه باز شدن یک مرورگر و ارائه فایل برای بارگیری است. shell.openExternal (مقدار) ؛ جایی که شما مقدار را کنترل می کنید. چگونه می توانید کد / دستورات دلخواه خود را بر روی دستگاه من اجرا کنید؟