@@ -121,9 +121,8 @@ def run_query(query)
121
121
end
122
122
end
123
123
124
- # add an admin user to the Acronis PostgreSQL DB (keystone) using default credentials (vstoradmin:vstoradmin)
124
+ # add an admin user to the Acronis PostgreSQL DB (keystone) using default credentials (vstoradmin:vstoradmin)
125
125
def add_admin_user ( username , userid , password )
126
-
127
126
vprint_status ( "Creating admin user #{ username } with userid #{ userid } " )
128
127
129
128
# add new admin user to the user table
@@ -159,10 +158,10 @@ def add_admin_user(username, userid, password)
159
158
true
160
159
end
161
160
161
+ # create SSH session.
162
+ # based on the ssh_opts can this be key or password based.
163
+ # if login is successfull, return true else return false. All other errors will trigger an immediate fail
162
164
def do_sshlogin ( ip , user , ssh_opts )
163
- # create SSH session.
164
- # based on the ssh_opts can this be key or password based.
165
- # if login is successfull, return true else return false. All other errors will trigger an immediate fail
166
165
begin
167
166
::Timeout . timeout ( datastore [ 'SSH_TIMEOUT' ] ) do
168
167
self . ssh_socket = Net ::SSH . start ( ip , user , ssh_opts )
@@ -235,7 +234,7 @@ def execute_command(cmd, _opts = {})
235
234
@timeout = true
236
235
end
237
236
238
- # Return ACI version-release or nil if not found
237
+ # Return ACI version-release string or nil if not found
239
238
def get_aci_version
240
239
res = send_request_cgi ( {
241
240
'method' => 'GET' ,
@@ -259,19 +258,27 @@ def get_aci_version
259
258
release = res_json [ 'storage-release' ] [ 'release' ]
260
259
return if release . nil?
261
260
262
- Rex :: Version . new ( "#{ version } -#{ release } " . gsub ( /[[:space:]]/ , '' ) )
261
+ "#{ version } -#{ release } " . gsub ( /[[:space:]]/ , '' )
263
262
end
264
263
265
264
def check
266
265
version_release = get_aci_version
267
266
return CheckCode ::Unknown ( 'Could not retrieve the version information.' ) if version_release . nil?
268
- return CheckCode ::Safe ( "Version #{ version_release } " ) if version_release >= Rex ::Version . new ( '5.0.1-61' )
269
- return CheckCode ::Safe ( "Version #{ version_release } " ) if version_release >= Rex ::Version . new ( '5.1.1-71' )
270
- return CheckCode ::Safe ( "Version #{ version_release } " ) if version_release >= Rex ::Version . new ( '5.2.1-69' )
271
- return CheckCode ::Safe ( "Version #{ version_release } " ) if version_release >= Rex ::Version . new ( '5.3.1-53' )
272
- return CheckCode ::Safe ( "Version #{ version_release } " ) if version_release >= Rex ::Version . new ( '5.4.4-132' )
273
-
274
- CheckCode ::Appears ( "Version #{ version_release } " )
267
+ return CheckCode ::Appears ( "Version #{ version_release } " ) if Rex ::Version . new ( version_release ) < Rex ::Version . new ( '5.0.1-61' )
268
+
269
+ case version_release . split ( /\. \d -/ ) [ 0 ]
270
+ when '5.0'
271
+ return CheckCode ::Appears ( "Version #{ version_release } " ) if Rex ::Version . new ( version_release ) < Rex ::Version . new ( '5.0.1-61' )
272
+ when '5.1'
273
+ return CheckCode ::Appears ( "Version #{ version_release } " ) if Rex ::Version . new ( version_release ) < Rex ::Version . new ( '5.1.1-71' )
274
+ when '5.2'
275
+ return CheckCode ::Appears ( "Version #{ version_release } " ) if Rex ::Version . new ( version_release ) < Rex ::Version . new ( '5.2.1-69' )
276
+ when '5.3'
277
+ return CheckCode ::Appears ( "Version #{ version_release } " ) if Rex ::Version . new ( version_release ) < Rex ::Version . new ( '5.3.1-53' )
278
+ when '5.4'
279
+ return CheckCode ::Appears ( "Version #{ version_release } " ) if Rex ::Version . new ( version_release ) < Rex ::Version . new ( '5.4.4-132' )
280
+ end
281
+ CheckCode ::Safe ( "Version #{ version_release } " )
275
282
end
276
283
277
284
def exploit
0 commit comments