
CVE-2026-87902 के लिए प्रूफ-ऑफ-कॉन्सेप्ट और डिस्क्लोज़र पैक, जो locate_template() के माध्यम से WordPress Core में एक अनऑथेंटिकेटेड लोकल फ़ाइल इन्क्लूज़न है, जिसमें एक लूपबैक लैब और पैच मार्गदर्शन शामिल है।
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-87902
WordPress — WordPress Core 7.1.1 — WordPress
WordPress Core, locate_template() फ़ंक्शन के माध्यम से, 7.1.1 तक के सभी संस्करणों में Local File Inclusion के प्रति असुरक्षित है।
| CVE | CVE-2026-87902 · CVE.org |
| CWE | CWE-98 |
| CVSS | High: 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Product | WordPress Core |
| Affected | 7.1.1 तक के सभी संस्करण (सम्मिलित) |
| Patched | 7.1.2 और बाद के संस्करण |
| Auth | unauthenticated (स्रोत मैप देखें) |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1 · vendor/client disclosure pack, स्कैनर नहीं |
wp-includes/template.php get_page_template + locate_template 7.1.1 पर। पैच 7.1.2 _wp_is_template_path_allowed और डिकोड किए गए pagename पर validate_file।
GET/?page_id={id}&pagename=templates%252F%252e%252e%252F%252e%252e%252F%252e%252e%252Fuploads%252Fghsa7hp8-witnessGET /?page_id=<published page>&pagename=<double-encoded templates/../../../uploads/ghsa7hp8-witness>WP_Query parse_query is_page from page_id; get_posts replaces WHERE with ID=page_idget_page_template urldecode pagename then page-{$pagename}.phplocate_template file_exists(stylesheet_path + '/' + template_name) no jailtemplate-loader realpath + includeUnauthenticated 200 body में GHSA7HP8-WITNESS और wp_version=7.1.1 होता है। Control GET /?page_id=N में नहीं।
पहले यह करें: WordPress Core को 7.1.2 या नए संस्करण में अपडेट करें।
अपग्रेड के बाद सत्यापित करें
CVE-2026-87902-Abraxas-Labs.py दोबारा चलाएँ: mapped witness नहीं दिखना चाहिए।यदि आप तुरंत अपडेट नहीं कर सकते
केवल http://127.0.0.1:8088 (या आपके द्वारा bound loopback) को target करें। इस स्क्रिप्ट को इंटरनेट की ओर निर्देशित न करें।
python3 CVE-2026-87902-Abraxas-Labs.py
सफलता response body में ऊपर दिया गया witness है। सामान्य 200 HTML नहीं।
प्रतिलिपि के लिए उपयोग किया गया loopback stack। आधिकारिक images, जब तक इस फ़ोल्डर में कोई Dockerfile स्रोत से build न करता हो।
cd lab
docker compose up --force-recreate
यदि YAML कोई local directory mount करता है (version table से plugin zip / source tag), तो vulnerable product tree को Compose के बगल में bind करें। 127.0.0.1 के अलावा कुछ publish न करें।
# CVE-2026-87902 / GHSA-7hp8-65ch-5whp
CWE: CWE-98
CVSS: High 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H (Wordfence). GitHub advisory: Critical.
## Description
An unauthenticated attacker can make `get_page_template()` page-template resolution include a chosen readable local `.php` file outside the active theme directories. `locate_template()` in WordPress <= 7.1.1 concatenates the caller-supplied template name onto the theme path and does not verify the result stays inside the theme. The core-reachable vector is the url-decoded `pagename` query variable. WordPress 7.1.2 adds `_wp_is_template_path_allowed()`.
## Product
WordPress 7.1.1 (fixed in 7.1.2, backported through 4.7.37). Lab oracle is LFI of a witness PHP file, not RCE.
यह disclosure pack GNU Affero General Public License v3.0 के अंतर्गत लाइसेंस प्राप्त है। देखें LICENSE।
यह pack vendor, site owner, और licensed labs के लिए है। स्क्रिप्ट 127.0.0.1 से बात करती है। जिन सिस्टम के आप मालिक नहीं हैं उनके विरुद्ध इसका उपयोग Abraxas Labs द्वारा अधिकृत नहीं है। कोई वारंटी नहीं।