Skip to content

Commit c2cf992

Browse files
author
Brent Cook
committed
added spec for rapid7#6915
1 parent 96c459c commit c2cf992

File tree

1 file changed

+37
-12
lines changed

1 file changed

+37
-12
lines changed

spec/lib/msf/core/payload_generator_spec.rb

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@
5757
reference_name: 'windows/meterpreter/reverse_tcp'
5858
)
5959
}
60-
60+
6161
# let(:shellcode) { "\x50\x51\x58\x59" }
62-
62+
6363
# let(:var_name) { 'buf' }
6464

6565
subject(:payload_generator) {
@@ -130,7 +130,7 @@
130130
template: File.join(Msf::Config.data_directory, 'templates', 'template_x86_windows.exe')
131131
}
132132
}
133-
133+
134134
it { is_expected.to raise_error(ArgumentError, "Invalid Payload Selected") }
135135
end
136136

@@ -495,7 +495,7 @@
495495
expect{payload_generator.generate_raw_payload}.to raise_error(Msf::IncompatiblePlatform, "You must select a platform for a custom payload")
496496
end
497497
end
498-
498+
499499
let(:generator_opts) {
500500
{
501501
add_code: false,
@@ -632,7 +632,7 @@
632632
template: File.join(Msf::Config.data_directory, 'templates', 'template_x86_windows.exe')
633633
}
634634
}
635-
635+
636636
it 'returns the original shellcode' do
637637
expect(payload_generator.add_shellcode(shellcode)).to eq shellcode
638638
end
@@ -658,7 +658,7 @@
658658
template: File.join(Msf::Config.data_directory, 'templates', 'template_x86_windows.exe')
659659
}
660660
}
661-
661+
662662

663663
it 'returns the original shellcode' do
664664
expect(payload_generator.add_shellcode(shellcode)).to eq shellcode
@@ -775,7 +775,7 @@
775775
template: File.join(Msf::Config.data_directory, 'templates', 'template_x86_windows.exe')
776776
}
777777
}
778-
778+
779779
before(:example) do
780780
load_and_create_module(
781781
module_type: 'nop',
@@ -861,7 +861,7 @@
861861
# x86/alpha_mixed
862862
# }
863863
# }
864-
864+
865865
let(:generator_opts) {
866866
{
867867
add_code: false,
@@ -925,7 +925,7 @@
925925
template: File.join(Msf::Config.data_directory, 'templates', 'template_x86_windows.exe')
926926
}
927927
}
928-
928+
929929
it 'returns an array of all encoders with a compatible arch' do
930930
payload_generator.get_encoders.each do |my_encoder|
931931
expect(my_encoder.arch).to include 'x86'
@@ -959,7 +959,7 @@
959959
reference_name: 'x86/shikata_ga_nai'
960960
)
961961
}
962-
962+
963963
it 'returns an empty array' do
964964
expect(payload_generator.get_encoders).to be_empty
965965
end
@@ -1128,7 +1128,7 @@
11281128
payload_generator.generate_java_payload
11291129
end
11301130
end
1131-
1131+
11321132
let(:generator_opts) {
11331133
{
11341134
add_code: false,
@@ -1148,7 +1148,7 @@
11481148
template: File.join(Msf::Config.data_directory, 'templates', 'template_x86_windows.exe')
11491149
}
11501150
}
1151-
1151+
11521152
it 'raises an InvalidFormat exception' do
11531153
expect{ payload_generator.generate_java_payload }.to raise_error(Msf::InvalidFormat)
11541154
end
@@ -1358,5 +1358,30 @@
13581358
expect{payload_generator.generate_payload}.to raise_error(Msf::PayloadSpaceViolation, "The payload exceeds the specified space")
13591359
end
13601360
end
1361+
context 'when the payload format is invalid for the platform' do
1362+
let!(:payload_module) {
1363+
load_and_create_module(
1364+
ancestor_reference_names: %w{
1365+
stagers/osx/x86/reverse_tcp
1366+
stages/osx/x86/isight
1367+
},
1368+
module_type: 'payload',
1369+
reference_name: 'osx/x86/isight/reverse_tcp'
1370+
)
1371+
}
1372+
let(:generator_opts) {
1373+
{
1374+
datastore: { 'LHOST' => '192.168.172.1', 'LPORT' => '8443' } ,
1375+
format: 'elf',
1376+
framework: framework,
1377+
keep: false,
1378+
payload: 'osx/x86/isight/reverse_tcp',
1379+
stdin: nil,
1380+
}
1381+
}
1382+
it 'should raise an error' do
1383+
expect{payload_generator.generate_payload}.to raise_error(Msf::PayloadGeneratorError, "The payload could not be generated, check options")
1384+
end
1385+
end
13611386

13621387
end

0 commit comments

Comments
 (0)