0
0

بررسی آسیب پذیری Server Side Template Injection (SSTI)

3838 بازدید
آسیب پذیری SSTI

بررسی آسیب پذیری Server Side Template Injection (SSTI)

 

با یکی دیگر از مقالات آموزشی امنیتی تیم بلک سکوریتی خدمت شما کاربران محترم هستیم.
در این پست قصد داریم در مورد آسیب پذیری SSTI یا Server Side Template Injection صحبت کنیم. با ما همراه باشید !

 

آسیب پذیری Server Side Template Injection (SSTI) چیست ؟

موتورهای قالب (Template engines) به طور گسترده ای توسط برنامه های کاربردی وب
برای ارائه داده های پویا (داینامیک) از طریق صفحات وب و ایمیل ها استفاده می شوند. جاسازی غیر ایمن ورودی کاربر در قالب ها ، باعث آسیب پذیری Server Side Template Injection میشود که یک آسیب پذیری مهم به شمار میرود و حتی منجر به XSS نیز میشود.

  • بر خلاف XSS تزریق الگو (Template Injection) می تواند برای حمله مستقیم
    به بخش داخلی سرورهای وب و اغلب به دست آوردن کد از راه دور (RCE) استفاده شود، و هکر بدون داشتن دسترسی ادمین کدهای سروری را اجرا کند.

Template Injection می تواند هم از طریق خطای توسعه دهنده و هم از طریق قرار گرفتن Template به صورت ورودی باشد.

 

آسیب پذیری SSTI

 

نگاهی عمقی تر

برنامه های کاربردی وب اغلب از سیستم های الگو مانند Twig و FreeMarker برای جاسازی
محتوای پویا در صفحات وب و ایمیل ها استفاده می کنند. Template Injection زمانی اتفاق می افتد که ورودی کاربر به صورت ناامن در قالب جاسازی شده است (یعنی کاربر بتواند برای سرور ورودی بدون فیلتر بفرست یا فیلتر قابل دور زدن باشد). یک برنامه بازاریابی را در نظر بگیرید که ایمیل های انبوه ارسال می کند و از یک قالب Twig برای استقبال از نام گیرندگان استفاده می کند. اگر نام فقط به الگو منتقل شود، مانند مثال زیر همه چیز خوب کار می کند :

 


$output = $twig-render("Dear {first_name},", array("first_name" = $user.first_name) );

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


$output = $twig-render($_GET['custom_email'], array("first_name" $user.first_name) );

 

به عنوان مثال :

در این مثال اگر کاربر محتوای قالب را از طریق پارامتر custom_email GET به جای مقدار اصلی
و صحیح تغییر دهد، یکی از آسیب پذیری هایی که میتوان در این مرحله رخ دهد آسیب پذیری XSS است. این کد در واقع سطح حمله گسترده اما به راحتی نادیده گرفته می شود. خروجی از دو پیام تبریک زیر به آسیب پذیری سمت سرور اشاره می کند :

  • خیال کنید ما بجای ایمیل عبارت {{7*7}} را به عنوان ورودی ارسال کنیم :

custom_email={{7*7}}

result : 49

 

در ادامه..

آنچه در اینجا داریم اساساً اجرای کد سمت سرور در یک سندباکس است.
بسته به موتور قالب مورد استفاده ، ممکن است بتوان از سندباکس فرار کرد و کد دلخواه را اجرا کرد.

این آسیب پذیری معمولاً از طریق توسعه دهندگان ایجاد می شود که عمدا به کاربران اجازه می دهند
قالب ها را ارسال یا ویرایش کنند .هر ویژگی که کاربر بتوانند کدهایی سمت وب اپلیکیشن ارسال کند، ممکن است آسیب پذیر باشد، از جمله صفحات ویکی و نظرات.Template injection همچنین می تواند به طور تصادفی ایجاد شود، هنگامی که ورودی کاربر به سادگی مستقیماً به یک الگو متصل می شود. این ممکن است کمی خلاف شهود به نظر برسد، اما معادل آسیب پذیری های SQL Injection است

  • که یک اتفاق نسبتاً شایع است. علاوه بر این ،Template injection غیر عمد بسیار آسان است
    زیرا معمولاً هیچ نشانه قابل مشاهده ای وجود نخواهد داشت. مانند سایر آسیب پذیری های ورودی، ورودی می تواند از منابع باند خارج باشد. به عنوان مثال ، ممکن است به عنوان یک نوع Local File Include (LFI) رخ دهد، که از طریق تکنیک های کلاسیک LFI مانند کد تعبیه شده در پرونده های log فایل های session یا /proc/self/env باشد

 

چند تمرین برای آسیب پذیری SSTI


https://www.root-me.org/en/Challenges/Web-Server/Java-Server-side-Template-Injection


https://portswigger.net/web-security/server-side-template-injection/exploiting/lab-server-side-template-injection-basic

 

انواع پروتکل رمزنگاری وایرلس به زبان ساده کلیک کنید !

5 2 votes
امتیازدهی به مقاله
آیا این مطلب را می پسندید؟
https://blacksecurityteam.com/?p=25721
اشتراک گذاری:
واتساپتوییترفیسبوکپینترستلینکدین
مهدی حسنی
در حال یادگیری ..........
مطالب بیشتر
برچسب ها:
اشتراک در
اطلاع از
guest
0 نظرات
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x