
# स्नो मंकी फॉर्म्स <= 12.0.3 - पाथ ट्रैवर्सल के माध्यम से बिना प्रमाणीकरण के मनमाना फ़ाइल विलोपन (CVE-2026-1056)
इस रिपॉजिटरी में Snow Monkey Forms WordPress प्लगइन (संस्करण <= 12.0.3) में एक गंभीर कमजोरी के लिए एक Proof of Concept (PoC) शामिल है। यह कमजोरी एक बिना प्रमाणीकरण वाले हमलावर को Path Traversal के माध्यम से सर्वर पर मनमानी फ़ाइलें हटाने की अनुमति देती है।
संदर्भ: Sarawut Poolkhet (MisterHelloz)
Snow_Monkey\Plugin\Forms\App\Rest\Route\View.php/wp-json/snow-monkey-form/v1/view)यह कमजोरी Snow_Monkey\Plugin\Forms\App\Rest\Route\View.php पर स्थित REST API हैंडलर में निहित है। send() विधि उपयोगकर्ता इनपुट पैरामीटर के आधार पर प्रवाह निर्धारित करती है।
// फ़ाइल: App/Rest/Route/View.php
public function send() {
Csrf::save_token();
$method = Meta::get_method(); // $_POST['snow-monkey-forms-meta']['method'] से प्राप्त
// कमजोरी: यदि 'method' 'input' है, तो महत्वपूर्ण CSRF जांच को बाईपास कर दिया जाता है।
if ( 'input' === $method ) {
return $this->_send(); // _send() के लिए सीधा निष्पादन प्रवाह
}
// CSRF जांच केवल अन्य विधियों (जैसे, 'confirm', 'complete') के लिए की जाती है
if ( ! Csrf::validate( Meta::get_token() ) ) { ... }
विधि पैरामीटर के रूप में input प्रदान करके, एक हमलावर एप्लिकेशन को _send() फ़ंक्शन को तुरंत निष्पादित करने के लिए मजबूर करता है, जिससे अनधिकृत कार्यों को रोकने के लिए बनाया गया Csrf::validate() सुरक्षा नियंत्रण छूट जाता है।
_send() विधि के अंदर, एप्लिकेशन उपयोगकर्ता-विशिष्ट अस्थायी निर्देशिकाओं के लिए एक सफाई प्रक्रिया करने का प्रयास करता है। यह प्रक्रिया formid पैरामीटर पर निर्भर करती है।
// फ़ाइल: App/Rest/Route/View.php -> _send()
// 'form_id' बिना सैनिटाइज़ेशन के Meta क्लास के माध्यम से सीधे POST डेटा से प्राप्त होता है
$user_dirpath = Directory::generate_user_dirpath( $this->setting->get( 'form_id' ), false );
Directory::do_empty( $user_dirpath, true ); // सामग्री को पुनरावर्ती रूप से हटाएं
Directory::remove( $user_dirpath ); // निर्देशिका को ही हटाएं
महत्वपूर्ण दोष इस बात में निहित है कि Directory::generate_user_dirpath पथ कैसे बनाता है:
// फ़ाइल: App/Model/Directory.php
public static function generate_user_dirpath( $form_id, $do_create_directory = true ) {
$saved_token = Csrf::saved_token();
// ... (टोकन के लिए Regex जांच मौजूद है, लेकिन form_id के लिए नहीं) ...
$user_dir = path_join( static::get(), $saved_token );
// कमजोरी: $form_id सीधे जोड़ा जाता है।
// WordPress path_join() '../' अनुक्रमों को हल या सैनिटाइज़ नहीं करता है।
$user_dir = path_join( $user_dir, (string) $form_id );
return $user_dir;
}
$form_id चर को स्ट्रिंग में बदला जाता है लेकिन कभी भी पूर्णांक होने की पुष्टि नहीं की जाती। यह एक हमलावर को निर्देशिका ट्रैवर्सल वर्णों (जैसे, ../../../../) इंजेक्ट करने की अनुमति देता है।
requests लाइब्रेरी (pip install requests)python exploit.py -u <TARGET_URL> -f <TRAVERSAL_PAYLOAD>
