nifflsploit 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/.document +5 -0
- data/.gitignore +49 -0
- data/Gemfile +16 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +24 -0
- data/Rakefile +53 -0
- data/lib/nifflsploit/query.rb +30 -0
- data/lib/nifflsploit/result.rb +39 -0
- data/lib/nifflsploit/version.rb +3 -0
- data/lib/nifflsploit.rb +10 -0
- data/nifflsploit.gemspec +24 -0
- data/spec/lib/nifflsploit/query_spec.rb +21 -0
- data/spec/lib/nifflsploit/result_spec.rb +61 -0
- data/spec/lib/nifflsploit_spec.rb +13 -0
- data/spec/support/positive_response.html +1 -0
- metadata +90 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MDc2NjIxNTNlOWVjNzRmMTlhYjNhZWQ4OTI5ZTJiOWE0MGVmMzNiYg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MDM1OTY2MDliZTE2ZTVhYjE3YjI1ZjI2MWVkNmVmNmRlZTQ3MjRiMA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MjU0YzRkYmRjM2E5NDQ5MmNjZGQxMTI2YmY5ZGU5NGM2OGZkZTdhNTA1N2E4
|
10
|
+
N2YyYTBiOGNlMTNmMWUyZjlkZDRlMzhlZWJhNDYzY2UwNzlhZDczMDUyZmVm
|
11
|
+
YzI1NmQ2MDc1NDI3OTEzMGY3MWNhZWFlNmRiYzg1ODY0OWYyZTc=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NDY4YmM0OWJjYmJiZmRlYjc0MTBkNGJiM2JiOTc1YTY3MDdiNjgzZmRhYTA1
|
14
|
+
MzU1NWUwYjZlODRiNjk1N2Q1ZDcwNmUzNzIwZGY3ZjM1Y2QyNjc4NmU2NmYx
|
15
|
+
ZGI1NDM1MGZkYTkwNzdkYjkzMTJlNGUyY2Q1MTVkMzg0ZjlmYWI=
|
data/.document
ADDED
data/.gitignore
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# rcov generated
|
2
|
+
coverage
|
3
|
+
coverage.data
|
4
|
+
|
5
|
+
# rdoc generated
|
6
|
+
rdoc
|
7
|
+
|
8
|
+
# yard generated
|
9
|
+
doc
|
10
|
+
.yardoc
|
11
|
+
|
12
|
+
# bundler
|
13
|
+
.bundle
|
14
|
+
|
15
|
+
# jeweler generated
|
16
|
+
pkg
|
17
|
+
|
18
|
+
# Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
|
19
|
+
#
|
20
|
+
# * Create a file at ~/.gitignore
|
21
|
+
# * Include files you want ignored
|
22
|
+
# * Run: git config --global core.excludesfile ~/.gitignore
|
23
|
+
#
|
24
|
+
# After doing this, these files will be ignored in all your git projects,
|
25
|
+
# saving you from having to 'pollute' every project you touch with them
|
26
|
+
#
|
27
|
+
# Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
|
28
|
+
#
|
29
|
+
# For MacOS:
|
30
|
+
#
|
31
|
+
#.DS_Store
|
32
|
+
|
33
|
+
# For TextMate
|
34
|
+
#*.tmproj
|
35
|
+
#tmtags
|
36
|
+
|
37
|
+
# For emacs:
|
38
|
+
#*~
|
39
|
+
#\#*
|
40
|
+
#.\#*
|
41
|
+
|
42
|
+
# For vim:
|
43
|
+
#*.swp
|
44
|
+
|
45
|
+
# For redcar:
|
46
|
+
#.redcar
|
47
|
+
|
48
|
+
# For rubinius:
|
49
|
+
#*.rbc
|
data/Gemfile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
gem "nokogiri"
|
6
|
+
gem "rspec"
|
7
|
+
|
8
|
+
# Add dependencies to develop your gem here.
|
9
|
+
# Include everything needed to run rake, tests, features, etc.
|
10
|
+
group :development do
|
11
|
+
gem "shoulda", ">= 0"
|
12
|
+
gem "rdoc", "~> 3.12"
|
13
|
+
gem "bundler", "~> 1.0.0"
|
14
|
+
gem "jeweler", "~> 1.8.4"
|
15
|
+
gem "rcov", ">= 0"
|
16
|
+
end
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2013 Michael Carlson (MIT License)
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
= Nifflsploit
|
2
|
+
|
3
|
+
Nifflsploit is a wrapper around the exploit search on metasploit.com. It should be used to search for metasploit modules relating to CVEs. The name is derived from a small mammal in a childrens' novel that hunts for shiny objects.
|
4
|
+
|
5
|
+
Usage:
|
6
|
+
require 'nifflsploit'
|
7
|
+
result = Nifflsploit.cve_search("CVE-2008-4250")
|
8
|
+
result.name => "Microsoft Server Service Relative Path Stack Corruption"
|
9
|
+
|
10
|
+
== Contributing to Nifflsploit
|
11
|
+
|
12
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
13
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
|
14
|
+
* Fork the project.
|
15
|
+
* Start a feature/bugfix branch.
|
16
|
+
* Commit and push until you are happy with your contribution.
|
17
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
18
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
19
|
+
|
20
|
+
== Copyright
|
21
|
+
|
22
|
+
Copyright (c) 2013 Michael Carlson. See LICENSE.txt for
|
23
|
+
further details.
|
24
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
+
gem.name = "nifflsploit"
|
18
|
+
gem.homepage = "http://github.com/Prandium/nifflsploit"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary = %Q{TODO: one-line summary of your gem}
|
21
|
+
gem.description = %Q{TODO: longer description of your gem}
|
22
|
+
gem.email = "me@mbcarlson.org"
|
23
|
+
gem.authors = ["Michael Carlson"]
|
24
|
+
# dependencies defined in Gemfile
|
25
|
+
end
|
26
|
+
Jeweler::RubygemsDotOrgTasks.new
|
27
|
+
|
28
|
+
require 'rake/testtask'
|
29
|
+
Rake::TestTask.new(:test) do |test|
|
30
|
+
test.libs << 'lib' << 'test'
|
31
|
+
test.pattern = 'test/**/test_*.rb'
|
32
|
+
test.verbose = true
|
33
|
+
end
|
34
|
+
|
35
|
+
require 'rcov/rcovtask'
|
36
|
+
Rcov::RcovTask.new do |test|
|
37
|
+
test.libs << 'test'
|
38
|
+
test.pattern = 'test/**/test_*.rb'
|
39
|
+
test.verbose = true
|
40
|
+
test.rcov_opts << '--exclude "gems/*"'
|
41
|
+
end
|
42
|
+
|
43
|
+
task :default => :test
|
44
|
+
|
45
|
+
require 'rdoc/task'
|
46
|
+
Rake::RDocTask.new do |rdoc|
|
47
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
48
|
+
|
49
|
+
rdoc.rdoc_dir = 'rdoc'
|
50
|
+
rdoc.title = "nifflsploit #{version}"
|
51
|
+
rdoc.rdoc_files.include('README*')
|
52
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
53
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
require 'cgi'
|
3
|
+
require 'nokogiri'
|
4
|
+
|
5
|
+
class Nifflsploit
|
6
|
+
class Query
|
7
|
+
BASE_URL = "http://www.metasploit.com/modules/framework/search?cve="
|
8
|
+
|
9
|
+
def self.cve(cve)
|
10
|
+
url = BASE_URL+CGI::escape(cve)
|
11
|
+
response = fetch_html(url)
|
12
|
+
document = Nokogiri::HTML.parse(response)
|
13
|
+
return document
|
14
|
+
end # def self.cve
|
15
|
+
|
16
|
+
private
|
17
|
+
def self.fetch_html(url)
|
18
|
+
# open is the open-uri, which returns a io-string object, so we need to convert that to a encoded string
|
19
|
+
response = open(url)
|
20
|
+
|
21
|
+
# open-uri will save the response as a temp file if it's too large, so check what the class is before parsing
|
22
|
+
if response.kind_of?(StringIO)
|
23
|
+
resp_string = response.string
|
24
|
+
else
|
25
|
+
resp_string = response.read
|
26
|
+
end
|
27
|
+
return resp_string
|
28
|
+
end # def fetch
|
29
|
+
end # class Query
|
30
|
+
end # class Nifflsploit
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
class Nifflsploit
|
4
|
+
class Result
|
5
|
+
attr_accessor :name, :rank, :authors, :references, :development, :module_options
|
6
|
+
|
7
|
+
def self.parse(document)
|
8
|
+
result = Nifflsploit::Result.new
|
9
|
+
result.name = document.xpath("/html/body/div/div/section/h1").text
|
10
|
+
result.rank = document.xpath("/html/body/div/div/section/div/ul[1]/li").text
|
11
|
+
|
12
|
+
# this xpath resolves to multiple authors, looking like [Author, Author], so we need to get the text
|
13
|
+
# value for each author and return an array of authors
|
14
|
+
result.authors = document.xpath("/html/body/div/div/section/div/ul[2]/li").collect {|z| z.text}
|
15
|
+
|
16
|
+
# same as above, but we need the href attribute, not the text, so we need to navigate to the 'a' object
|
17
|
+
# and get the href link text
|
18
|
+
result.references = document.xpath("/html/body/div/div/section/div/ul[3]/li").collect {|z| z.xpath("a").attr('href').text}
|
19
|
+
|
20
|
+
# result.development will look like {:source_code => "http://blarg.com", :history => "http://blarg2.com"}
|
21
|
+
result.development = {}
|
22
|
+
for link in document.xpath("/html/body/div/div/section/div/ul[4]/li")
|
23
|
+
key = link.xpath("a").text.downcase.gsub(/\s/, "_")
|
24
|
+
value = link.xpath("a").attr('href').text
|
25
|
+
result.development[key.to_sym] = value
|
26
|
+
end # for link
|
27
|
+
|
28
|
+
# result.module_options will look like {:PASSWORD => "The password to reset to (default: admin)", :Proxies => "proxy"}
|
29
|
+
result.module_options = {}
|
30
|
+
for row in document.xpath("/html/body/div/div/section/div/div[2]/table/tr")
|
31
|
+
key = row.xpath('td[1]').text
|
32
|
+
value = row.xpath('td[2]').text
|
33
|
+
result.module_options[key.to_sym] = value
|
34
|
+
end # for row
|
35
|
+
|
36
|
+
return result
|
37
|
+
end # def parse
|
38
|
+
end # class Result
|
39
|
+
end # class Nifflsploit
|
data/lib/nifflsploit.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'nifflsploit/query'
|
2
|
+
require 'nifflsploit/result'
|
3
|
+
|
4
|
+
class Nifflsploit
|
5
|
+
def self.cve_search(cve)
|
6
|
+
response = Nifflsploit::Query.cve(cve)
|
7
|
+
result = Nifflsploit::Result.parse(response)
|
8
|
+
return result
|
9
|
+
end # def cve_search
|
10
|
+
end # class Nifflsploit
|
data/nifflsploit.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'nifflsploit/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "nifflsploit"
|
8
|
+
gem.version = Nifflsploit::VERSION
|
9
|
+
gem.authors = ["Michael Carlson"]
|
10
|
+
gem.email = ["me@mbcarlson.org"]
|
11
|
+
gem.description = %q{ A tool for finding metasploit module information related to CVEs }
|
12
|
+
gem.summary = %q{ This gem allows searching for metasploit exploit modules for a given CVE. }
|
13
|
+
gem.homepage = "https://github.com/Prandium/nifflsploit"
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ['lib']
|
19
|
+
|
20
|
+
gem.required_ruby_version = '>= 1.9.2'
|
21
|
+
|
22
|
+
gem.add_development_dependency('rspec')
|
23
|
+
gem.add_development_dependency('nokogiri')
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'nifflsploit/query'
|
3
|
+
|
4
|
+
describe Nifflsploit::Query do
|
5
|
+
describe '#cve' do
|
6
|
+
context 'with a valid cve id' do
|
7
|
+
it 'returns an HTML Document object' do
|
8
|
+
result = Nifflsploit::Query.cve("CVE-2007-4387")
|
9
|
+
result.should be_kind_of(Nokogiri::HTML::Document)
|
10
|
+
end # it
|
11
|
+
end # context
|
12
|
+
|
13
|
+
|
14
|
+
context 'with an invalid cve id' do
|
15
|
+
it 'returns an HTML Document object' do
|
16
|
+
result = Nifflsploit::Query.cve("CVE-200-4387")
|
17
|
+
result.should be_kind_of(Nokogiri::HTML::Document)
|
18
|
+
end # it
|
19
|
+
end # context
|
20
|
+
end # describe cve
|
21
|
+
end # describe Nifflsploit
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'nifflsploit/Result'
|
4
|
+
|
5
|
+
describe Nifflsploit::Result do
|
6
|
+
context 'with a valid response' do
|
7
|
+
before do
|
8
|
+
file = open("spec/support/positive_response.html")
|
9
|
+
response = Tempfile.new("temp")
|
10
|
+
response.write(file.read)
|
11
|
+
response.rewind
|
12
|
+
result = Nokogiri::HTML.parse(response)
|
13
|
+
response.unlink
|
14
|
+
@result = Nifflsploit::Result.parse(result)
|
15
|
+
end # before
|
16
|
+
|
17
|
+
it 'returns the CVE name' do
|
18
|
+
@result.name.should eq("2Wire Cross-Site Request Forgery Password Reset Vulnerability")
|
19
|
+
end # it
|
20
|
+
|
21
|
+
it 'returns the exploit rank' do
|
22
|
+
@result.rank.should eq("Normal")
|
23
|
+
end # it
|
24
|
+
|
25
|
+
it 'returns the exploit authors' do
|
26
|
+
@result.authors.should be_kind_of(Array)
|
27
|
+
@result.authors.first.should eq("hkm < hkm [at] hakim.ws >")
|
28
|
+
end # it
|
29
|
+
|
30
|
+
it 'returns Vulnerability Reference links' do
|
31
|
+
@result.references.should be_kind_of(Array)
|
32
|
+
@result.references.first.should eq("http://cvedetails.com/cve/2007-4387/")
|
33
|
+
end # it
|
34
|
+
|
35
|
+
it 'returns Development links' do
|
36
|
+
@result.development.should be_kind_of(Hash)
|
37
|
+
@result.development[:source_code].should eq("http://dev.metasploit.com/redmine/projects/framework/repository/entry/modules/auxiliary/admin/2wire/xslt_password_reset.rb")
|
38
|
+
end # it
|
39
|
+
|
40
|
+
it 'returns Module Options hash' do
|
41
|
+
@result.module_options.should be_kind_of(Hash)
|
42
|
+
@result.module_options[:PASSWORD].should eq("The password to reset to (default: admin)")
|
43
|
+
end # it
|
44
|
+
end # context
|
45
|
+
|
46
|
+
context 'with an invalid response' do
|
47
|
+
before do
|
48
|
+
document = Nokogiri::HTML::Document.new
|
49
|
+
@result = Nifflsploit::Result.parse(document)
|
50
|
+
end # before
|
51
|
+
|
52
|
+
it 'returns an empty result object' do
|
53
|
+
@result.name.should be_empty
|
54
|
+
@result.rank.should be_empty
|
55
|
+
@result.authors.should be_empty
|
56
|
+
@result.references.should be_empty
|
57
|
+
@result.development.to_a.should be_empty
|
58
|
+
@result.module_options.to_a.should be_empty
|
59
|
+
end # it
|
60
|
+
end # context
|
61
|
+
end # describe
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'nifflsploit'
|
2
|
+
|
3
|
+
describe Nifflsploit do
|
4
|
+
describe '#cve_search' do
|
5
|
+
before do
|
6
|
+
@result = Nifflsploit.cve_search("CVE-2007-4387")
|
7
|
+
end # before
|
8
|
+
|
9
|
+
it 'queries for a CVE and returns a result' do
|
10
|
+
@result.should be_kind_of(Nifflsploit::Result)
|
11
|
+
end # it
|
12
|
+
end # describe
|
13
|
+
end # describe Nifflsploit
|
@@ -0,0 +1 @@
|
|
1
|
+
<!doctype html> <html lang="en"> <head> <script src="//cdn.optimizely.com/js/13222550.js"></script> <meta charset="utf-8"> <section id="mainContent" class="twoCol clearfix"> <title>2Wire Cross-Site Request Forgery Password Reset Vulnerability | Metasploit Exploit Database (DB)</title> <META NAME="Description" CONTENT="This module will reset the admin password on a 2Wire wireless router. This is done by using the /xslt page where authentication is not required, thus allowing configuration changes (such as resetting the password) as administrators."> <link rel="shortcut icon" href="/images/global/favicon.ico" type="image/x-icon" /> <script type="text/javascript" src="/js/jquery-1.4.4.js"></script> <script type="text/javascript" src="/js/html5.js"></script> <script type="text/javascript" src="/js/jquery.joverlay.min.js"></script> <script type="text/javascript" src="/js/hoverIntent.js"></script> <!--[if (gte IE 6)&(lte IE 8)]> <script type="text/javascript" src="/js/selectivizr.js"></script> <![endif]--> <link rel="stylesheet" type="text/css" href="/css/style.css"/> <link rel="stylesheet" type="text/css" href="/modules/modules.css"/> <script type="text/javascript" src="/js/browser.js"></script> <script type="text/javascript"> $(function(){ $("#headNav ul.nav li.pri").hoverIntent( config ); function showSub() { if(($(this).find("ul.sec").length>0) && ($(this).hasClass("active")==false)) { $("#headNav ul.nav li.pri ul.sec").css("display", "none"); $(".secNav").css("display", "none"); $(".secNav").css("display", "block"); $(this).find("ul.sec").fadeIn("fast"); } else if($(this).find("ul.sec").length==0) { $(".secNav, ul.sec").css("display", "none"); } } function hideSub() { if($(this).hasClass("active")==false) { $(".secNav").css("display", "none"); $(this).find("ul.sec").fadeOut("fast"); } if($("#headNav ul.nav li.active").length>0) { $(".secNav").css("display", "none"); $(".secNav").css("display", "block"); $("#headNav ul.nav li.active").find("ul.sec").fadeIn("fast"); } } $("#q-search").bind("focus click", function(){ if($(this).val()=="search for keyword") { $(this).val(''); } }); $("#q-search").bind("blur", function(){ if(($(this).val()=="search for keyword") || ($(this).val()=='')) { $(this).val('search for keyword'); } }); }); </script> <STYLE type="text/css"> /* @group global reset */ html, body, h1, h2, h3, h4, h5, h6, ul, ul li, ol, ol li, dl, p, input, button, label, td, abbr, article, aside, audio, bb, canvas, datagrid, datalist, details, dialog, eventsource, figure, footer, header, hgroup, mark, menu, meter, nav, output, progress, section, time, video, blockquote { margin: 0; padding: 0; } sup { vertical-align:top; line-height:1; } fieldset, dd, button, form { margin:0; padding:0; border: none; } ul li, ol li, menu li { list-style-type: none;} img, a img { border: none; } table { border-spacing:0; *border-collapse:collapse; width:100%; } header, footer, nav, menu, section, article, aside, details, summary { display:block; } /* @end */ /* @group Default Element Styles */ body { font-size: 14px; line-height: 20px; font-family: Arial, Helvetica, sans-serif; color: #29383f; background: #5f5f5f url("../images/body-bg.jpg") repeat-x; } a { color: #0197B8; text-decoration:none; } a:hover { color:inherit; *color: #333; } nav a{ color: #333333; text-decoration:none; } nav a:hover{ color: #EA5709; text-decoration:none; } h1,h2,h3,h4,h5 { font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; color: #29383f; font-weight: normal; } h1 { font-size:36px; margin: 0 0 .5em 0; font-weight: normal; } h2 { font-size:34px; margin: 0 0 .5em 0; font-weight: normal; } h3 { font-size:24px; margin: 0 0 20px 0; font-weight: normal; } h4 { font-size:20px; margin: 0 0 .4em 0; font-weight: normal; } h5 { font-size:18px; margin: 0 0 .4em 0; font-weight: normal; } p { font-size:14px; margin:0 0 1.5em 0; } hr { display: block; border: 0; margin: 60px 0; height: 1px; background-color:#eee; color: #eee; } input[type="text"]{ display: block; font:normal 15px/19px arial; color: #4b4b4b; border: 1px solid #d7d7d7; padding:6px 10px; width:250px; box-shadow: 1px 1px 5px #F1F1F1 inset; -moz-box-shadow: 1px 1px 5px #F1F1F1 inset; -webkit-box-shadow: 1px 1px 5px #F1F1F1 inset; -khtml-box-shadow: 1px 1px 5px #F1F1F1 inset; } input.smallInput { width:90px; } input.itl { color:#999; } /* @end */ /* @group clearfix */ .clearfix:after { content: ".";display: block;height: 0;visibility: hidden; clear: both; } .clearfix { zoom: 1; }/* Clearfix for IE 7 */ /* @end */ /* @group sprites */ .icon { background-image:url(../images/sprite/icons.png); background-repeat:no-repeat; } /* @end */ /* @group Patterns */ .fLt { float:left; } .fRt { float:right; } .block { display:block; } .displayHidden { display:none; } .displayInlineBlock { display:inline-block; } .alignCenter { text-align:center; } .alignLeft { text-align:left; } .alignRight { text-align:right; } .rPos { position: relative; } .aPos { position: absolute; } .marB0 { margin-bottom:0px; } .marB5 { margin-bottom:5px; } .marB10 { margin-bottom:10px; } .marB15 { margin-bottom:15px; } .marB20 { margin-bottom:20px; } .marB25 { margin-bottom:25px; } .marB30 { margin-bottom:30px; } .marB35 { margin-bottom:35px; } .marB40 { margin-bottom:40px; } .marB45 { margin-bottom:45px; } .marB47 { margin-bottom:47px; } .marB50 { margin-bottom:50px; } .marB60 { margin-bottom:60px; } .marB70 { margin-bottom:70px; } .marB80 { margin-bottom:80px; } .marR20 { margin-right:20px; } .marT0 { margin-top:0; } .marT10 { margin-top:10px; } .marT20 { margin-top:20px; } .marT30 { margin-top:30px; } .marL25 { margin-left:25px; } .pad0 { padding: 0; } .alignCenter{ text-align: center; } .button, .button:visited { display:inline-block; font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; padding:4px 16px 3px 10px; padding:4px 16px 4px 10px\\9; text-transform: uppercase; font-size: 15px; color: #0197B8; border: 1px solid #f1f1f1; background: #fff url(../images/button_bg.gif) repeat-x bottom; -moz-border-radius: 0 14px 14px 0; -webkit-border-radius: 0 14px 14px 0; -khtml-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .button:hover { color: #000; } .mainBtn, a.mainBtn { font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; padding: 7px 15px; font-size: 15px; color: #fff; text-transform: uppercase; position: relative; -moz-border-radius: 20px; -webkit-border-radius: 20px; -khtml-border-radius: 20px; border-radius: 20px; border:none; cursor:pointer; background: #0197b8 url(../images/blue_button_bg.gif) repeat-x top; } .greyBtn{ border-left: 2px solid #E0E0E0; border-right: 2px solid #E0E0E0; font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; padding: 7px 25px; *padding: 6px 25px 6px 25px; font-size: 15px; color: #00a8c6; text-transform: uppercase; -moz-border-radius: 20px; -webkit-border-radius: 20px; -khtml-border-radius: 20px; border-radius: 20px; cursor:pointer; background: #fff url(../images/grey_btn_bg.jpg) repeat-x bottom; zoom:1; } .greyBtn:hover{ background: #fff url(../images/grey_btn_hover_bg.jpg) repeat-x top; } .mainBtn:hover { background: #0197b8 url(../images/blue_button_bg.gif) repeat-x bottom; } .mainBtnSmall, a.mainBtnSmall { padding: 6px 30px; } .downloadBtn, a.downloadBtn { padding-left: 40px; *padding-left:30px; display: inline-block; margin-right:12px; } .downloadBtn em { background: url(../images/download.png) no-repeat top left; display:block; *display:none; position: absolute; top: -6px; left: -15px; width: 61px; height: 49px; padding-left: 50px; } .headBulletList h4{ background: url("../images/icons/bullet7.png") no-repeat 0 5px; padding-left: 25px; } .mobilisafeOverview .headBulletList p{ padding-left: 25px; } .headBulletList ul{ padding-left:25px; } .content_list { list-style-type: none; padding-left: 3px; } .content_list li { background: url(../images/icons/bullet7.png) no-repeat 0 3px; padding-left: 22px; margin-bottom: 10px; } .bulletList li { background: url(../images/bullet.png) no-repeat left 7px; padding-left: 14px; margin: 0 0 10px 2px; color: #333; } .contributorsList .bulletList a{color: #333;} .contributorsList .bulletList a:hover{color: #EA5709;} .numBullet li{ margin-bottom:20px; } .numBullet li:last-child{ margin-bottom: 0; } .numBullet span{ padding-right: 10px; color: #666; font-size: 16px; display: block; float: left; } .numBullet strong{ font-weight: normal; display: block; padding-left: 23px; } .numBullet strong .note{ font-size: 11px; font-style: normal; line-height: 14px; display: block; margin-top: 3px; } .subBulletList li { background: url(../images/icons/bullet-sub.png) no-repeat left 8px; padding-left:15px; margin: 0 0 10px 2px; } .smallList li { font:normal 12px/16px arial; color:#666; margin-bottom:6px; background: url(../images/sprite/bullet-small.png) no-repeat left 7px; padding-left:12px; } sup{ font-size: 10px; vertical-align: top; _line-height: 1px; line-height: -1px; } sup.note{ font-size: 10px; vertical-align: top; _line-height: 1px; line-height: -1px; } /* @end */ /* @group Header */ .header{ border-top: 3px solid #EA5709; padding: 0 20px 0 30px; background-color: #fff; } .header .logo{ padding-top: 22px; display: block; width: 240px; float: left; } .logo img{ display: block; } .header .primeNav{ width: 400px; float: right; } .toplinks{ width: 200px; float: right; margin-top: 37px; } .toplinks li{ background: url("../images/toplinks-divider.gif") no-repeat scroll right center transparent; float: left; font-weight: bold; } .toplinks li:last-child{ background: none; } .toplinks a{ font-family: "Trebuchet MS",Arial,Helvetica,sans-serif; font-size: 15px; color: #333333; display: block; font-weight: normal; padding: 0 10px; } .primeLinks{ width: 100px; background: url("../images/prime-nav-bg.png") no-repeat left top; float: right; padding: 40px 25px 35px; position: relative; } .primeLinks > a{ background: url("../images/arrow.png") no-repeat right 5px; display: block; } .primeLinks:hover ul{ display: block; } .primeLinks ul{ position: absolute; padding: 0 15px; width: 98px; left: 9px; top: 90px; background-color: #fff; display: none; } .primeLinks li{ padding: 8px 0; border-bottom: 1px solid #ddd; } .primeLinks li:last-child{ border-bottom: none; } .primeLinks li a{ font-size: 13px; line-height: 13px; font-family: "Trebuchet MS",Arial,Helvetica,sans-serif; } .bannerWrap{ padding: 50px 30px; text-align: center; background-color: #202020; background-color: rgba(0,0,0,0.7); } .bannerWrap h1{ font-size: 36px; line-height: 36px; color: #e7e7e7; margin-bottom: 20px; } .bannerWrap strong{ font: normal 22px/22px "Trebuchet MS", Arial, Helvetica, sans-serif; display: block; color: #EA5709; margin-bottom: 25px; } .bannerWrap p{ font: normal 14px/20px "Trebuchet MS", Arial, Helvetica, sans-serif; color: #a5a5a5; margin-bottom: 25px; } /* @end */ /* @group Freamwok */ .wrap { width: 980px; margin: 0 auto; box-shadow:0 0 15px #000000; -moz-box-shadow:0 0 15px #000000; -webkit-box-shadow:0 0 15px #000000; } .container{ padding: 50px 30px 40px; background-color: #fff; } .metaInfoBlock{ margin-bottom: 40px; } .metaInfoBlock article{ width: 270px; float: left; margin-right: 55px; } .metaInfoBlock article:last-child{ margin-right: 0; } .bannerBlock{ padding-top: 40px; background: url("../images/shadow-top.png") center top no-repeat; text-align: center; margin-bottom: 60px; } .bannerBlock strong{ font-size: 18px; font-weight: normal; line-height: 18px; color: #666; display: block; margin-bottom: 25px; } .bannerPad{ padding-bottom: 40px; background: url("../images/shadow-bot.png") center bottom no-repeat; } .bannerBlock p{ padding-top: 15px; font-size: 13px; line-height: 13px; color: #666; } .contributorsList h3{ margin-bottom: 30px; } .contributorsList article{ width: 190px; float: left; margin-right: 50px; } .contributorsList article:last-child{ margin-right: 0; } /* @end */ /* @group footer */ .footer{ border-top: 1px solid #ebebeb; } .footerPad{ border-top: 1px solid #fff; padding: 20px 30px; background-color: #f7f7f7; } .copyright{ width: 230px; float: left; } .copyright a{ display: block; width: 110px; float: left; margin-right: 7px; } .copyright span{ float: left; color: #333; } .copyright img{ display: block; } .footerNav{ width: 640px; *width: 640px; -bracket-:hack(; width: 640px; ); width: 640px\\9; float: right; } @-moz-document url-prefix() { .footerNav { width: 640px; } } .footerNav li{ padding-right: 15px; padding: 2px 15px 2px 0; float: left; font-weight: bold; } .footerNav li:last-child{ padding-right: 0; } .footerNav li.twitIcon{ background: url(../images/twitIcon.png) no-repeat left 2px; padding-left: 35px; } .footerNav a{ color: #29383F; } .footerNav a:hover{ color: ##EA5709; } .footerNav .blue{ color: #EA5709; } .footerNav .blue:hover{ color: #333; } .freeTools:hover {*color: #666} /* @end */</STYLE> </head> <body> <div class="wrap"> <header class="header"> <div class="clearfix"> <span class="logo"><a href="http://www.metasploit.com"><img src="/revamp/images/metasploit-logo.png" title="Metasploit" alt="Metasploit" border=0 /></a></span> <nav class="primeNav"> <div class="primeLinks"> <a href="http://www.rapid7.com/" target="_blank"><img src="/revamp/images/rapid7-logo.png" title="Rapid7" alt="Rapid7" /></a> <ul> <li><a href="http://www.rapid7.com/resources/free-tools.jsp" target="_blank">Free Tools</a></li> <li><a href="https://community.rapid7.com/" target="_blank">Community</a></li> <li><a href="http://www.rapid7.com/contact/" target="_blank">Contact</a></li> <li><a href="http://www.rapid7.com/company/" target="_blank">About</a></li> </ul> </div> <ul class="toplinks clearfix"> <li><a href="/modules/" title="Exploits database">Exploits</a></li> <li><a href="https://community.rapid7.com/community/metasploit/blog" target="_blank" title="Metasploit blog">Blog</a></li> <li><a href="http://www.rapid7.com/support/" target="_blank" title="Rapid7 support">Support</a></li> </ul> </nav><!--primeNav--> </div><!--clearfix--> </header><!--header--> <div id="bodyContent"> <div id="breadcrumbs"> <a href="/" title="Home">Home</a> > <span>Exploit DB</span> </div><!-- breadcrumbs --> <section id="mainContent" class="twoCol clearfix"> <h1>2Wire Cross-Site Request Forgery Password Reset Vulnerability</h1> <div class="lCol"> <p>This module will reset the admin password on a 2Wire wireless router. This is done by using the /xslt page where authentication is not required, thus allowing configuration changes (such as resetting the password) as administrators.</p> <p> <a href="/modules/" class="fLt blueBtn"><span>Search Other Modules</span></a><br> </p> <br/><h2>Rank</h2> <ul> <li class='module_info'>Normal</li> </ul> <br/><h2>Authors</h2> <ul> <li>hkm < hkm [at] hakim.ws ></li> <li>Travis Phillips < ></li> </ul> <br/><h2>Vulnerability References</h2> <ul> <li><a href="http://cvedetails.com/cve/2007-4387/" rel="nofollow">CVE-2007-4387</a></li> <li><a href="http://www.osvdb.org/37667" rel="nofollow">OSVDB-37667</a></li> <li><a href="http://www.securityfocus.com/bid/36075" rel="nofollow">BID-36075</a></li> <li><a href="http://seclists.org/bugtraq/2007/Aug/225" rel="nofollow">http://seclists.org/bugtraq/2007/Aug/225</a></li> </ul> <br/><h2>Development</h2> <ul> <li class="modrefs"><a href="http://dev.metasploit.com/redmine/projects/framework/repository/entry/modules/auxiliary/admin/2wire/xslt_password_reset.rb">Source Code</a></li> <li class="modrefs"><a href="http://dev.metasploit.com/redmine/projects/framework/repository/changes/modules/auxiliary/admin/2wire/xslt_password_reset.rb">History</a></li> </ul> <!--[if ie 9]> <style type="text/css" media="screen"> .mBannerInfo { filter: none; } </style> <![endif]--> <br/><h2>Usage Information</h2> <div class="msfconsole"> $ <b>msfconsole</b><br/> <br/> ## ### ## ##<br/> ## ## #### ###### #### ##### ##### ## #### ######<br/> ####### ## ## ## ## ## ## ## ## ## ## ### ##<br/> ####### ###### ## ##### #### ## ## ## ## ## ## ##<br/> ## # ## ## ## ## ## ## ##### ## ## ## ## ##<br/> ## ## #### ### ##### ##### ## #### #### #### ###<br/> ##<br/> <br/> msf > <b>use auxiliary/admin/2wire/xslt_password_reset</b><br/> msf auxiliary(xslt_password_reset) > <b>set RHOST [TARGET IP]</b><br/> msf auxiliary(xslt_password_reset) > <b>run</b><br/> <br/> </div> <br/><h2>Module Options</h2> <div class="marB20"> <table cellpadding="6" cellspacing="0" width="100%" border="1"> <tr class='rowcola'> <td class='optreq'>PASSWORD</td> <td>The password to reset to (default: admin)</td> </tr> <tr class='rowcola'> <td class='optopt'>Proxies</td> <td>Use a proxy chain</td> </tr> <tr class='rowcola'> <td class='optreq'>RHOST</td> <td>The target address</td> </tr> <tr class='rowcola'> <td class='optreq'>RPORT</td> <td>The target port (default: 80)</td> </tr> <tr class='rowcola'> <td class='optopt'>VHOST</td> <td>HTTP server virtual host</td> </tr> <tr class='rowcola'> <td class='optopt'>DOMAIN</td> <td>The domain to use for windows authentification</td> </tr> <tr class='rowcola'> <td class='optopt'>DigestAuthIIS</td> <td>Conform to IIS, should work for most servers. Only set to false for non-IIS servers</td> </tr> <tr class='rowcola'> <td class='optopt'>FingerprintCheck</td> <td>Conduct a pre-exploit fingerprint verification</td> </tr> <tr class='rowcola'> <td class='optopt'>NTLM::SendLM</td> <td>Always send the LANMAN response (except when NTLMv2_session is specified)</td> </tr> <tr class='rowcola'> <td class='optopt'>NTLM::SendNTLM</td> <td>Activate the 'Negotiate NTLM key' flag, indicating the use of NTLM responses</td> </tr> <tr class='rowcola'> <td class='optopt'>NTLM::SendSPN</td> <td>Send an avp of type SPN in the ntlmv2 client Blob, this allow authentification on windows Seven/2008r2 when SPN is required</td> </tr> <tr class='rowcola'> <td class='optopt'>NTLM::UseLMKey</td> <td>Activate the 'Negotiate Lan Manager Key' flag, using the LM key when the LM response is sent</td> </tr> <tr class='rowcola'> <td class='optopt'>NTLM::UseNTLM2_session</td> <td>Activate the 'Negotiate NTLM2 key' flag, forcing the use of a NTLMv2_session</td> </tr> <tr class='rowcola'> <td class='optopt'>NTLM::UseNTLMv2</td> <td>Use NTLMv2 instead of NTLM2_session when 'Negotiate NTLM2' key is true</td> </tr> <tr class='rowcola'> <td class='optopt'>SSL</td> <td>Negotiate SSL for outgoing connections</td> </tr> <tr class='rowcola'> <td class='optopt'>SSLVersion</td> <td>Specify the version of SSL that should be used (accepted: SSL2, SSL3, TLS1)</td> </tr> <tr class='rowcola'> <td class='optopt'>USERNAME</td> <td>The HTTP username to specify for authentication</td> </tr> <tr class='rowcola'> <td class='optopt'>UserAgent</td> <td>The User-Agent header to use for all requests</td> </tr> <tr class='rowcola'> <td class='optopt'>VERBOSE</td> <td>Enable detailed status messages</td> </tr> <tr class='rowcola'> <td class='optopt'>WORKSPACE</td> <td>Specify the workspace for this module</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::header_folding</td> <td>Enable folding of HTTP headers</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::method_random_case</td> <td>Use random casing for the HTTP method</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::method_random_invalid</td> <td>Use a random invalid, HTTP method for request</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::method_random_valid</td> <td>Use a random, but valid, HTTP method for request</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::pad_fake_headers</td> <td>Insert random, fake headers into the HTTP request</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::pad_fake_headers_count</td> <td>How many fake headers to insert into the HTTP request</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::pad_get_params</td> <td>Insert random, fake query string variables into the request</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::pad_get_params_count</td> <td>How many fake query string variables to insert into the request</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::pad_method_uri_count</td> <td>How many whitespace characters to use between the method and uri</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::pad_method_uri_type</td> <td>What type of whitespace to use between the method and uri (accepted: space, tab, apache)</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::pad_post_params</td> <td>Insert random, fake post variables into the request</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::pad_post_params_count</td> <td>How many fake post variables to insert into the request</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::pad_uri_version_count</td> <td>How many whitespace characters to use between the uri and version</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::pad_uri_version_type</td> <td>What type of whitespace to use between the uri and version (accepted: space, tab, apache)</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::uri_dir_fake_relative</td> <td>Insert fake relative directories into the uri</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::uri_dir_self_reference</td> <td>Insert self-referential directories into the uri</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::uri_encode_mode</td> <td>Enable URI encoding (accepted: none, hex-normal, hex-all, hex-random, u-normal, u-all, u-random)</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::uri_fake_end</td> <td>Add a fake end of URI (eg: /%20HTTP/1.0/../../)</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::uri_fake_params_start</td> <td>Add a fake start of params to the URI (eg: /%3fa=b/../)</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::uri_full_url</td> <td>Use the full URL for all HTTP requests</td> </tr> <tr class='rowcola'> <td class='optopt'>HTTP::uri_use_backslashes</td> <td>Use back slashes instead of forward slashes in the uri </td> </tr> </table> </div> <!--[if ie 9]> <style type="text/css" media="screen"> .mBannerInfo { filter: none; } </style> <![endif]--> </div><!-- lCol --> </section><!-- mainContent --> </div> <footer class="footer"> <div class="footerPad clearfix"> <div class="clearfix copyright"> <a href="http://www.rapid7.com" target="_blank"><img src="/revamp/images/r7-footer-logo.png" title="Rapid7" alt="Rapid7" width="110" height="18" /></a> <span>© 2013 Rapid7</span> </div><!--copyright--> <nav class="footerNav"> <ul class="clearfix"> <li><a href="https://community.rapid7.com/docs/DOC-2223" target="_blank">Legal</a></li> <li><a href="https://community.rapid7.com/login.jspa" target="_blank">Licence</a></li> <li><a href="http://www.rapid7.com/privacy.jsp" target="_blank">Privacy Policy</a></li> <li><a href="http://www.rapid7.com/disclosure.jsp" target="_blank">Disclosure Policy</a></li> <li><a href="http://www.rapid7.com/contact/" target="_blank">Contact</a></li> <li class="twitIcon"><a class="blue" href="http://twitter.com/Rapid7" target="_blank">@Rapid7</a></li> <li><a class="blue" href="http://twitter.com/metasploit" target="_blank">@Metasploit</a></li> </ul> </nav> </div> </footer><!--footer--> </div> </div> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-4622520-2']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> </body> </html>
|
metadata
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nifflsploit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michael Carlson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-04-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: nokogiri
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: ! ' A tool for finding metasploit module information related to CVEs '
|
42
|
+
email:
|
43
|
+
- me@mbcarlson.org
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- .document
|
49
|
+
- .gitignore
|
50
|
+
- Gemfile
|
51
|
+
- LICENSE.txt
|
52
|
+
- README.rdoc
|
53
|
+
- Rakefile
|
54
|
+
- lib/nifflsploit.rb
|
55
|
+
- lib/nifflsploit/query.rb
|
56
|
+
- lib/nifflsploit/result.rb
|
57
|
+
- lib/nifflsploit/version.rb
|
58
|
+
- nifflsploit.gemspec
|
59
|
+
- spec/lib/nifflsploit/query_spec.rb
|
60
|
+
- spec/lib/nifflsploit/result_spec.rb
|
61
|
+
- spec/lib/nifflsploit_spec.rb
|
62
|
+
- spec/support/positive_response.html
|
63
|
+
homepage: https://github.com/Prandium/nifflsploit
|
64
|
+
licenses: []
|
65
|
+
metadata: {}
|
66
|
+
post_install_message:
|
67
|
+
rdoc_options: []
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 1.9.2
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
requirements: []
|
81
|
+
rubyforge_project:
|
82
|
+
rubygems_version: 2.0.3
|
83
|
+
signing_key:
|
84
|
+
specification_version: 4
|
85
|
+
summary: This gem allows searching for metasploit exploit modules for a given CVE.
|
86
|
+
test_files:
|
87
|
+
- spec/lib/nifflsploit/query_spec.rb
|
88
|
+
- spec/lib/nifflsploit/result_spec.rb
|
89
|
+
- spec/lib/nifflsploit_spec.rb
|
90
|
+
- spec/support/positive_response.html
|