
# CVE-2025-59712 और CVE-2025-59713 के लिए Snipe-IT PoC एक्सप्लॉइट
यह PoC CVE-2025-59712 (User-Agent हैडर में XSS) और CVE-2025-59713 (असुरक्षित deserialization) का शोषण करने के लिए एक स्वचालित स्क्रिप्ट प्रदान करता है।
ये दोनों कमज़ोरियाँ Synacktiv द्वारा Snipe-IT सॉफ़्टवेयर पर कमज़ोरी अनुसंधान के दौरान खोजी गई थीं। Snipe-IT Laravel पर आधारित एक ओपन-सोर्स संपत्ति प्रबंधन प्रणाली है, जिसे संगठनों को उनकी भौतिक और डिजिटल संपत्तियों को ट्रैक करने और प्रबंधित करने में मदद करने के लिए डिज़ाइन किया गया है।
इसका तकनीकी विवरण Synacktiv की वेबसाइट पर समर्पित सुरक्षा सलाह में पाया जा सकता है।
यह स्क्रिप्ट तीन उप-कमांड प्रदान करती है, जो शोषण मोड के अनुरूप हैं: xss, rce और fullchain।
यह उप-कमांड CVE-2025-59712 का शोषण करता है, जो कम-विशेषाधिकार वाले उपयोगकर्ता को /reports/activity रूट को कॉल करने पर प्रस्तुत HTML पृष्ठ में मनमाना JavaScript इंजेक्ट करने की अनुमति देता है। यह केवल किसी admin उपयोगकर्ता, या उस उपयोगकर्ता द्वारा किया जा सकता है जिसके पास रिपोर्ट देखने की स्पष्ट अनुमति हो। यह इंजेक्शन इसलिए संभव है क्योंकि जब उपयोगकर्ता अपनी प्रोफ़ाइल जानकारी अपडेट करता है तो User-Agent फ़ील्ड का उचित सैनिटाइज़ेशन नहीं होता।
ऐसा करने के लिए, यह पहले कम-विशेषाधिकार वाले उपयोगकर्ता के रूप में लॉग इन करेगा, और फिर --javascript फ़्लैग के माध्यम से दी गई फ़ाइल में परिभाषित JavaScript कोड इंजेक्ट करेगा।
$ python3 exploit.py xss --help
Usage: exploit.py xss [OPTIONS]
Execute XSS attack only with custom JavaScript payload
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ * --url -u TEXT Target Snipe-IT URL [required] │
│ * --login -l TEXT Low-privileged username [required] │
│ * --password -p TEXT Low-privileged password [required] │
│ * --new-name -n TEXT New name for low-privileged user [required] │
│ * --javascript -js TEXT Path to custom JavaScript file [required] │
│ --proxy -x TEXT HTTP proxy (http://ip:port) │
│ --verbose -v [quiet|normal|verbose] Logging verbosity [default: normal] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
[!IMPORTANT]
सुरक्षा अनुसंधान के दौरान, Snipe-IT के एक संस्करण पर परीक्षण किए गए थे जो डिफ़ॉल्ट रूप से उसUser-Agentफ़ील्ड को प्रदर्शित करता था जिसमें दुर्भावनापूर्ण JavaScript इंजेक्ट की जाती है। कमिट 10e5d88 के बाद से, एक्शन लॉग तालिका प्रस्तुत करने परUser-Agentप्रॉपर्टी डिफ़ॉल्ट रूप से प्रदर्शित नहीं होती है। इसलिए, XSS ट्रिगर करने वाले admin को इस कमिट के बाद के Snipe-IT संस्करणों के लिए व्यू विकल्पों मेंUser-Agentबॉक्स को चेक किया हुआ होना चाहिए।
यह उप-कमांड CVE-2025-59713 का शोषण करता है, जो admin या superadmin उपयोगकर्ता के क्रेडेंशियल ज्ञात होने पर रिमोट कोड निष्पादन की अनुमति देता है। ऐसा करने के लिए, निम्नलिखित चरण निष्पादित किए जाते हैं:
db-dumps/mysql-snipeit.sql फ़ाइल में अतिरिक्त SQL स्टेटमेंट शामिल होते हैं, जो एक नया कस्टम फ़ील्ड बनाते हैं और अंतिम एक्शन लॉग को Laravel pop chain वाले JSON ऑब्जेक्ट के साथ संपादित करते हैं, जो पुनर्स्थापना पर निष्पादित होता है।[!TIP] डिफ़ॉल्ट रूप से, Snipe-IT बैकअप में
.envफ़ाइल शामिल करता है। यदि स्क्रिप्ट इसे पहचान लेती है, तोAPP_KEYमान प्रदर्शित किया जाता है और.envफ़ाइल./outputनिर्देशिका में सहेजी जाती है (उस फ़ाइल के लिए कस्टम स्थान--output-dirके साथ निर्दिष्ट किया जा सकता है)।
[!CAUTION] बैकअप को पुनर्स्थापित करने से इंस्टेंस से जुड़े सभी उपयोगकर्ता डिस्कनेक्ट हो जाते हैं।
/api/v1/reports/activity रूट को कॉल किया जाता है, जो deserialization को ट्रिगर करता है और Laravel pop chain को निष्पादित करता है।$ python3 exploit.py rce --help
Usage: exploit.py rce [OPTIONS]
Execute RCE attack only (requires existing admin account)
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ * --url -u TEXT Target Snipe-IT URL [required] │
│ * --admin-user -au TEXT Admin username [required] │
│ * --admin-pass -ap TEXT Admin password [required] │
│ --output-dir -od PATH Output dir for .env file [default: /home/ninja/Téléchargements/snipe-it-advisory/exploit/output] │
│ --shell-ip -si TEXT Reverse shell IP address │
│ --shell-port -sp INTEGER Reverse shell port │
│ --command -c TEXT Custom command (overrides reverse shell) │
│ --proxy -x TEXT HTTP proxy (http://ip:port) │
│ --verbose -v [quiet|normal|verbose] Logging verbosity [default: normal] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