باگ SSRF چیست ؟ + آموزش
در این قسمت از آموزش قصد داریم شما را با اسیب پذیری یا باگ SSRF آشنا کنیم با ما همراه باشید.
باگ SSRF چیست ؟
باگ SSRF که مخفف Server Side Request Forgery است یک باگ سمت سرور و یک باگ مدرن و جدید است ، که این حمله با استفاده از ضعف توابع API نیز صورت می گیرد . قبل از هرچیزی باید با API ها و نحوه کار آن ها آشنا شوید که در ادامه این موضوع را برای شما شرح خواهیم داد .
API چیست ؟
API مخفف Application Programming Interface است و به زبان فارسی معنای رابط برنامه نویسی اپلیکیشن است ؛ احتمالا تا به حال عبارت هایی همچون مانند API اینستاگرام یا API های اندروید به گوش شما نیز خورده است اما api چیست و چه کاری را برای برنامه نویسان انجام می دهد و چه فوایدی دارد که یک سرویس بسیار کار امد و جذاب برای برنامه نویسان است ؟
API ها این امکان را در اختیار سیستم ها قرار می دهند تا سیستم ها بتوانند ارتباطی با سرویس های دیگرایجاد کنند و از سرویس های مورد نظر استفاده کنند که به این تعاملی که میان سیستم (برای مثال یک وب سایت) ایجاد می شود را API می گویند.
برای مثال تصور کنید قصد دارید قیمت دلار را از یک وب سایت به صورت زنده مشاهده کنید.
حال نیز ایا منطقی است که مدیر سایت مورد نظر به صورت لحظه ای در حال تغیر قیمت ها باشد
و ایا امکان پذیر است ؟ خیر، در اینجا است که API جایگاه خود را پیدا می کند ، چنین سرویس هایی مانند قیمت لحظه ای دلار از قبل نوشته و طراحی شده اند و سپس در اختیار عموم قرار گرفته اند.
منطق حمله SSRF
همانگونه که می دانید هر وب سایتی بر روی یک هاست یا یک سروری پیاده سازی شده است و مکانیزم های امنیتی برای سرور و سایت تایین شده است مانند فایروال ها که این اجازه را به نفوذگر نخواند داد که بتواند به سرویس های مختلف وب سایت مورد نظر دسترسی بگیرد .
حال نیز حمله SSRF زمانی رخ می دهد که نفوذگر بتواند یک ریکوئستی را به سمت یک سرور ارسال کند و سرور مورد نظر دستور را در شبکه داخلی ( internal network ) خود اجرا می کند و خروجی را نیز به نفوذگر نمایش دهد که به این منظور نفوذگر می تواند با استفاده از دستورات سیستمی به سرور دسترسی بگیرد و کامند های مختلف را تست کند و نیز نتیجه مورد نظر خود را بگیرد .
حمله SSRF انواع مختلفی دارد که در ادامه شما را با انواع مختلف حملات SSRF آشنا می کنیم .
برای مثال شما صفحه ادمین یک وب سایت را پیدا کرده اید و حال اگر بتوانید با استفاده از روش های جعل درخواست , خود را یک کاربر داخل شبکه جای بزنید و ادرس پنل ادمین را از طریق ریکوئست های http ارسال کنید نیز خواهید دید که می توانید بدون دردسر وارد پنل مدیریت وب سایت شوید .
برای مثال در قسمتی که در هدر های http برای stockApi تعریف شده است عبارت زیر را وارد کنید :
http://127.0.0.1/admin
برای درک بهتر این موضوع با ادامه این آموزش با ما همراه باشید
تا با مثال های علمی این متد را برای شما شرح دهیم.
انواع حملات باگ SSRF
حمله ( SSRF (server itself
در این نوع حمله دستورات بر روی سرور اجرا می شوند که شما باید در حمله مورد نظر خود نیز از ای پی لوپ بک (127.0.0.1) استفاده کنید. برای مثال تصور کنید در یک وب سایتی یک API تعریف شده است که از طریق API موجود کاربر می تواند ریکوئست های مختلف را ارسال کند که یک مقدار مورد نظر را بررسی کند حال نیز اگر باگ SSRF نیز وجود داشته باشد نفوگر می تواند در API مربوطه ادرس لوپ بک را نیز وارد کند و دستورات محلی را بر روی سرور ارسال کند و نتیجه مورد نظر خود را بگیرد .
حمله (SSRF (back-end system
حال نیز تصور کنید باگ SSRF بر روی وب اپلیکیشنی وجود دارد و هرچقدر تلاش می کنید نمی توانید به صفحه ادمین با استفاده از ادرس لوپ بک دسترسی داشته باشید؛ این موضوع ممکن است چند احتمال داشته باشد که یکی از این احتمالات این است که ممکن است صفحه ادمین بر روی یک ای پی دیگر داخل شبکه ای پیاده سازی شده باشد و شما باید با استفاده از ای پی های داخلی پر استفاده اقدام به پیدا کردن صفحه ادمین کنید .
برای درک بهتر این موضوع به مثال های زیر توجه کنید :
http://192.168.0.1/admin
http://192.168.10.1/admin
http://192.168.1.4/admin
حمله (SSRF (open redirection
این حمله به این صورت است که نفوذگر می تواند صفحات مختلف را به آدرس های دیگری ریدایرکت کند و این آسیب پذیری بسیار خطرناک است به این منظور که ممکن است نفوذگر صفحات مورد نظر خود را ریدایرکت به لینک های مخرب کند .
حمله (SSRF (Blind
آسیب پذیری یا باگ Blind SSRF زمانی به وجود می آیند که یک نرم افزار می تواند
درخواست HTTP back-end را به URL تأمین شده صادر کند ،
اما پاسخ از درخواست back-end در پاسخ جلویی برنامه بازگردانده نمی شود.
حال نیز با چندین نوع از آسیب پذیری های SSRF آشنا شدید
و در ادامه با ذکر یک مثال و استفاده از آسیب پذیری SSRF LocalHost کار خواهیم کرد
و سپس انرا نیز اکسپلویت می کنیم تا با منطق آن آشنا شوید :
نکته : تمام مثال هایی که در تمام آموزش های تست نفوذ وب و آشنایی با باگ های مختلف زده می شود کاملا در محیط لوکال است و اگر قصد تمرین تست نفوذ وب را دارید باید تست های خود را کاملا در محیط های لوکال خود انجام دهید و یا کاملا قانونی با داشتن مجوز تست نفوذ اقدام به تست نفوذ سایت های مختلف کنید .
شروع کار با باگ SSRF
برای تست اسیب پذیری باگ SSRF به یکی از لابراتور های مجازی مراجعه کرده ایم
و سپس یکی از پست های این وب سایت را انتخاب کرده ایم :
در این مرحله ابزار Burp Suite خود را اجرا کنید.
و بر روی دکمه check stock کلیک کنید تا اطلاعات مورد نظر برایتان پروکسی شود.
حال نیز اگر به ابزار برپ مراجعه کنید خواهید دید که درریکوئستی که در حال ارسال به سرور است
یک فیلدی وجود دارد با عنوان stockApi که باید این فیلد را انتخاب کنید
و سپس این فیلد را به قسمت Repeater انتقال دهید.
سپس به قسمت Repeater بروید عبارتی که در مقابل فیلد stockApi وجود دارد را حذف کنید
و عبارت زیر را جایگزین ان قرار دهید :
http:localhost/admin
سپس بر روی دکمه Send بزنید تا پکت یه سمت سرور مورد نظر شما ارسال شود و در مرحله بعدی در قست Response بر روی گزینه Render کلیک کنید و در نهایت بر روی دکمه Click to render page کلیک کنید تا نتیجه و خروجی برای شما به نمایش در اید :
تشخیص باگ SSRF
حال نیز اگر وب سایت مورد نظر شما دارای باگ SSRF Localhost باشد
و مسیر صفحه ادمین را به درستی وارد کرده باشید
خواهید دید که به پنل ادمین دسترسی پیدا خواهید کرد.
حال نیز جالب است که بدانید اگر همین عملیات را به صورت عادی بر روی وب سایت انجام دهید
به هیچ وجه با چنین خروجی مواجه نخواهید شد.
به تصویر زیر و url وارد شده و ارور داده شده دقت کنید :
برای اشنایی بیشتر با باگ های دیگر می توانید اموزش انواع باگ ها را در پن تست کور مشاهده کنید.
امنیت در برابر آسیب پذیری SSRF
قدم اول : یکی از مهم ترین مشکلات امنیتی این است که مدیران سرور دسترسی ادمین سایت را بدون Authentication به یوزر های داخل شبکه می دهند و تصور می کنند چون یوزر های موجود در شبکه داخلی هستند نیز مشکلی برایشان پیش نخواهد امد اما پیش تر متوجه شدید که با استفاده از آسیب پذیری SSRF توانستیم با یوزر وب سرور به سرور ریکوئست ارسال کنیم و دستور ما به عنوان یک دستور داخلی در سرور اجرا شد، پس یکی از بزرگترین مشکلات امنیتی دقیقا همین کوضوع است و مدیران سرور باید حتما دقت داشته باشند که Authentication برای ورود به بخش مدیریت سایت بر روی سرور قرار دهند.
قدم دوم : تعریف Access Control Check برای کامپوننت مربوطه
قدم سوم : برای برقراری امنیت در برابر باگ SSRF و جلوگیری از هک میتوانید بک بلک لیست را نیز تعریف کنید و عبارت های مانند 127.0.0.1 , 192.168.0.0 , localhost , admin و … را در بلک لیست به عنوان عبارت های غیر مجاز قرار دهید.
قدم چهارم : تعریف یک white list و قرار دادن عبارت های مجاز داخل لیست مورد نظر
قدم پنجم : قرار دادن پنل ادمین بر روی یک پورت داخلی مجزا در سرور
بایپس مکانیزم های امنیتی در SSRF
بایپس Black List :
پیش تر در قسمت امنیت در برابر آسیب پذیری SSRF گفته شد که می توان با استفاده از یک بلک لیست ، لیستی از عبارت های غیر مجاز را فیلتر کرد اما جالب است که بدانید این روش به راحتی بایپس خواهد شد به این منظور جایگزین ای پی لوپ بک ( 127.0.0.1 ) میتوانید از عبارت هایی همچون 2130706433 و یا 01770000001 استفاده کنید .
بایپس White List :
برای بایپس وایت لیست میتوانید از مثال های زیر استفاده کنید :
https://evil-host#expected-host
https://exected-host@evil-host
https://expected-host.evil-host
نتیجه گیری
در این قسمت از آموزش شما را با باگ SSRF اشنا کرده ایم و نحوه برقرار کردن امنیت خود در برابر چنین باگی را خدمت شما شرح دادیم و در نهایت چند روش ساده را برای بایپس مکانیزم های امنیتی شرح دادیم . اما دقت داشته باشید که امنیت هیچ گاه صد درصد نیست .
موفق باشید.
۴ دیدگاه در “باگ SSRF چیست ؟ + آموزش”
با سلام و خسته نباشید بابت مقاله خوبتون
ممنون میشم توی مقاله ها قسمتی برای پرینت مقاله باشه. چون نمی شه هر سری به سایت مراجعه کرد.
اگه بشم فقط متن مقاله رو پرینت کرد عالی میشه.
با تشکر از سایت خوبتون
درود بر شما تشکر از دیدگاه خوب شما سپاس گذاریم
در صورت امکان انجام خواهد شد ، اما می توانید این صفحه را در سیستم خود بوک مارک کنید تا هر بار بتوانید به صفحه برای مشاهده اموزش مراجعه کنید.
سلام ممنون بخاطر مقاله های خوبتون چگونه مقاله هارا بوک مارک کنیم
درود و تشکر داخل مرورگر بخش سه نقطه ای که وجود دارد را بزنید و روی گزینه ستاره کلیک کنید تا مقاله بوکمارک شود.