Files
metasploit-gs/spec/lib/msf/base/sessions/command_shell_unix_spec.rb
T
2024-10-12 14:36:09 +11:00

39 lines
2.1 KiB
Ruby
Executable File

RSpec.describe Msf::Sessions::CommandShellUnix do
describe 'to_cmd processing' do
it 'should not do anything for simple args' do
expect(described_class.to_cmd(['./test'] + [])).to eq('./test')
expect(described_class.to_cmd(['sh'] + [])).to eq('sh')
expect(described_class.to_cmd(['./test'] + ['basic','args'])).to eq('./test basic args')
expect(described_class.to_cmd(['basic','args'])).to eq('basic args')
end
it 'should escape spaces' do
expect(described_class.to_cmd(['/home/user/some folder/some program'] + [])).to eq("'/home/user/some folder/some program'")
expect(described_class.to_cmd(['./test'] + ['with space'])).to eq("./test 'with space'")
end
it 'should escape logical operators' do
expect(described_class.to_cmd(['./test'] + ['&&', 'echo', 'words'])).to eq("./test '&&' echo words")
expect(described_class.to_cmd(['./test'] + ['||', 'echo', 'words'])).to eq("./test '||' echo words")
expect(described_class.to_cmd(['./test'] + ['&echo', 'words'])).to eq("./test '&echo' words")
expect(described_class.to_cmd(['./test'] + ['run&echo', 'words'])).to eq("./test 'run&echo' words")
end
it 'should quote if single quotes are present' do
expect(described_class.to_cmd(['./test'] + ["it's"])).to eq("./test it\\'s")
expect(described_class.to_cmd(['./test'] + ["it's a param"])).to eq("./test it\\''s a param'")
end
it 'should escape redirectors' do
expect(described_class.to_cmd(['./test'] + ['>', 'out.txt'])).to eq("./test '>' out.txt")
expect(described_class.to_cmd(['./test'] + ['<', 'in.txt'])).to eq("./test '<' in.txt")
end
it 'should not expand env vars' do
expect(described_class.to_cmd(['./test'] + ['$PATH'])).to eq("./test '$PATH'")
expect(described_class.to_cmd(['./test'] + ["it's $PATH"])).to eq("./test it\\''s $PATH'")
expect(described_class.to_cmd(['./test'] + ["\"$PATH\""])).to eq("./test '\"$PATH\"'")
expect(described_class.to_cmd(['./test'] + ["it's \"$PATH\""])).to eq("./test it\\''s \"$PATH\"'")
end
end
end