نگاره‌هایی پیرامون امنیت، شبکه و رمزنگاری

20 نوامبر 2021

سلام دوستان امیدوارم حالتون خوب باشه. در این  پست میخوام درباره آسیب‌‌پذیری که چند روز پیش پیدا کردم با شما به اشتراک بگذارم. قبل از اینکه شروع کنیم لازمه یکم مقدمه کوچیک از چند تکنولوژی مربوط به آسیب‌پذیری که مهمه در نظر داشته باشین. ساختار به این شکلی خواهد بود:

  1. تعریف Amazon Web Service یا AWS
  2. تعریف Amazon EC2
  3. تعریف AWS Metadata
  4. آسیب‌‌پذیریSSRF
  5. کشف آسیب‌پذیری

تعریف Amazon Web Service یا AWS

AWS (سرویس وب آمازون) یک پلتفرم رایانش ابری جامع و در حال تحول است که توسط آمازون ارائه شده است. این تکنولوژی شامل ترکیبی از زیرساخت به عنوان سرویس (IaaS)، پلت فرم به عنوان سرویس (PaaS) و نرم افزار بسته‌بندی شده به عنوان سرویس (SaaS) است. سرویس های AWS می توانند ابزارهایی مانند توان محاسباتی، ذخیره سازی پایگاه داده و خدمات تحویل محتوا را به کاربر ارائه بده. AWS به سرویس های مختلفی تقسیم می شود. هر کدام را می توان به روش های مختلف نیاز کاربر برطرف کرد. برای مطالعه بیشتر به اینجا مراجعه کنید. 

هر نوع برنامه وب که میخواید اجرا کنید، به یک سرور نیاز دارید ، بعضی وقتا ممکنه به سرور بزرگ گاهی اوقات ممکنه به سرورهای کوچکتر نیاز داشته باشید، اگر بتوانید سریع و ارزان این سرورها را به دست بیارید، کار خیلی راحت تر و بدون دردسر میتونه ادامه پیدا کنه نه؟ اینجاست که Amazon EC2 وارد کار میشه EC2 این امکانو به شما میده که سرورهای مجازی را در فضای ابری به سرعت و ارزان به دست آورید. EC2 خیلی مزایای خوبی داره برای مطالعه بیشتر به اینجا مراجعه کنید. 

تعریف Amazon EC2

تعریف AWS Metadata 

Metedata یا “فراداده” داده‌هایی که اطلاعات مربوط به سایر داده‌ها را فراهم می‌کنند به عبارت دیگر، فراداده «داده‌هایی درباره داده‌ها» است. در AWS این داده ها مربوط به نمونه خود را که می توانید برای تنظیم یا مدیریت نمونه در حال اجرا و استفاده است. این داده شامل اطلاعات کاربر و فراداده های مربوط به تکنولوژی در حال استفاده است. در AWS شما متونید با استفاده از ای پی http://162.254.169.254/latest/mete-data به این اطلاعات دسترسی پیدا کنید. نکته‌ای که اینجا خیلی مهمه اینه که شما فقط و فقط از localhost میتونید به این داده‌ها دسترسی پیدا کنید. به عبارتی فقط اطلاعاتی که مال شماست دسترسی دارید. 

اینم نمونه از اطلاعاتی که من به اون دسترسی دارم. فقط من هم به اونا دسترسی دارم چون این EC2 رو خریدم.  

نمونه ای از meta-data

آسیب‌‌پذیریSSRF

 آسیب‌پذیری Server Side Request Forgery یا SSRF اگه به طور ساده میخوام بگم یک آسیب‌‌پذیریه که سرور رو مجبور می‌کنه به یه جای دیگه درخواست HTTP بفرسته. خب همونطور که حدس زدید همه چی سمت سرور اتفاق میفته و بیشتر مواقع به شما این امکانو میده که داده‌هایی و کلا چیز هایی که در سرور وجود داره رو بخونید خب حالا چرا و چطور این اتفاق میفه؟ مشکل از اونجا نشأت می گیره که کنترل منابع خارجی که سایت از اونها استفاده می کنه خوب انجام نمیشه. 

 برای مثال بگیم که سایت مموری‌لیکس از یه سورس یا وبسایت دیگه داره یک چیزی رو میخونه دی این مثال یه عکس از گوگل   

