Skip to content

Commit a3d2cba

Browse files
author
Brent Cook
committed
Land rapid7#6906, Improve msfvenom error handling and spec coverage
2 parents fb95abc + c2cf992 commit a3d2cba

File tree

2 files changed

+895
-159
lines changed

2 files changed

+895
-159
lines changed

lib/msf/core/payload_generator.rb

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ class PayloadGeneratorError < StandardError
99
class EncoderSpaceViolation < PayloadGeneratorError
1010
end
1111

12+
class PayloadSpaceViolation < PayloadGeneratorError
13+
end
14+
1215
class IncompatibleArch < PayloadGeneratorError
1316
end
1417

@@ -314,20 +317,27 @@ def generate_payload
314317
if platform == "java" or arch == "java" or payload.start_with? "java/"
315318
raw_payload = generate_java_payload
316319
cli_print "Payload size: #{raw_payload.length} bytes"
317-
raw_payload
320+
gen_payload = raw_payload
318321
elsif payload.start_with? "android/" and not template.blank?
319322
cli_print "Using APK template: #{template}"
320323
apk_backdoor = ::Msf::Payload::Apk::ApkBackdoor::new()
321324
raw_payload = apk_backdoor.backdoor_apk(template, generate_raw_payload)
322325
cli_print "Payload size: #{raw_payload.length} bytes"
323-
raw_payload
326+
gen_payload = raw_payload
324327
else
325328
raw_payload = generate_raw_payload
326329
raw_payload = add_shellcode(raw_payload)
327330
encoded_payload = encode_payload(raw_payload)
328331
encoded_payload = prepend_nops(encoded_payload)
329332
cli_print "Payload size: #{encoded_payload.length} bytes"
330-
format_payload(encoded_payload)
333+
gen_payload = format_payload(encoded_payload)
334+
end
335+
if gen_payload.nil?
336+
raise PayloadGeneratorError, 'The payload could not be generated, check options'
337+
elsif gen_payload.length > @space and not @smallest
338+
raise PayloadSpaceViolation, 'The payload exceeds the specified space'
339+
else
340+
gen_payload
331341
end
332342
end
333343

0 commit comments

Comments
 (0)