@@ -121,9 +121,8 @@ def run_query(query)
121121 end
122122 end
123123
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)
125125 def add_admin_user ( username , userid , password )
126-
127126 vprint_status ( "Creating admin user #{ username } with userid #{ userid } " )
128127
129128 # add new admin user to the user table
@@ -159,10 +158,10 @@ def add_admin_user(username, userid, password)
159158 true
160159 end
161160
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
162164 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
166165 begin
167166 ::Timeout . timeout ( datastore [ 'SSH_TIMEOUT' ] ) do
168167 self . ssh_socket = Net ::SSH . start ( ip , user , ssh_opts )
@@ -235,7 +234,7 @@ def execute_command(cmd, _opts = {})
235234 @timeout = true
236235 end
237236
238- # Return ACI version-release or nil if not found
237+ # Return ACI version-release string or nil if not found
239238 def get_aci_version
240239 res = send_request_cgi ( {
241240 'method' => 'GET' ,
@@ -259,19 +258,27 @@ def get_aci_version
259258 release = res_json [ 'storage-release' ] [ 'release' ]
260259 return if release . nil?
261260
262- Rex :: Version . new ( "#{ version } -#{ release } " . gsub ( /[[:space:]]/ , '' ) )
261+ "#{ version } -#{ release } " . gsub ( /[[:space:]]/ , '' )
263262 end
264263
265264 def check
266265 version_release = get_aci_version
267266 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 } " )
275282 end
276283
277284 def exploit
0 commit comments