Search 🔎🖥️

Bandit Level 21 to 23 (Arabic)

بسم الله


--------------------------------------------------------------------

في المرحلة 21←22 يقول إنه في برنامج مجدول يعمل تلقائيا في فترات محددة وموجود في المسار /etc/cron.d ، نروح المسار ونشوف وش الملفات اللي عندنا:

*ملاحظة: أنا شرحت الـ cron باختصار على مقطعي باليوتيوب لما حليت هذه المرحلة من الدقيقة 0:31 إلى 2:55.

cd /etc/cron.d

ls



طلع معاي عدة ملفات، احنا في المرحلة 21 ونبي نروح 22، إذن بنستعرض الملف اللي يخص 22 وهو
cronjob_bandit22

cat /etc/cron.d/cronjob_bandit22



هذا الكرون عبارة عن shell script يملكه bandit22 ويعمل عند كل إعادة تشغيل للجهاز وفي كل دقيقة. نستعرض هذا الـscript

cat /usr/bin/cronjob_bandit22.sh



في البداية عندي الـshebang وهو مثل المعرف للغة المستخدمة في هذا الـscript، في هذه الحالة هي bash، بعد كذا يقوم هذا السكريب بتغيير الصلاحيات للملف اللي اسمه

t706lds9S0RqQh9aMc z6ShpAoZKF7fgv

ويخليه مقروء ومكتوب للمالك اللي هو bandit22 ومقروء فقط لبقية المستخدمين.

تمام كذا عرفنا إننا نقدر نقرأ هذا الملف بس وش بداخل هذا الملف؟ نشوف السطر اللي تحته اللي باختصار ينسخ كلمة السر لـbandit22 ويحطها في هذا الملف. إذن الحل بكل سهولة إننا نروح لهذا الملف ونقرأه وبكذا بنحصل على كلمة السر.




ناخذ كلمة السر وننتقل للمرحلة اللي بعدها

ssh bandit22@bandit.labs.overthewire.org -p 2220

--------------------------------------------------------------------

في المرحلة 22←23 نفس الطريقة للمرحلة السابقة، نقرأ الكرون ونشوف وش يسوي ونحاول نحصل من خلاله على كلمة السر.

cd /etc/cron.d

ls

نفس الشيء بنركز على الـcronjob المتعلق بـ23 لأن احنا نبي ننتقل لها. نعرض السكريبت باستخدام cat







هذا السكريبت ايش يسوي؟ بالبداية يعرف متغير اسمه myname ويخزن فيه قيمة الكوماند whoami، هذه الكوماند تطبع اسم المستخدم الحالي، يعني لو شغلناها بيطبع لنا bandit22. طيب الحين الكرون هذا مِلك مين؟ ملك bandit23، إذن الناتج بيكون bandit23. بعد كذا يعرف متغير آخر اسمه mytarget ويخزن قيمة تنفيذ هذه الـcommand

echo I am user $myname | md5sum | cut -d ' ' -f 1

طيب مو احنا عرفنا إن قيمة $myname بتكون bandit23، إذن اللي بيتنفذ بالضبط هو

echo I am user bandit23 | md5sum | cut -d ' ' -f 1

فبناخذ هذه الـCommand وننفذها وبيطلع معانا هذه القيمة:

8ca319486bfbbc3663ea0fbe81326349

بعد كذا يطبع نص يقولي إنه ينسخ كلمة السر لـbandit23 ويحطها بملف على tmp وآخر سطر بالسكريبت هو الكوماند اللي بتسوي هالشغلة وهي

cat /etc/bandit_pass/$myname > /tmp/$mytarget

باستبدال المتغيرات myname و mytarget بقيمهم اللي أوجدناها، تصبح الكوماند كذا:

cat /etc/bandit_pass/bandti23 > /tmp/ 8ca319486bfbbc3663ea0fbe81326349

إذن باختصار هو يطبع كلمة السر للمرحلة الجاية بالملف اللي على /tmp فنروح للملف ونعرضه وناخذ كلمة السر.






ناخذ كلمة السر وننتقل للمرحلة اللي بعدها

ssh bandit23@bandit.labs.overthewire.org -p 2220

------------------------------------------------------------------------------

في المرحلة 23←24 نفس الطريقة للمرحلة السابقة، نقرأ الكرون ونشوف وش يسوي ونحاول نحصل من خلاله على كلمة السر.

