Anchor all the things

This fix isn't optimal, since we shouldn't be using regex anyway.
unstable
William Vu 2013-06-12 22:15:06 -05:00
parent 8f8cc77a9d
commit 2fbc79d70d
2 changed files with 49 additions and 49 deletions

View File

@ -119,18 +119,18 @@ end
payload.datastore.merge! options payload.datastore.merge! options
if (cmd =~ /^(p|y|r|d|c|h|j|x|b|v|w|n)/) if (cmd =~ /^(p|y|r|d|c|h|j|x|b|v|w|n)$/)
fmt = 'perl' if (cmd =~ /^p/) fmt = 'perl' if (cmd =~ /^p$/)
fmt = 'ruby' if (cmd =~ /^y/) fmt = 'ruby' if (cmd =~ /^y$/)
fmt = 'raw' if (cmd =~ /^(r|x|d)/) fmt = 'raw' if (cmd =~ /^(r|x|d)$/)
fmt = 'raw' if (cmd =~ /^v/) fmt = 'raw' if (cmd =~ /^v$/)
fmt = 'c' if (cmd == 'c') fmt = 'c' if (cmd =~ /^c$/)
fmt = 'csharp' if (cmd == 'h') fmt = 'csharp' if (cmd =~ /^h$/)
fmt = 'js_be' if (cmd =~ /^j/ and Rex::Arch.endian(payload.arch) == ENDIAN_BIG) fmt = 'js_be' if (cmd =~ /^j$/ and Rex::Arch.endian(payload.arch) == ENDIAN_BIG)
fmt = 'js_le' if (cmd =~ /^j/ and ! fmt) fmt = 'js_le' if (cmd =~ /^j$/ and ! fmt)
fmt = 'java' if (cmd =~ /^b/) fmt = 'java' if (cmd =~ /^b$/)
fmt = 'raw' if (cmd =~ /^w/) fmt = 'raw' if (cmd =~ /^w$/)
fmt = 'python' if (cmd =~ /^n/) fmt = 'python' if (cmd =~ /^n$/)
enc = options['ENCODER'] enc = options['ENCODER']
begin begin
@ -145,7 +145,7 @@ if (cmd =~ /^(p|y|r|d|c|h|j|x|b|v|w|n)/)
$stdout.binmode $stdout.binmode
if (cmd =~ /^x/) if (cmd =~ /^x$/)
note = note =
"Created by msfpayload (http://www.metasploit.com).\n" + "Created by msfpayload (http://www.metasploit.com).\n" +
"Payload: " + payload.refname + "\n" + "Payload: " + payload.refname + "\n" +
@ -171,7 +171,7 @@ if (cmd =~ /^(p|y|r|d|c|h|j|x|b|v|w|n)/)
exit(-1) exit(-1)
end end
if(cmd =~ /^v/) if(cmd =~ /^v$/)
exe = Msf::Util::EXE.to_win32pe($framework, buf) exe = Msf::Util::EXE.to_win32pe($framework, buf)
note = note =
"'Created by msfpayload (http://www.metasploit.com).\r\n" + "'Created by msfpayload (http://www.metasploit.com).\r\n" +
@ -184,7 +184,7 @@ if (cmd =~ /^(p|y|r|d|c|h|j|x|b|v|w|n)/)
exit(0) exit(0)
end end
if(cmd =~ /^d/) if(cmd =~ /^d$/)
dll = Msf::Util::EXE.to_win32pe_dll($framework, buf) dll = Msf::Util::EXE.to_win32pe_dll($framework, buf)
note = note =
"Created by msfpayload (http://www.metasploit.com).\r\n" + "Created by msfpayload (http://www.metasploit.com).\r\n" +
@ -202,7 +202,7 @@ if (cmd =~ /^(p|y|r|d|c|h|j|x|b|v|w|n)/)
exit(-1) exit(-1)
end end
if(cmd =~ /^w/) if(cmd =~ /^w$/)
note = note =
"Created by msfpayload (http://www.metasploit.com).\n" + "Created by msfpayload (http://www.metasploit.com).\n" +
"Payload: " + payload.refname + "\n" + "Payload: " + payload.refname + "\n" +
@ -232,7 +232,7 @@ if (cmd =~ /^(p|y|r|d|c|h|j|x|b|v|w|n)/)
$stdout.write(buf) $stdout.write(buf)
elsif (cmd =~ /^(s|o)/) elsif (cmd =~ /^(s|o)$/)
payload.datastore.import_options_from_s(rest.join('_|_'), '_|_') payload.datastore.import_options_from_s(rest.join('_|_'), '_|_')
puts Msf::Serializer::ReadableText.dump_module(payload) puts Msf::Serializer::ReadableText.dump_module(payload)

