
Profile Builder < 4.0.1 में PHP ऑब्जेक्ट इंजेक्शन
शोधकर्ता: Vivien Lebas
प्रभावित प्लगइन: Profile Builder (WordPress)
प्रभावित संस्करण: < 4.0.1
इसमें ठीक किया गया: 4.0.1
प्रकार: PHP ऑब्जेक्ट इंजेक्शन (असुरक्षित डीसेरियलाइज़ेशन)
CWE: CWE-502
OWASP: A8 – असुरक्षित डीसेरियलाइज़ेशन
CVSS 3.1: 6.6 (मध्यम) — AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H
WPScan: सत्यापित सलाह
Profile Builder का Import/Export ऐड-ऑन कॉन्फ़िगरेशन फ़ाइल आयात करते समय डीसेरियलाइज़ किए जा रहे डेटा के प्रकार की जाँच नहीं करता। इसलिए एक उच्च-विशेषाधिकार उपयोगकर्ता (व्यवस्थापक) एक तैयार की गई JSON फ़ाइल आयात करके PHP ऑब्जेक्ट इंजेक्शन ट्रिगर कर सकता है।
यह ऐड-ऑन एक निःशुल्क एक्सटेंशन है, डिफ़ॉल्ट रूप से अक्षम, और Profile Builder स्वयं कोई उपयोगी POP (Property-Oriented Programming) चेन प्रदान नहीं करता। इसलिए ठोस प्रभाव तक पहुँचने के लिए किसी अन्य स्थापित प्लगइन या थीम से उपयुक्त गैजेट की आवश्यकता होती है।
भेद्यता आयात सुविधा में है:
/wp-admin/admin.php?page=pbie-import-export&tab=import
आयातित फ़ाइल के अंदर एक मान बिना किसी प्रकार की जाँच के WordPress के
maybe_unserialize() को पास किया जाता है। यदि मान एक सीरियलाइज़्ड ऑब्जेक्ट स्ट्रिंग
है, तो PHP नामित क्लास को इंस्टैंशिएट करता है और आयात अनुरोध के दौरान उसके मैजिक
मेथड (__wakeup, __destruct) चलाता है।
manage_options)। मल्टीसाइट पर, आयात manage_network
पर निर्भर है, इसलिए नेटवर्क/सुपर व्यवस्थापक आवश्यक है; सबसाइट व्यवस्थापक को
अस्वीकार कर दिया जाता है।Evil का उपयोग किसी भी ऐसी क्लास के प्रतिनिधि के रूप में करता
है जो कोई स्थापित प्लगइन या थीम प्रदान करता हो। https://victim.example/wp-admin/admin.php?page=pbie-import-export&tab=import
payload.json के रूप में सहेजें: {
"options": {},
"posts": {
"wppb-rf-cpt": [
{
"post_title": "POC",
"post_name": "poc",
"post_type": "post",
"post_status": "publish",
"postmeta": {
"poc": ["O:4:\"Evil\":0:{}"]
}
}
]
}
}
payload.json चुनें और Import दबाएँ।postmeta मान के अंदर का स्ट्रिंग maybe_unserialize() को पास किया जाता है, इसलिए
नामित क्लास इंस्टैंशिएट होती है और आयात अनुरोध के दौरान उसके मैजिक मेथड चलते हैं।
wppb-ul-cpt, wppb-rf-cpt या wppb-epf-cpt में से एक होनी चाहिए,
लेकिन वास्तव में बनाया गया पोस्ट प्रकार प्रति-पोस्ट post_type फ़ील्ड से लिया जाता
है, इसलिए यह पथ Pro लाइसेंस के बिना भी पहुँच योग्य है।PHP ऑब्जेक्ट इंजेक्शन। किसी अन्य स्थापित प्लगइन या थीम से उपयुक्त गैजेट चेन के साथ, यह फ़ाइल संचालन जैसी क्रियाओं या, उपलब्ध गैजेट के आधार पर, रिमोट कोड एक्ज़ीक्यूशन तक ले जा सकता है।
Profile Builder को 4.0.1 या बाद के संस्करण में अपडेट करें।
यह भेद्यता विक्रेता को ज़िम्मेदारीपूर्वक प्रकट की गई थी और समाधान उपलब्ध होने के बाद शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है।