
CVE-2026-2002 राइटअप और प्रूफ-ऑफ-कॉन्सेप्ट
Forminator Forms – Contact Form, Payment Form & Custom Form Builder plugin for WordPress, अपने सभी संस्करणों (1.50.2 तक) में, form_name पैरामीटर के माध्यम से Stored Cross-Site Scripting की चपेट में है। इसका कारण अपर्याप्त इनपुट sanitization और आउटपुट escaping है। इससे प्रमाणित हमलावर, प्रशासक-स्तरीय पहुँच के साथ, पृष्ठों में मनमाना वेब स्क्रिप्ट इंजेक्ट कर सकते हैं जो उपयोगकर्ता द्वारा इंजेक्टेड पृष्ठ पर जाने पर निष्पादित होगी। प्लगइन प्रशासकों को निम्न स्तर के उपयोगकर्ताओं को फॉर्म प्रबंधन अनुमति देने की अनुमति देता है, जो इसे सब्सक्राइबर्स जैसे उपयोगकर्ताओं द्वारा शोषण योग्य बना सकता है।
मूल कारण कुछ ऐसा है जिसमें लॉजिक बग के प्रति सूक्ष्मता की आवश्यकता है: (यह फंक्शन /fields/html.php फ़ाइल में है)
public function markup( $field, $views_obj ) {
$settings = $views_obj->model->settings;
$html = '';
$label = esc_html( self::get_property( 'field_label', $field ) );
$id = self::get_property( 'element_id', $field );
$form_id = false;
$html .= '<div class="forminator-field forminator-merge-tags" data-field="' . $id . '">';
if ( $label ) {
$html .= sprintf(
'<label class="forminator-label">%s</label>',
self::convert_markdown( $label )
);
}
// Check if form_id exist.
if ( isset( $settings['form_id'] ) ) {
$form_id = $settings['form_id'];
}
// To allow iframes in content.
add_filter( 'wp_kses_allowed_html', array( 'Forminator_Core', 'add_iframe_to_kses_allowed_html' ) );
$content = wp_kses_post( self::get_property( 'variations', $field ) ); // root cause here
remove_filter( 'wp_kses_allowed_html', array( 'Forminator_Core', 'add_iframe_to_kses_allowed_html' ) );
$html .= forminator_replace_variables(
$content,
$form_id
);
$html .= '</div>';
return $html;
}
यह कोड निम्न विशेषाधिकार वाले उपयोगकर्ता से XSS को रोकने के लिए एक सैनिटाइज़ फंक्शन (wp_kses_post) का उपयोग करता है, लेकिन समस्या यह है कि यह वेरिएबल्स को बदलने से पहले सैनिटाइज़ करता है। परिणामस्वरूप, उपयुक्त विशेषाधिकार वाला हमलावर wp_kses_post को बायपास करने के लिए वैध HTML टैग्स का उपयोग कर सकता है और XSS को ट्रिगर करने के लिए वेरिएबल्स में जावास्क्रिप्ट पेलोड इंजेक्ट कर सकता है।
Edit Form विशेषाधिकार वाला हमलावर HTML फ़ील्ड में इस प्रकार का HTML डाल सकता है:
और फिर form_name को बदल सकता है:
javascript:alert(1) or javascript:<Payload>
| स्कोर | गंभीरता | संस्करण | वेक्टर स्ट्रिंग |
|---|---|---|---|
| 4.4 | MEDIUM | 3.1 | CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N |
मेरी राय में, इस बग की गंभीरता बहुत अधिक नहीं है, लेकिन इसमें तर्क और कोड समीक्षा में जागरूकता की सूक्ष्मता की आवश्यकता होती है, जैसा कि आप देख सकते हैं कि कोड की केवल दो पंक्तियों के बीच एक छोटी सी गलती एक भेद्यता पैदा करती है।

यदि आप इस प्रकार के शोध से जुड़ते हैं और अधिक खुदाई का समर्थन करना चाहते हैं, तो आप दान कर सकते हैं और मेरा समर्थन कर सकते हैं। मैं आपके योगदान की सराहना करता हूं।
╰(°▽°)╯