cd /etc/cron.d

ls

نفس الشيء بنركز على الـcronjob المتعلق بـ24 لأن احنا نبي ننتقل لها.



نعرض السكريبت باستخدام cat











بالبداية يعرف متغير اسمه myname ويخزن فيه قيمة whoami، وبما إن المالك للملف هو bandit24 إذن القيمة اللي بتتخزن في المتغير هي bandit24. بعد كذا يروح لـ

/var/spool/bandit24/foo

ويطبع لي نص يقول

"تنفيذ وحذف كل الـscripts الموجودة في /var/spool/bandit24/foo"

وهذا بالضبط اللي بتسويه الـfor loop اللي تحت.

بالبداية فيه استثناء، اللي هو إذا كان اسم الملف "." أو ".." إذن تجاهله، طيب ليش؟ لأن "." تدل على المجلد الحالي و ".." تدل على المجلد السابق، فما ينفع تنحذف.

بعد كذا بياخذ الملفات واحد واحد وبينفذ عليها هذه العملية

stat --format "%U" ./$i

والناتج منها بيخزنه في متغير اسمه owner، إذا كانت قيمة هذا المتغير bandit23 إذن راح ينفذه ثم يحذفه، إذا لا ما كان قيمته bandit23 إذن يحذف الملف بدون تنفيذ (يعني تشغيل).

طيب وش تسوي بالضبط هذه stat --format "%U" ./$i

هذي الكوماند تستخرج لي المستخدم المالك للملف فقط من النتيجة اللي تطلعها stat

فلو نجرب نشغل stat لحالها على ملف يملكه kali بتطلع لي معلومات كثير، مثل كذا:






ولو شغلناها باستخدام الاختيارات المضافة عليها مثل ما هو موجود بالسكريبت رح يطلع معانا اسم المستخدم فقط، مثل كذا:



يعني الزبدة وشهي، الحين عندي سكريبت ينفذ السكريبتات اللي يسويها bandit23 (اللي هو احنا) المُخزنة في المجلد /var/spool/bandit24/foo ،وبعد ما ينفذها يحذفها.

إذن المطلوب مننا الحين إننا نسوي سكريبت ينفذه لنا bandit24، ونخزنه في المسار /var/spool/bandit24/foo. وبما إن bandit24 عنده أكيد صلاحية إنه يقرأ الملف اللي يحتوي على كلمة السر حقته، فاحنا نبغاه يقرأ كلمة السر حقته ويرسلها لنا في ملف. كيف نسوي كذا؟

أول شيء نكتب الـscript

#!/bin/bash

cat /etc/bandit_pass/bandit24 > /tmp/asmaa1/bandit24_pass

هذا السكريبت بياخذ كلمة السر لـbandit24 ويخزنها في ملف اسمه bandit24_pass ثم يحفظ هذا الملف في /tmp/asmaa1

cd /tmp

mkdir asmaa1

chmod 777 asmaa1

نروح على /tmp  وننشئ مجلد ونعطيه صلاحيات مفتوحة، عشان يقدر bandit24 لما ينفذ السكريبت يكتب جوا هذا المجلد ويرسل لنا كلمة السر

cd asmaa1

vim getpass.sh

نلصق السكريبت في هذا الملف، ثم نخرج من vim بعد ما نحفظ التغييرات

chmod +x getpass.sh عشان نخلي هذا الملف يمكن تنفيذه

وآخر خطوه ننسخ هذا الملف للمسار اللي bandit24 ينفذ الملفات اللي فيه بهالطريقة:

cp getpass.sh /var/spool/bandit24/foo





الحين كل شيء جاهز، نستنى بس بداية دقيقة جديدة، ونعرض الملفات اللي موجودة بـ/tmp/asmaa1 وبنلاقي ملف جديد اسمه bandit24_pass، يحتوي على كلمة السر للمرحلة الجاية، ناخذها وننتقل للمرحلة اللي بعدها.





ssh bandit24@bandit.labs.overthewire.org -p 2220

تكملة الحل على هذا الرابط

Comments

Popular posts from this blog

TryHackMe|Blog WriteUp\Walkthrough (Arabic)

eJPTv2 Exam Review (Arabic)

TryHackMe|Blueprint WriteUp\Walkthrough (Arabic)