View File

@ -265,13 +265,13 @@ $framework ||= Msf::Simple::Framework.create(
if opts[:list] if opts[:list]
opts[:list].each do |mod| opts[:list].each do |mod|
case mod case mod
when /payloads/i when /^payloads$/i
$stderr.puts dump_payloads $stderr.puts dump_payloads
when /encoders/i when /^encoders$/i
$stderr.puts dump_encoders(opts[:arch]) $stderr.puts dump_encoders(opts[:arch])
when /nops/i when /^nops$/i
$stderr.puts dump_nops $stderr.puts dump_nops
when /all/i when /^all$/i
$stderr.puts dump_payloads $stderr.puts dump_payloads
$stderr.puts dump_encoders $stderr.puts dump_encoders
$stderr.puts dump_nops $stderr.puts dump_nops
@ -422,26 +422,26 @@ end
$stdout.binmode $stdout.binmode
if opts[:format] !~/ruby|rb|perl|pl|bash|sh|c|csharp|js|dll|elf/i if opts[:format] !~/^(ruby|rb|perl|pl|bash|sh|c|csharp|js|dll|elf)$/i
exe = Msf::Util::EXE.to_executable_fmt($framework, opts[:arch], opts[:platform], payload_raw, opts[:format], exeopts) exe = Msf::Util::EXE.to_executable_fmt($framework, opts[:arch], opts[:platform], payload_raw, opts[:format], exeopts)
end end
case opts[:format] case opts[:format]
when /ruby|rb|perl|pl|bash|^sh$|^c$|^csharp$|js_le|raw|^py/i when /^(ruby|rb|perl|pl|bash|sh|c|csharp|js_le|raw|py)$/i
$stdout.write Msf::Simple::Buffer.transform(payload_raw, opts[:format]) $stdout.write Msf::Simple::Buffer.transform(payload_raw, opts[:format])
when /asp$/ when /^asp$/
asp = Msf::Util::EXE.to_win32pe_asp($framework, payload_raw, exeopts) asp = Msf::Util::EXE.to_win32pe_asp($framework, payload_raw, exeopts)
$stdout.puts asp $stdout.puts asp
when /aspx/ when /^aspx$/
aspx = Msf::Util::EXE.to_win32pe_aspx($framework, payload_raw, exeopts) aspx = Msf::Util::EXE.to_win32pe_aspx($framework, payload_raw, exeopts)
$stdout.puts aspx $stdout.puts aspx
when /js_be/i when /^js_be$/i
if Rex::Arch.endian(payload.arch) != ENDIAN_BIG if Rex::Arch.endian(payload.arch) != ENDIAN_BIG
print_error("Big endian format selected for a non big endian payload") print_error("Big endian format selected for a non big endian payload")
exit exit
end end
$stdout.puts Msf::Simple::Buffer.transform(payload_raw, opts[:format]) $stdout.puts Msf::Simple::Buffer.transform(payload_raw, opts[:format])
when /java/i when /^java$/i
if(!exe and payload.platform.platforms.index(Msf::Module::Platform::Java)) if(!exe and payload.platform.platforms.index(Msf::Module::Platform::Java))
exe = payload.generate_jar.pack exe = payload.generate_jar.pack
end end
@ -451,20 +451,20 @@ when /java/i
else else
print_error("Could not generate payload format") print_error("Could not generate payload format")
end end
when /elf/i when /^elf$/i
if (opts[:platform].index(Msf::Module::Platform::Linux)) if (opts[:platform].index(Msf::Module::Platform::Linux))
elf = case opts[:arch] elf = case opts[:arch]
when /x64/; Msf::Util::EXE.to_linux_x64_elf($framework, payload_raw, exeopts) when /^x64$/; Msf::Util::EXE.to_linux_x64_elf($framework, payload_raw, exeopts)
when /x86/; Msf::Util::EXE.to_linux_x86_elf($framework, payload_raw, exeopts) when /^x86$/; Msf::Util::EXE.to_linux_x86_elf($framework, payload_raw, exeopts)
when /arm/; Msf::Util::EXE.to_linux_armle_elf($framework, payload_raw, exeopts) when /^arm$/; Msf::Util::EXE.to_linux_armle_elf($framework, payload_raw, exeopts)
end end
elsif(opts[:platform].index(Msf::Module::Platform::BSD)) elsif(opts[:platform].index(Msf::Module::Platform::BSD))
elf = case opts[:arch] elf = case opts[:arch]
when /x86/; Msf::Util::EXE.to_bsd_x86_elf($framework, payload_raw, exeopts) when /^x86$/; Msf::Util::EXE.to_bsd_x86_elf($framework, payload_raw, exeopts)
end end
elsif(opts[:platform].index(Msf::Module::Platform::Solaris)) elsif(opts[:platform].index(Msf::Module::Platform::Solaris))
elf = case opts[:arch] elf = case opts[:arch]
when /x86/; Msf::Util::EXE.to_solaris_x86_elf($framework, payload_raw, exeopts) when /^x86$/; Msf::Util::EXE.to_solaris_x86_elf($framework, payload_raw, exeopts)
end end
end end
if elf.nil? if elf.nil?
@ -472,22 +472,22 @@ when /elf/i
exit exit
end end
$stdout.write elf $stdout.write elf
when /macho/i when /^macho$/i
bin = case opts[:arch] bin = case opts[:arch]
when /x64/; Msf::Util::EXE.to_osx_x64_macho($framework, payload_raw, exeopts) when /^x64$/; Msf::Util::EXE.to_osx_x64_macho($framework, payload_raw, exeopts)
when /x86/; Msf::Util::EXE.to_osx_x86_macho($framework, payload_raw, exeopts) when /^x86$/; Msf::Util::EXE.to_osx_x86_macho($framework, payload_raw, exeopts)
when /arm/; Msf::Util::EXE.to_osx_arm_macho($framework, payload_raw, exeopts) when /^arm$/; Msf::Util::EXE.to_osx_arm_macho($framework, payload_raw, exeopts)
when /ppc/; Msf::Util::EXE.to_osx_ppc_macho($framework, payload_raw, exeopts) when /^ppc$/; Msf::Util::EXE.to_osx_ppc_macho($framework, payload_raw, exeopts)
end end
if bin.nil? if bin.nil?
print_error("This format does not support that architecture") print_error("This format does not support that architecture")
exit exit
end end
$stdout.write bin $stdout.write bin
when /dll/i when /^dll$/i
dll = case opts[:arch] dll = case opts[:arch]
when /x86/; Msf::Util::EXE.to_win32pe_dll($framework, payload_raw) when /^x86$/; Msf::Util::EXE.to_win32pe_dll($framework, payload_raw)
when /x64|x86_64/; Msf::Util::EXE.to_win64pe_dll($framework, payload_raw) when /^(x64|x86_64)$/; Msf::Util::EXE.to_win64pe_dll($framework, payload_raw)
end end
if dll.nil? if dll.nil?
print_error("This format does not support that architecture") print_error("This format does not support that architecture")
@ -495,31 +495,31 @@ when /dll/i
end end
$stdout.write dll $stdout.write dll
when /exe/i when /^exe$/i
$stdout.write exe $stdout.write exe
when /exe-small/i when /^exe-small$/i
when /vba/i when /^vba$/i
vba = Msf::Util::EXE.to_vba($framework, payload_raw) vba = Msf::Util::EXE.to_vba($framework, payload_raw)
$stdout.puts vba $stdout.puts vba
when /vba-exe/i when /^vba-exe$/i
exe = Msf::Util::EXE.to_win32pe($framework, payload_raw) exe = Msf::Util::EXE.to_win32pe($framework, payload_raw)
vba = Msf::Util::EXE.to_exe_vba(exe) vba = Msf::Util::EXE.to_exe_vba(exe)
$stdout.puts vba $stdout.puts vba
when /vbs/i when /^vbs$/i
exe = Msf::Util::EXE.to_win32pe($framework, payload_raw) exe = Msf::Util::EXE.to_win32pe($framework, payload_raw)
vbs = Msf::Util::EXE.to_exe_vbs(exe) vbs = Msf::Util::EXE.to_exe_vbs(exe)
$stdout.puts vbs $stdout.puts vbs
when /war/i when /^war$/i
if (!exe and payload.platform.platforms.index(Msf::Module::Platform::Java)) if (!exe and payload.platform.platforms.index(Msf::Module::Platform::Java))
exe = payload.generate_war.pack exe = payload.generate_war.pack
else else
exe = Msf::Util::EXE.to_jsp_war(exe) exe = Msf::Util::EXE.to_jsp_war(exe)
end end
$stdout.write exe $stdout.write exe
when /psh/i when /^psh$/i
psh = Msf::Util::EXE.to_win32pe_psh($framework, payload_raw, exeopts) psh = Msf::Util::EXE.to_win32pe_psh($framework, payload_raw, exeopts)
$stdout.write psh $stdout.write psh
when /psh-net/i when /^psh-net$/i
psh = Msf::Util::EXE.to_win32pe_psh_net($framework, payload_raw, exeopts) psh = Msf::Util::EXE.to_win32pe_psh_net($framework, payload_raw, exeopts)
$stdout.write psh $stdout.write psh
else else