Skip to content

Commit 1140efc

Browse files
committed
Support adding encrypted files to archives & jars
1 parent 7baf199 commit 1140efc

File tree

5 files changed

+53
-7
lines changed

5 files changed

+53
-7
lines changed

lib/msf/core/payload/android.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,13 @@ def generate_jar(opts={})
127127
[ "AndroidManifest.xml" ],
128128
[ "resources.arsc" ]
129129
]
130-
jar.add_files(files, MetasploitPayloads.path("android", "apk"))
130+
131+
files.each do |file|
132+
path = ['android', 'apk', file].flatten.join('/')
133+
contents = ::MetasploitPayloads.read(path)
134+
jar.add_file(file.join('/'), contents)
135+
end
136+
131137
jar.add_file("classes.dex", fix_dex_header(classes))
132138
jar.build_manifest
133139

lib/msf/core/payload/java.rb

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,14 @@ def generate_jar(opts={})
5858
jar = Rex::Zip::Jar.new
5959
jar.add_sub("metasploit") if opts[:random]
6060
jar.add_file("metasploit.dat", stager_config(opts))
61-
jar.add_files(paths, ::MetasploitPayloads.path('java'))
61+
jar.add_file('metasploit/', '') # Create the metasploit dir
62+
63+
paths.each do |path_parts|
64+
path = ['java', path_parts].flatten.join('/')
65+
contents = ::MetasploitPayloads.read(path)
66+
jar.add_file(path_parts.join('/'), contents)
67+
end
68+
6269
jar.build_manifest(:main_class => main_class)
6370

6471
jar
@@ -103,7 +110,14 @@ def generate_war(opts={})
103110
zip.add_file('WEB-INF/', '')
104111
zip.add_file('WEB-INF/web.xml', web_xml)
105112
zip.add_file("WEB-INF/classes/", "")
106-
zip.add_files(paths, MetasploitPayloads.path('java'), 'WEB-INF/classes/')
113+
zip.add_file('metasploit/', '') # Create the metasploit dir
114+
115+
paths.each do |path_parts|
116+
path = ['java', path_parts].flatten.join('/')
117+
contents = ::MetasploitPayloads.read(path)
118+
zip.add_file(path_parts.join('/'), contents)
119+
end
120+
107121
zip.add_file("WEB-INF/classes/metasploit.dat", stager_config(opts))
108122

109123
zip
@@ -138,7 +152,14 @@ def generate_axis2(opts={})
138152
zip = Rex::Zip::Jar.new
139153
zip.add_file('META-INF/', '')
140154
zip.add_file('META-INF/services.xml', services_xml)
141-
zip.add_files(paths, MetasploitPayloads.path('java'))
155+
zip.add_file('metasploit/', '') # Create the metasploit dir
156+
157+
paths.each do |path_parts|
158+
path = ['java', path_parts].flatten.join('/')
159+
contents = ::MetasploitPayloads.read(path)
160+
zip.add_file(path_parts.join('/'), contents)
161+
end
162+
142163
zip.add_file('metasploit.dat', stager_config(opts))
143164
zip.build_manifest(:app_name => app_name)
144165

lib/msf/util/exe.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1599,7 +1599,14 @@ def self.to_jar(exe, opts = {})
15991599
paths = [
16001600
[ "metasploit", "Payload.class" ],
16011601
]
1602-
zip.add_files(paths, MetasploitPayloads.path('java'))
1602+
1603+
zip.add_file('metasploit/', '')
1604+
paths.each do |path_parts|
1605+
path = ['java', path_parts].flatten.join('/')
1606+
contents = ::MetasploitPayloads.read(path)
1607+
zip.add_file(path_parts.join('/'), contents)
1608+
end
1609+
16031610
zip.build_manifest :main_class => "metasploit.Payload"
16041611
config = "Spawn=#{spawn}\r\nExecutable=#{exe_name}\r\n"
16051612
zip.add_file("metasploit.dat", config)

modules/exploits/multi/misc/java_jmx_server.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,13 @@ def on_request_uri(cli, request)
6969
["metasploit", "JMXPayloadMBean.class"],
7070
["metasploit", "JMXPayload.class"],
7171
]
72-
@jar.add_files(paths, MetasploitPayloads.path('java'))
72+
73+
@jar.add_file('metasploit/', '')
74+
paths.each do |path_parts|
75+
path = ['java', path_parts].flatten.join('/')
76+
contents = ::MetasploitPayloads.read(path)
77+
@jar.add_file(path_parts.join('/'), contents)
78+
end
7379
end
7480

7581
if request.uri =~ /mlet$/

modules/exploits/multi/misc/java_rmi_server.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,13 @@ def on_request_uri(cli, request)
173173
[ "metasploit", "RMILoader.class" ],
174174
[ "metasploit", "RMIPayload.class" ],
175175
]
176-
jar.add_files(paths, MetasploitPayloads.path('java'))
176+
177+
jar.add_file('metasploit/', '') # create metasploit dir
178+
paths.each do |path_parts|
179+
path = ['java', path_parts].flatten.join('/')
180+
contents = ::MetasploitPayloads.read(path)
181+
jar.add_file(path_parts.join('/'), contents)
182+
end
177183

178184
send_response(cli, jar.pack,
179185
{

0 commit comments

Comments
 (0)