;...z@nko!#
;...z@nko!#
خواندن ۳ دقیقه·۳ روز پیش

🧤 آسیب پذیری 0.0.0.0 Day مشکل من با 0.0.0.0 ؟ 🧤

0.0.0.0
0.0.0.0


امروز داشتم کدم رو مینوشتم و چون داخل لوکال هاست بود و فعلا برای پروداکشن نبود، داخل فرانت اند ست کردم که ادرس API من باشه 0.0.0.0:8000 و خب بک اند هم روی لوکال در حال اجرا بود...

اما شب داشتم تست میکردم، دیدم کلا مروگر ارور ERR_EMPTY_RESPONSE میده بهم و منطقی نیست و برای همین یکم سرچ کردم... و رسیدم به آسیب پذیری 0.0.0.0 Day ( که البته ربطی به مشکل من هم نداشت و مشکل از افزونه proxy switcher بود ولی خب این هم موضع جالبی بود و خواستم راجبش بنویسم).

قبل از اینکه بریم سراغ این اسیب پذیری بهتر راجب PNA و CORS سرچ کنید‌( تو پست قبلی راجب CORS حرف زدیم و میتونید اونجا رو هم ببینید)





0.0.0.0 Day

این آسیب پذیری مربوط میشه به خود مروگر ها و شرکت Oligo Security چند ماه پیش گزارشش رو داده، به هکر اجازه میده که روی مروگر های روز مره(مثل فایرفاکس، کروم،‌ سافاری) بتونه از طریق یه وبسایت پابلیک با دور زدن PNA و CORS به سرویس های لوکال سمت کلاینت درخواست بفرسته و حتی بتونه دست رسی بگیره و... البته آسیب پذیری شامل ویندوز نمیشه چون دیفالت 0.0.0.0 ip رو بلاک میکنه و فقط برای لینوکس و مک هستش (‌ آسیب پذیری قرار تو ورژن های جدید مروگر ها به زودی فیکس بشه.)

ماجرا از اینجا شروع میشه که اگه یه هکر بیاد و یه وبسایت مخرب( فیشینگ *) رو بیاره بالا و شما برید داخل اون وبسایت، هکر میتونه از طریق مرورگر و جاوااسکریپت یه درخواست بفرسته به یه پورت روی ip 0.0.0.0 ( که اشاره میکنه به همه ip های موجود داخل اون شبکه) و حالا اگه یه سرویسی روی اون پورت در حال اجرا باشه ریکوست رو میتونه دریافت بکنه و درخواست رو هم انجام بده.

برای جلوگیری از همچین اتفاقی داخل مروگر ها قابلیت CORS و Private Network Access (PNA) رو داریم که نمیزاره یه سایت پابلیک بیاد ریکوست fetch بفرسته به شبکه داخلی ما و دیتا بگیره یا دست رسی پیدا بکنه و...






PNA & CORS

توی این آسیب پذیری درواقع هکر با fetch میاد یه ریکوئست http میفرسته با mode: no-cors و اینشکلی دیگه درخواست Preflight برای CORS ارسال نمیشه و مستقیم ریکوست از سمت وبسایت میره سمت سرویسی که رو سیستم در حال اجرا هستش ( تو مود non-cors ریسپانس سرور رو نمیتونیم ببینیم داخل مروگر ) و اینشکلی هکر میتونه مثلا اسکن بکنه پورت های ما رو و اگه بفهمه مروبط به سرویس خاص هستش و... شاید بتونه یه مشکل امنیتی ازش پیدا بکنه و مثل چیزی که تو مقاله بود دست رسی RCE (Remote Code Execution) بگیره و... که البته سخته..!!

علاوه بر CORS گفتیم PNA هم وجود داره، الان اگه اینجا ریکوست بفرستیم به localhost یا 127.0.0.1 و یه سری ip دیگه( تصویر پایین) این PNA جلوش رو میگیره و نمیزاره درخواست بره، اما داخل لیستی که PNA ازش جلوگیری میکنه ایپی 0.0.0.0 نیست و برای همین ترکیبش با mode: non-cors میتونه این باگ امنیتی رو بوجود بیاره .

Non-public IP address blocks
Non-public IP address blocks


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


مرسی که تا اینجا خوندید، چاکس ❤️







جزئیات کامل همراه با مثال و... اینجا قرار گرفته که میتونید بخونید:

https://www.oligo.security/blog/0-0-0-0-day-exploiting-localhost-apis-from-the-browser


اینجا هم یه سری نکته برای دولوپر ها گذاشتن که میتونیم داخل لوکال اپلیکیشن مون انجام بدیم تا از این نوع حمله ها جلوگیری کنیم:

https://www.oligo.security/blog/0-0-0-0-day-exploiting-localhost-apis-from-the-browser#how-can-i-protect-local-applications-from-0000-day

securitycorslinuxbrowsermacos
یه بک اند دولوپر پایتون، علاقمه مند به DevOps و دیپ شدن در مباحث مرتبط "-) https://mastodon.social/@zankoAN
شاید از این پست‌ها خوشتان بیاید