Files
metasploit-gs/data/msfcrawler/forms.rb
T

46 lines
1023 B
Ruby
Raw Normal View History

2010-05-03 17:13:09 +00:00
##
2017-07-24 06:26:21 -07:00
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
2010-05-03 17:13:09 +00:00
##
2010-03-26 02:39:19 +00:00
require 'pathname'
2014-07-17 00:14:07 +02:00
require 'nokogiri'
2010-03-26 02:39:19 +00:00
require 'uri'
class CrawlerForms < BaseParser
2013-09-30 13:47:53 -05:00
def parse(request,result)
return unless result['Content-Type'].include?('text/html')
2010-03-26 02:39:19 +00:00
2014-07-17 00:14:07 +02:00
doc = Nokogiri::HTML(result.body.to_s)
doc.css('form').each do |f|
hr = f['action']
2010-04-03 05:52:22 +00:00
# Removed because unused
#fname = f['name']
#fname = 'NONE' if fname.empty?
2010-05-03 17:13:09 +00:00
m = (f['method'].empty? ? 'GET' : f['method'].upcase)
2010-05-03 17:13:09 +00:00
2013-09-30 13:47:53 -05:00
arrdata = []
2010-05-03 17:13:09 +00:00
f.css('input').each do |p|
2014-07-17 00:14:07 +02:00
arrdata << "#{p['name']}=#{Rex::Text.uri_encode(p['value'])}"
2013-09-30 13:47:53 -05:00
end
2010-05-03 17:13:09 +00:00
2013-09-30 13:47:53 -05:00
data = arrdata.join("&").to_s
2010-05-03 17:13:09 +00:00
2013-09-30 13:47:53 -05:00
begin
2014-07-17 00:14:07 +02:00
hreq = urltohash(m, hr, request['uri'], data)
2013-09-30 13:47:53 -05:00
hreq['ctype'] = 'application/x-www-form-urlencoded'
insertnewpath(hreq)
rescue URI::InvalidURIError
#puts "Parse error"
#puts "Error: #{link[0]}"
2013-09-30 13:47:53 -05:00
end
2013-09-30 13:47:53 -05:00
end
end
2010-03-26 02:39:19 +00:00
end