مع توجه الكون الى الترف الكوني، تتطور التكنولوجيا ملبيةً رغبة الانسان بتسهيل الحياه وزيادة ترفها، فعلى الصعيد البرمجي للمواقع تم اختراع المحركات (Engines) التي تعمل على نظام القوالب (Templates)
المصطلح الانقليزي [Templates Engines]
المصطلح الانقليزي [Templates Engines]
موضوعنا اليوم عن الـ SSTI اذا حبيت الموضوع سوي كوب شاي ☕️
وانت تسوي الشاي عطنا لايك وريتوت وشير
وعلى قولة المثل الاعجمي:
More Likes = More content 🙄
وانت تسوي الشاي عطنا لايك وريتوت وشير
وعلى قولة المثل الاعجمي:
More Likes = More content 🙄
مع جلسات التجلي الي اسويها كل ما بغيت انزل بوست، السوال عن الوجوديات دايماً تاخذ نصيب الاسد في مخي، فف حقيقة انه لماذا اصلاً نستخدم التملبتس والتمبلت انجينز من الاسئله الشيقه، كوني انسان افضل اسلك الطرق الصعبه المفهومه عن الطرق الاسهل الغير مفهومه او غير واضحه لي ...
ولكن في الاونه الاخيره سويت لي سستم باستخدام Python Flask وهنا استطعت ان ارى الفرق بين البرمجة التمبلتيه وبرمجتي مثلاً للمواقع على الصعيد الشخصي كنت ابرمج بالـ php الصرف (بدون استخدام تمبلتز)
من الامثله الواضحه لو كانت سخيفه مثلاً، في المواقع الي (بدون تيمبلتز) اذا الهيدر والفوتر للصفحة بخليهم موجودين بكل صفحات الموقع كنت انسخهم والصقهم بكل صفحة، على عكس نظام التمبلتز الي يخليني احطهم بصفحات مستقله مثلاً header.html و footer.html واستدعيهم بكل صفحة وخلاص ...
اذا رأيت ان المشكله صغيره بقولك مو هنا المشكله اصلاً، المشكله اذا بغيت تغير بالهيدر او الفوتر فف انت محتاج تغيره بكل الصفحات بب الـ مواقع الي ما تستخدم التمبلتز ولكن مع التمبلتز فف انت تغير الهيدر نفسه والفوتر وهم بيتغيرون بكل صفحة 😎
وخذ على هالنقطه الكثير من الامثله، فنظام التمبلته يهدف لفصل الـ presentation layer عن الـ busnisses logic بمعنى اخر مثلاً انك تحط بالـ html متغيرات، وفي جهة السيرفر تسوي العمليات الي تبيها وترسل لليوزر الصفحة مع القيم للمتغيرات ..
وفي جهة الكلاينت سايد الصفحات تستبدل المتغيرات بقيّمها وتنعرض الصفحة باحلاسها واكلاسها عند اليوزر
ولذلك اهميات كثيره لا اجيد حصرها، لعل المبرمجين ابخص، ويا ليت المبرمجين يكتبون لنا بالتعليقات اهمية التمبلتز الي ما ذكرناها ⬇️
كوننا هنا نبي نتطرق لثغراتها لا لماهيتها 🤓
ولذلك اهميات كثيره لا اجيد حصرها، لعل المبرمجين ابخص، ويا ليت المبرمجين يكتبون لنا بالتعليقات اهمية التمبلتز الي ما ذكرناها ⬇️
كوننا هنا نبي نتطرق لثغراتها لا لماهيتها 🤓
انتقالاً الى الثغرات والـ SSTI تحديداً، هذي الثغره ناتجة عن عدم فلترة الموقع لليوزر انبوت ، فإذا كان فيه صفحة تستقبل مُدخل من اليوزر وما تفلتره وتعرضه لليوزر كك نتيجة للعملية الموجوده بالصفحة قد تكون النتائج كارثية وفي اغلب الاحيان ممكن يحصل الهكرجي على RCE بالموقع
{نظرياً}
لو ان اليوزر الهكرجي يحقن الصفحة بب مدخل خبيث والصفحة تعتبره شي من ضمن الصفحة وتنفذ المُدخل، هنا قدر الهكرجي انه يسوي حقن للتيمبلت، حقن بمعنى اضفت للتمبلت شي برمجياً ما كان موجود فيه
لو ان اليوزر الهكرجي يحقن الصفحة بب مدخل خبيث والصفحة تعتبره شي من ضمن الصفحة وتنفذ المُدخل، هنا قدر الهكرجي انه يسوي حقن للتيمبلت، حقن بمعنى اضفت للتمبلت شي برمجياً ما كان موجود فيه
فف اذا كان التمبلت مستخدم كك سيرفر سايد ، هنا يكون عندنا Server-Side Template Injection
حلو ؟
المفروض الحين انك خلصت كوب الشاي انصحك بالإيتاء بكوب اخر قبل الدخول بالشق العملي من الشرح 🤓
حلو ؟
المفروض الحين انك خلصت كوب الشاي انصحك بالإيتاء بكوب اخر قبل الدخول بالشق العملي من الشرح 🤓
greeting function:
تستقبل فقط POST request والي منطقياً جايه من index.html، تاخذ قيمة الـ name وترجع Hi name داخل h1 هتمل تاق
حلو ؟ حلو
بعد ما خرجنا من نظره المبرمج، خلونا نشغل الابلكيشن ونجي عند المتصفح ونحول نظرتنا الى نظره هكرجيه 👁️
تستقبل فقط POST request والي منطقياً جايه من index.html، تاخذ قيمة الـ name وترجع Hi name داخل h1 هتمل تاق
حلو ؟ حلو
بعد ما خرجنا من نظره المبرمج، خلونا نشغل الابلكيشن ونجي عند المتصفح ونحول نظرتنا الى نظره هكرجيه 👁️
بيرفيكتو ! فهمنا الان انه نقدر نحط اشياء والسيرفر ينفذها ويرجعلنا النتيجة
الان جاء الدور عشان نوصل للـ RCE باذن الله
الان جاء الدور عشان نوصل للـ RCE باذن الله
*معلومات للذين يستمتعون بالتفاصيل *
مبدئياً لازم تعرف ان اي اوبجكت بالبايثون عنده كلاس وكل كلاس له base/super class من هذا الكلاس الي غالباً بيكون في قمة الهيكلية ( root node ) تقدر منه تستعرض الهكيليه وتجمع معلومات عن الفنقشنات او الـ subclasses المتاحه
مبدئياً لازم تعرف ان اي اوبجكت بالبايثون عنده كلاس وكل كلاس له base/super class من هذا الكلاس الي غالباً بيكون في قمة الهيكلية ( root node ) تقدر منه تستعرض الهكيليه وتجمع معلومات عن الفنقشنات او الـ subclasses المتاحه
فبما اننا ما نقدر نستدعي مثلاً os.system() فنقشن عشان نجيب RCE من التمبلت، فف لذلك حنا نبي نصعد الى اعلى كلاس ونستعرض السب كلاسات او الفنقشنات الي نقدر نستخدمها
انا جداً فخور فيك كونك وصلت لهالنقطه من الشرح اشكرك جزيل الشكر 🌺🌺 خذ ورده زياده 🌺
والى هنا وصلنا لنهاية شرحنا وفالكم التوفيق انتظرونا بب قصه واقعيه عن الثغره هذي باذن الله قريب 🤩
والى هنا وصلنا لنهاية شرحنا وفالكم التوفيق انتظرونا بب قصه واقعيه عن الثغره هذي باذن الله قريب 🤩
المصادر:
- بهاراتي الخاصه 👨🏻🍳
- #popen-constructor" target="_blank" rel="noopener" onclick="event.stopPropagation()">docs.python.org
- kleiber.me
- book.hacktricks.xyz
- بهاراتي الخاصه 👨🏻🍳
- #popen-constructor" target="_blank" rel="noopener" onclick="event.stopPropagation()">docs.python.org
- kleiber.me
- book.hacktricks.xyz
book.hacktricks.xyz/pentesting-web…
Jinja2 SSTI
Do you work in a cybersecurity company? Do you want to see your company advertised in HackTricks? or...
kleiber.me/blog/2021/10/3…
A Simple Flask (Jinja2) Server-Side Template Injection (SSTI) Example
This article, inspired by Temple on TryHackMe, demonstrates and dicusses Server-Side Template Inject...
docs.python.org/3/library/subp…
subprocess — Subprocess management
Source code: Lib/subprocess.py The subprocess module allows you to spawn new processes, connect to t...
جاري تحميل الاقتراحات...