• لمتابعة آخر المقالات و الحيل التقنية و كسب كورسات مجانية انضم لقناتنا الآن   انضم الان

اختبار اختراق تطبيقات الويب - SSTI

اختبار اختراق تطبيقات الويب - SSTI

SSTI

 مقدمة 
في عالم التكنولوجيا الحديث، تزداد أهمية تطوير تطبيقات الويب بسرعة متسارعة. ومع تزايد تعقيد هذه التطبيقات، يظهر تهديد جديد على الأفق يتطلب اهتمامًا فوريًا وحماية جادة. نتحدث هنا عن اختبار الاختراق لتطبيقات الويب - SSTI (Server-Side Template Injection)، وهو تهديد أمني يمكن أن يهدد بنجاح عمل تلك التطبيقات وسلامة البيانات الحساسة المخزنة فيها.

ماهي ثغرة SSTI

وهي اختصار ل Server-Side Template Injection  وهي مشكلة أمنية خطيرة تؤثر على تطبيقات الويب. تحدث هذه الثغرة عندما يسمح التطبيق للمهاجم بحقن شيفرة أو تعبير قالبي داخل الخادم. يعني ذلك أن المهاجم يمكنه إدخال تعبيرات قالبية تُقَدَّر وتُنفَّذ على الخادم نفسه بدلاً من عرض النتائج المتوقعة.هذا النوع من الثغرات يمكن أن يكون خطيرًا لأنه يتيح للمهاجم فرصة تنفيذ شيفرة خبيثة على الخادم، وبالتالي يمكنه التحكم في سير العمل، وسرقة البيانات، والتلاعب.



ثغرة SSTI هي نوع من الثغرات الأمنية التي تسمح للمهاجم بتنفيذ التعليمات البرمجية على خادم الويب. تحدث هذه الثغرة عندما يفشل تطبيق الويب في تصفية المدخلات المقدمة من المستخدم بشكل صحيح. يمكن أن يؤدي هذا إلى السماح للمهاجم بتنفيذ التعليمات البرمجية عن بعد، أو الوصول إلى البيانات الحساسة، أو حتى السيطرة على الخادم بالكامل. تحدث ثغرة SSTI عندما يتم استخدام محرك قالب جانب الخادم (SSTI) بشكل غير آمن. محرك القالب هو أداة تستخدم لإنشاء صفحات ويب ديناميكية. يسمح للمستخدمين بتقديم مدخلات إلى الصفحة، والتي يتم بعد ذلك استخدامها لإنشاء المحتوى الديناميكي.إذا لم يتم تصفية المدخلات المقدمة من المستخدم بشكل صحيح، فيمكن للمهاجم استخدامها لتنفيذ التعليمات البرمجية عن بعد. يمكن أن يتم ذلك عن طريق إدخال رمز ضار في المدخلات، والذي سيتم بعد ذلك تنفيذه بواسطة محرك القالب.


مثال على التعليمات البرمجية الضعيفة:
$output = $twig->render("Dear " . $_GET['name']);
في هذا الكود ، يتم إنشاء جزء من القالب نفسه ديناميكيًا باستخدام GET. نظرًا لأنه يتم تقييم بناء جملة القالب من جانب الخادم، فمن المحتمل أن يسمح هذا للمهاجم بوضع حمولة حقن قالب من جانب الخادم داخل معلمة name كما يلي:
http://example.com/?name={{bad-stuff-here}}   

انشاء هجوم Server-Side Template Injection

اكتشاف الثغرة

كما هو الحال مع أي ثغرة أمنية، فإن الخطوة الأولى نحو الاستغلال هي القدرة على العثور عليها. ربما تكون أبسط طريقة أولية هي محاولة تشويش القالب عن طريق إدخال سلسلة من الأحرف الخاصة شائعة الاستخدام في تعبيرات القالب، مثل خليط من الاحرف ${{<%[%'"}}%\. من أجل التحقق مما إذا كان الخادم عرضة للخطر، يجب عليك اكتشاف الاختلافات بين الاستجابة بالبيانات العادية على المعلمة والحمولة المحددة. إذا حدث خطأ، سيكون من السهل معرفة أن الخادم ضعيف وحتى المحرك الذي يعمل. ولكن يمكنك أيضًا العثور على خادم ضعيف إذا كنت تتوقع أنه يعكس الحمولة المحددة ولا يتم عكسها أو إذا كانت هناك بعض الأحرف المفقودة في الاستجابة.
يتم تقديم المدخلات المحددة وتنعكس في الاستجابة. يمكن الخلط بسهولة بين هذا وبين ثغرة XSS البسيطة، ولكن من السهل التمييز إذا حاولت تعيين عمليات رياضية ضمن تعبير قالب:
${7*7}
<%= 7*7 %>
${{7*7}}
#{7*7}
*{7*7}
عمليا ، يتم وضع إدخال المستخدم ضمن تعبير قالب:
engine.render("Hello {{"+greeting+"}}", data)
بمجرد اكتشاف إمكانية حقن القالب، فإن الخطوة التالية هي تحديد محرك القالب.على الرغم من وجود عدد كبير من اللغات templates، إلا أن الكثير منها يستخدم بناء جملة متشابهًا جدًا تم اختياره خصيصًا بحيث لا يتعارض مع أحرف HTML.إذا كنت محظوظًا، فسيقوم الخادم بطباعة الأخطاء وستتمكن من العثور على المحرك المستخدم داخل الأخطاء. بعض الحمولات المحتملة التي قد تسبب أخطاء:
${}
{{}}
<%= %>
${7/0}
{{7/0}}
<%= 7/0 %>
${foobar}
{{foobar}}
<%= foobar %>
${7*7}
{{7*7}}
``
بخلاف ذلك، ستحتاج إلى اختبار الحمولات المختلفة الخاصة بلغة معينة يدويًا ودراسة كيفية تفسيرها بواسطة محرك القالب. إحدى الطرق الشائعة للقيام بذلك هي إدخال عمليات رياضية عشوائية باستخدام بناء الجملة من محركات قوالب مختلفة. يمكنك بعد ذلك ملاحظة ما إذا كان قد تم تقييمها بنجاح. للمساعدة في هذه العملية، يمكنك استخدام شجرة قرارات مشابهة لما يلي:


الاستغلال

في هذه المرحلة، يجب أن تكون لديك فكرة ثابتة عن attack surface المتاح لك وأن تكون قادرًا على متابعة تقنيات التدقيق الأمني ​​التقليدية، ومراجعة كل وظيفة بحثًا عن نقاط الضعف القابلة للاستغلال. من المهم التعامل مع هذا في سياق التطبيق الأوسع - يمكن استخدام بعض الوظائف لاستغلال. 

الادوات

Tplmap

python3 ./tplmap.py -u 'http://www.target.com/page?name=John*' --os-shell
python3 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=*&comment=supercomment&link"
python3 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=InjectHere*&comment=A&link" --level 5 -e jade
 

في الختام في عالم تطبيقات الويب الدينامي والمتقدم، يجب على مطوري التطبيقات وأصحاب الأعمال أن يكونوا على استعداد دائم لمواجهة التهديدات الأمنية المستمرة. SSTI هو تهديد يمكن أن يؤثر بشكل كبير على أمان التطبيقات، ولكن باتباع ممارسات أمانية صارمة واختبار دوري للثغرات، يمكننا تقليل مخاطره وضمان أن تظل تطبيقات الويب آمنة وموثوقة لجميع المستخدمين.

إرسال تعليق

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.