جعل درخواست سمت سرور(SSRF)
آسیبپذیری که به مهاجمان اجازه میدهد سرور را وادار به ارسال درخواست به آدرسهای داخلی یا خارجی کنند.
SSRF اصلا چیه؟
خلاصه در یه جمله: این حمله وقتی اتفاق میافته که مهاجم بتونه سرور شما رو وادار کنه درخواستهایی رو به آدرسهای دلخواه (داخلی یا خارجی) ارسال کنه.
خب SSRF یعنی Server-Side Request Forgery. این Request Forgery یعنی جعل درخواست — تو داری یه درخواست جعلی میسازی. Server-Side یعنی این درخواست جعلی رو سرور از طرف تو ارسال میکنه، نه مرورگر خودت. در حالت عادی ما نمیتونیم به سرورهای داخلی دسترسی داشته باشیم که از همین استفاده میکنیم.
مثال داستانی برای فهم بهتر:
فرض کنید شما بیرون یه ساختمان اداری هستید. شما حق داری فقط به اتاق روابط عمومی نامه بدید ولی میخوای به اتاق مدیر مجموعه نامه بدی. ولی راه حل چیه؟ خوشبختانه اینجا یه نقطه ضعف هست و اینا اومدن فقط قانون رو گذاشتن، کسی واقعا نمیبینه نامه از کجا اومده و به کجا میره اینا اومدن اعتماد کردند که کاربر — که ما باشیم — ادمای سر به راهی هستیم و از قوانین پیروی میکنیم ولی کور خوندن.
ما میایم اینجا از بخش نامهرسانها سوءاستفاده میکنیم. وظیفه نامهرسانها اینه که نامهها رو از صندوق پستی میگیرن و میبرن به مقصدشون همین، هیچ سوال و چکی نمیکنند. به عبارتی اگر نامه شما به نامهرسانها برسه بدون اینکه ببیند از کجا اومده مستقیم به وظیفهشون عمل میکنند و اون رو به مقصد مورد نظر میبرن، پس تنها کاری که لازمه اینه بریم و نامه رو داخل صندوق پست بندازیم.
میدونم مثال خیلی ساده و بچهگانهای بود، اما در دنیای واقعی هم تقریباً همینه، شما از سرور که نامهرسان باشه سوءاستفاده میکنید تا به جاهایی که در حالت عادی نباید دسترسی داشته باشید، یعنی سرورهای داخلی دسترسی پیدا کنید، وقتی دارید به سرور URL رو میدید و اون بدون بررسیهای کافی درخواست رو ارسال میکنه.
چرا برای امنیت مهمه؟
چون شماره ۱۰ OWASP Top 10 2021 هست! SSRF میتونه به مهاجم اجازه بده به شبکه داخلی شرکت دسترسی پیدا کنه، سرویسهای داخلی رو اسکن کنه، یا حتی به Metadata سرویسهای Cloud دسترسی پیدا کنه و کل محیط Cloud رو برداره!