
CVE-2026-87902 डिटेक्टर। WordPress get_page_template LFI क्लास। केवल-डिटेक्ट। अधिकृत लैब।
WordPress Core के लिए CVE-2026-87902 डिटेक्टर।
get_page_template() को इस तरह निर्देशित किया जा सकता है कि पेज-टेम्पलेट रिज़ॉल्यूशन में सक्रिय थीम के बाहर एक पठनीय स्थानीय .php फ़ाइल शामिल हो जाए। WPSniper साइट की फ़िंगरप्रिंटिंग करता है, एक प्रकाशित page_id चुनता है, include क्लास की जाँच करता है, और VULN तभी प्रिंट करता है जब एक मज़बूत PEAR बैनर प्रोब बॉडी के लिए अद्वितीय हो।
केवल डिटेक्ट। कोई webshell नहीं। कोई pearcmd config-create नहीं। कोई OS कमांड निष्पादन नहीं।
python3 WPSniper.py -u https://lab.wordpress.local --shell
पाइपलाइन:
subfinder -d lab.example -silent | httpx -silent | python3 WPSniper.py -t 8
लिखित दायरा। अपनी लैब। इसे चलाने का पूरा लाइसेंस यही है।
WordPress पेज टेम्पलेट नाम को URL-व्युत्पन्न, url-डिकोड किए गए pagename क्वेरी वेरिएबल से बनाता है:
page-{$pagename}.php
फिर locate_template() उस फ़ाइल को शामिल करता है। प्रभावित बिल्ड्स पर रिज़ॉल्व किया गया पथ किसी अनुमत थीम डायरेक्टरी के अंदर रहने के लिए बाध्य नहीं होता। pagename में एक डबल-एन्कोडेड ट्रैवर्सल sanitize_title से इतना बच निकलता है कि get_page_template() इसे एक बार डिकोड करके थीम ट्री से बाहर निकल जाए।
एक बंद include के सामने दो पूर्व-शर्तें होती हैं:
page- से शुरू होता है (WordPress page-templates/ को डॉक्यूमेंट करता है — Twenty Twelve, Twenty Fourteen, Neve, Hestia, Sydney और अन्य)।.php लक्ष्य मौजूद हो। डिटेक्टर include ऑरेकल के रूप में स्टॉक PEAR CLI बैनर का उपयोग करता है। यह कोई बैनर लिखता नहीं है।RCE एक संभावित अनुवर्ती है जब वे शर्तें और एक राइटेबल/एक्ज़ीक्यूटेबल गैजेट मेल खाते हैं। वह अनुवर्ती इस रिपॉज़िटरी में नहीं है।
CVE पर फाइंडर क्रेडिट: Robert (ressl) via WordPress HackerOne। एडवाइज़री: GHSA-7hp8-65ch-5whp।
संस्करण तालिका अंतर्निहित है। 4.7.0–7.1.1 प्रभावित विंडो है। पैच किए गए बिंदु: 7.1.2, 7.0.6, 6.9.9, 6.8.10 … वापस 4.7.37 तक।
एक मार्केटिंग पेज जो किसी ब्लॉग पोस्ट में "pearcmd" कहता है, वह हिट नहीं है।
VULN केवल तब जब यह सब सत्य हो:
?page_id= डाइजेस्टPEAR Version:, Usage: pear, PEAR_Config, Commands for pear, config-create, DEPRECATED: PEAR commands, pear.php)pearcmd / PEAR अकेले खारिज कर दिया जाता है, खासकर यदि वह पहले से बेसलाइन HTML में मौजूद थाINFO = प्रभावित संस्करण और/या page-templates डायरेक्टरी, include बंद नहीं। INFO पर क्रिटिकल फाइल न करें।
SAFE = पैच किया गया ब्रांच, या include बेसलाइन के समान।
SKIP = WordPress नहीं, खराब URL।
/etc/passwd इस CVE के लिए गलत ऑरेकल है। locate_template() .php जोड़ता है। इंटरैक्टिव passwd कमांड इसलिए मौजूद है ताकि आप यह स्वयं देख सकें। root:x:0:0: स्टैंज़ा का दिखना असामान्य है और इसे हाथ से सत्यापित किया जाना चाहिए।
python3 -m pip install -r requirements.txt
python3 WPSniper.py -u https://lab.wordpress.local
requests आवश्यक है।
पाइपलाइन पर --shell अनदेखा किया जाता है। यह जानबूझकर है।
python3 WPSniper.py -u https://lab.wordpress.local --shell
[email protected] ▶
1 fp version / theme / patched?
2 pages REST published pages
3 theme page-templates directory
4 probe PEAR include + baseline diff (no write)
5 diff same, print Δ + tokens
6 passwd try …/etc/passwd (this class includes *.php)
7 include P include a .php path without suffix
8 save last body → /tmp/wpsniper-probe.html
9 help
0 exit
प्रत्येक प्रोब पूरा URL और एक कॉपी-पेस्ट curl प्रिंट करता है। रिपोर्ट में उसी का उपयोग करें। दूसरा अनुरोध न गढ़ें।
7 include उस अधिकृत लैब फ़ाइल के लिए है जिसे आप पहले ही रख चुके हैं। हेल्प टेक्स्ट में उदाहरण नाम एक विटनेस मार्कर है, ड्रॉपर नहीं।
WPSniper v1.3 CVE-2026-87902 get_page_template LFI
[radar] target https://lab.wordpress.local
[radar] generator=6.8.3 theme=twentytwelve status=affected
[radar] page_id=2
[radar] theme dir /wp-content/themes/twentytwelve/page-templates/ → 403
VULN lab.wordpress.local unique=['PEAR Version:','Usage: pear'] Δlen=+18420
patched 7.1.2 · 7.0.6 · 6.8.10 · backports to 4.7.37
इस पेज पर होस्ट एक लैब लेबल है। लाइव कस्टमर होस्टनेम किसी सार्वजनिक स्टिल में नहीं होने चाहिए।
7.1.2 या अपनी ब्रांच के बैकपोर्ट पर अपग्रेड करें:
7.0.6 · 6.9.9 · 6.8.10 · 6.7.9 · 6.6.9 · 6.5.12 · 6.4.12 · 6.3.12 · 6.2.13 · 6.1.14 · 6.0.16 · 5.9.18 … नीचे 4.7.37 तक।
7.1.2 यह भी आवश्यक करता है कि रिज़ॉल्व किया गया टेम्पलेट पथ किसी अनुमत थीम डायरेक्टरी के अंदर रहे। यही वास्तविक फिक्स है, कोई WAF नियम नहीं।
pearcmd config-create नहीं, कोई system() रैपर नहीं/etc/passwd नहींयदि आपको फाइंडिंग चाहिए: WPSniper द्वारा पहले ही प्रिंट किया गया curl, अद्वितीय मज़बूत टोकन, और बेसलाइन डाइजेस्ट मिसमैच संलग्न करें।
केवल अधिकृत सुरक्षा परीक्षण। इसे किसी ऐसे होस्ट के विरुद्ध चलाना जिसका आप स्वामी नहीं हैं या जो आपके पास लिखित में नहीं है, आपकी समस्या है, टूल की नहीं।
mitsec · Yunus Emre Öztaş
| चरण | क्रिया | संकेत |
|---|
| 1 | होम + जेनरेटर + /feed/ | WordPress? संस्करण? थीम स्लग? |
| 2 | REST /wp-json/wp/v2/pages या HTML में page_id= | एक प्रकाशित पेज ताकि टेम्पलेट पथ वास्तव में चले |
| 3 | GET /wp-content/themes/{slug}/page-templates/ | 200 / 401 / 403 = डायरेक्टरी मौजूद है |
| 4 | बेसलाइन ?page_id=N बनाम प्रोब pagename= | बॉडी डाइजेस्ट + अद्वितीय मज़बूत PEAR टोकन |
| फ्लैग | अर्थ |
|---|
-u URL | एकल लक्ष्य |
-l file | URL सूची |
| stdin | subfinder | httpx | WPSniper |
-t N | सूची पर थ्रेड्स (डिफ़ॉल्ट 6) |
-q | शांत पंक्तियाँ + सारांश |
--shell | एकल -u पर इंटरैक्टिव प्रोब |
--timeout | सेकंड (डिफ़ॉल्ट 14) |