https://memoryleaks.ir/?pictureUrl:https://google.com/flower.jp

خب ما هم به این کوری “pictureUrl” دسترسی داریم یعنی میتونیم هر چیزی که دلمون بخواد بدیم. اگه به این “pictureUrl” بگیم که مثلا به جای گوگل یه چیز دیگه رو فراخونی کن و این اتفاق انجام بیفته و چیزی که ما دادیم  فراخونی بشه خب یه آسیب‌پذیری SSRF رو دست ماست. خب حالا سوال اینجاست که چیزی که ما میدیم چیه معمولا از نظر یه هانتر ما میخواییم اطلاعات سرور رو بخونیم طبیعتا مثلا چندتا از پیلود هایی که میتونیم بدیم:

file:///etc/passwd

یا اگه تارگت شما داره از AWS استفاده میکنه میتونید اون اطلاعات “Meta-data” رو فرا بخونید و بدون هیچ مشکلی میتونید دسترسی پیدا کنید چرا چون از خود سرور ریکوست زدین. 

مثلا برای خوندن اطلاعات AWS EC2 کافیه پیلود پایین رو به “pictureUrl” یدین:

http://169.254.169.254/latest/meta-data/iam 

یه چیز دیگه که میتونید اکسپلویت کنید “Port Scan” و “Protocol Enumeration” هستش که برای تشخیص اینکه کدوم پورت رو سرور بازه یا باید به زمان Response سرور توجه کنیم یا بعضی وقتا خود سرور میگه که بازه یا نه  

پیلود پورت اسکن: 

http://127.0.0.1:22

کشف آسیب‌پذیری

آسیب‌‌پذیری که پیدا کردم مربوط به یه برنامه پرایوت بود که یک function آپلود داشتن من همیشه این آپلودو یه نگاهی میکنم بش خب اینم فرق نداره یه نیم ساعت تستش کردم و کلا یک چیز توجهمو جلب کرد که موقع آپلود یک ریکوست PATCH با پارامتر “PictureUrl” تو body داشت همونطور که حدس زدید مستقیم رفتم برای تست SSRF. ولی هرچی که به “PictureUrl” میدادم هیچ اتفاقی نمایفتاد. خب من میدونستم که تارگت از تکنولوژی AWS استفادی میکرد واسه همین اخرین پیلودی که دادم این بود: 

http://169.254.169.254/latest/meta-data/iam” هیچ اتفاقی نیافتاد رفتم دنبال یه چیز دیگه بگردم. 

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

وقتی رو این دانلود کلیک میکنید در Response یه مقداری که base64 انکودد هم هست وجود داره خب منم از کنجکاوی دیکود کردم دیدم همون اطلاعات http://169.254.169.254/latest/meta-data/iam  

پس چیزی که اینجا اتفاق میقته یک ریکوست به اون “PictureUrl” میفرسته هرچی مقدارش باشه سعی میکنه بخونتش. 

خب اینم چند نمونه از اطلاعات AWS

خب من انجا باگو ریپورت کردم بعد یک روز دوباره سعی کردم اینبار فایل های سیستم رو بخونم با این پیلود شروع کردم file:///etc/passwd” همه چی هم اوکی بود

 

خب دوستان امیدوارم لذت بردین از این ورایت‌ آپ.

منو میتونید در تویتر دنبال کنید.

1 پست نوشته شده
18 , علاقه مند به امنیت,گیمر
  • به اشتراک بگذارید:
برچسب‌ها: ، ،
  1. root گفت:

    سلام اطلاعات رو توی فایلی که دانلود میشد میخوندید یا از طریق ریسپانس؟

  2. Mehdi گفت:

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

  3. BH گفت:

    جالب بود خیلی

  4. iam... گفت:

    سلام
    عالی بود ممنون

  5. sirman گفت:

    سلام وقت بخیر
    ببخشید یه سوال داخل این مسیر چه اطلاعاتی هست؟http://169.254.169.254/latest/meta-data/iam

  6. علی گفت:

    به جای ای پی ۱۶۹ می تونیم ای پی ۱۲۷.۰.۰.۱قرار بدیم؟

دیدگاه شما در مورد Dinky