
Plex2Shell (CVE-2026-96652 और तीन अन्य) से प्रभावित Plex Media Servers खोजें
Plex2Shell से प्रभावित Plex Media Servers को खोजता है, जो चार कमज़ोरियों की श्रृंखला है (CVE-2026-96652, CVE-2026-96654, CVE-2026-96655, CVE-2026-96656) जो हमलावरों को 1.43.3.10861 से पुराने Plex Media Server पर बिना लॉगिन किए नियंत्रण लेने देती है। shouldipanic.ch का हिस्सा।
Plex2Shell का शोषण 17 अक्टूबर 2026 से हो रहा है (क्रिप्टोमाइनर, प्रॉक्सी) और यह CISA की Known Exploited Vulnerabilities सूची में है। 1.43.3.10861 से पुराना हर Plex Media Server जो इंटरनेट से पहुँच योग्य है, जोखिम में है।
plex2scan दो रूपों में आता है:
plex2scan.py: बिना किसी निर्भरता वाली एकल Python फ़ाइल, अपने स्वयं के
सर्वर जाँचने के लिए: IP रेंज, Plex के पोर्ट 32400 सहित पोर्ट स्कैन, vhost
डिस्कवरी और Plex संस्करण जाँच।
हर Plex Media Server बिना लॉगिन के GET /identity का उत्तर देता है और वहाँ अपना
संस्करण बताता है। plex2scan स्टार्ट पेज लोड करता है (Plex को उसके
X-Plex-Protocol हेडर या Plex Web पेज से पहचानने के लिए) और एक बार /identity पूछता है।
इसके अलावा कुछ नहीं भेजा जाता: न लॉगिन, न शोषण।
curl -LO https://github.com/akaihigurashi/plex2scan/releases/latest/download/plex2scan.py
python3 plex2scan.py 203.0.113.0/24
Python 3.8 या नया, कुछ भी इंस्टॉल करने की आवश्यकता नहीं। उदाहरण:
python3 plex2scan.py 203.0.113.10 # 21 ports incl. 32400 + every vhost on the IP
python3 plex2scan.py 203.0.113.10:32400 # only Plex's own port
python3 plex2scan.py plex.example.ch # a Plex behind a reverse proxy
python3 plex2scan.py 203.0.113.0/24 --names domains.txt # + hostnames from your own data
python3 plex2scan.py 203.0.113.10 -p all -o out.csv # all 65535 ports, CSV output
python3 plex2scan.py -h # all options
| स्थिति | अर्थ |
|---|---|
VULNERABLE | Plex Media Server 1.43.3.10861 से पुराना |
POSSIBLY VULNERABLE | Plex Media Server मिला, संस्करण छिपा हुआ |
PATCHED | Plex Media Server 1.43.3.10861 या नया |
NOT DETECTED | कोई Plex Media Server दिखाई नहीं दे रहा |
परिणाम सबसे खराब पहले सूचीबद्ध होते हैं, एक संक्षिप्त कारण के साथ। छिपे हुए परिणाम (बंद पोर्ट,
त्रुटियाँ, vhosts जो केवल डिफ़ॉल्ट साइट दिखाते हैं) -a के साथ दिखाई देते हैं, साक्ष्य -v के साथ।
| विकल्प | यह क्या करता है |
|---|---|
-p LIST | पोर्ट: web (20 सामान्य पोर्ट + 32400, डिफ़ॉल्ट), all, या 80,443,32400 |
-n | कोई पोर्ट स्कैन नहीं, केवल 443 और 80 |
--names FILE | आपकी अपनी होस्टनेम सूची, vhosts के रूप में जाँची गई |
--no-vhosts | उसी IP पर अन्य वेबसाइटें न खोजें |
-a / -v | छिपे हुए परिणाम दिखाएँ / साक्ष्य दिखाएँ |
-o FILE | सभी परिणाम CSV में भी लिखें |
-d | डीबग: प्रत्येक अनुरोध, हेडर और मिलान |
-q | कोई बैनर नहीं (स्क्रिप्ट के लिए) |
-V | संस्करण प्रिंट करें |
-h | सभी विकल्प |
myawesomeproxy,
mylovelyminer या x12345, Plex के Codecs फ़ोल्डर में अज्ञात .so/.dll फ़ाइलें,
proxystream.st से कनेक्शन, कुछ भी न चलने पर भी उच्च CPU लोड। अपडेट करने से
पहले से घुसा हुआ हमलावर नहीं हटता।AlienVault OTX और HackerTarget बिना कुंजियों के काम करते हैं। VirusTotal, Shodan और SecurityTrails को API कुंजी चाहिए, जो environment variables से पढ़ी जाती है:
| वेरिएबल | स्रोत |
|---|---|
PANIC_VT_KEY | VirusTotal निष्क्रिय DNS |
PANIC_SHODAN_KEY | Shodan होस्टनेम |
PANIC_SECURITYTRAILS_KEY | SecurityTrails रिवर्स IP |
उन्हें एक .env फ़ाइल में रखें जिसे केवल आप पढ़ सकें, और इसे केवल स्कैन के लिए लोड करें:
( set -a; . ./.env; set +a; python3 plex2scan.py 203.0.113.10 )
--vt-key, --shodan-key और --securitytrails-key भी काम करते हैं, लेकिन कमांड-लाइन
आर्ग्युमेंट्स अन्य स्थानीय उपयोगकर्ताओं (ps) को दिखाई देते हैं और आपके शेल इतिहास में सहेजे जाते हैं।
त्रुटि संदेशों में कुंजी मान छिपे रहते हैं। (इसके लिए Jonas Hüsser को धन्यवाद।)
docker run -d --name plex2scan --restart unless-stopped \
-p 127.0.0.1:8091:8091 \
-e PANIC_ORIGIN=https://plex2scan.example.ch \
-v plex2scan-data:/data \
ghcr.io/akaihigurashi/plex2scan:latest
या Compose के साथ: docker-compose.yml डाउनलोड करें, PANIC_ORIGIN सेट करें, फिर docker compose up -d चलाएँ। कंटेनर केवल localhost पर सुनता है; इसके सामने TLS के साथ एक रिवर्स प्रॉक्सी लगाएँ
(nginx उदाहरण)।
| वेरिएबल | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
PANIC_ORIGIN | – | सार्वजनिक पता। अन्य ओरिजिन से आने वाले अनुरोध अस्वीकार किए जाते हैं। इसे सेट करें। |
PANIC_OPERATOR / PANIC_CONTACT | – | पृष्ठ के निचले भाग में वैकल्पिक संपर्क अनुभाग |
PANIC_IMPRINT_URL | – | किसी मौजूदा इम्प्रिंट का वैकल्पिक लिंक |
PANIC_TRUSTED_PROXY | 127.0.0.1,::1 | वे प्रॉक्सी जिनके X-Real-IP हेडर पर भरोसा किया जाता है |
PANIC_DENY_HOSTS / PANIC_DENY_IPS | – | इन डोमेन / पतों की कभी जाँच न करें |
PANIC_AUDIT_DIR | /data/audit | दैनिक ऑडिट लॉग फ़ाइलें |
PANIC_RETENTION_DAYS | 30 | इससे पुरानी ऑडिट फ़ाइलें हटा दी जाती हैं |
पृष्ठ में php2scan जैसी ही सुरक्षाएँ हैं: सहमति चेकबॉक्स, ऑडिट लॉग, VPN/Tor/datacenter क्लाइंट अस्वीकृत, रेट लिमिट, परिणाम कैश, सार्वजनिक होस्टनेम केवल तब जब कनेक्शन जाँचे जा रहे पते पर पिन किया गया हो, वे वेबसाइटें जिनकी कभी जाँच नहीं की जाती (प्रसिद्ध सेवाएँ, सबसे अधिक देखी जाने वाली 100 साइटें, सरकारी साइटें, प्रतिबंधित देश), और प्रतिबंधित देशों से कोई पहुँच नहीं। वेबसाइट के अलावा (443, फिर 80) पृष्ठ केवल पोर्ट 32400 को देखता है, और वह भी केवल तब जब वह खुला हो।
स्कैनर इंजन (फ़ेचिंग, फ़िंगरप्रिंटिंग, पोर्ट स्कैन, vhost डिस्कवरी, वेब
सर्वर) panic-core में रहता है।
Plex2Shell से संबंधित सब कुछ check.py में है।
plex2scan.py और web.py दोनों से जनरेट किए जाते हैं:
git clone https://github.com/akaihigurashi/panic-core ../panic-core
python3 ../panic-core/bundle.py check.py
GPL-3.0, देखें LICENSE। फ़ॉन्ट: Inter और JetBrains Mono (SIL Open Font License)। Plex, Inc. से संबद्ध या उनके द्वारा समर्थित नहीं; "Plex" उनका ट्रेडमार्क है।