nessus 0.1.0.beta.18 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 692b0f574b6c3eeccfc352fde2a9e087d0471399
4
+ data.tar.gz: a284de51173600bc5932275e09946318c42bb7eb
5
+ SHA512:
6
+ metadata.gz: 8a49a00b597d2c1212b8f3e2a9abfb7d9d574eb709ff37384ff79461a9acb083c08043c98fad83fc7b99853e2d7527ef96731d2461a27db035f77543cb82a915
7
+ data.tar.gz: f676e3b92942e49d6b912df040845bca07f638e9f791695c6aa29606acadaf1b3216df5d98ff6b21235cbbd2b10ec795ae13db2fd37c86441ca3b95dbb25a788
@@ -29,11 +29,16 @@ module Nessus
29
29
  attr_reader :connection
30
30
 
31
31
  # @param [String] host the base URL to use when connecting to the Nessus API
32
- def initialize(host, login = nil, password = nil)
33
- @verify_ssl = Nessus::Client.verify_ssl.nil? ? true : false
34
- @connection = Faraday.new host, :ssl => { :verify => @verify_ssl }
32
+ def initialize(host, login = nil, password = nil, connection_options = {})
33
+ connection_options[:ssl] ||= {}
34
+ connection_options[:ssl][:verify] ||= Nessus::Client.verify_ssl.nil? || Nessus::Client.verify_ssl
35
+
36
+ @connection = Faraday.new host, connection_options
35
37
  @connection.headers[:user_agent] = "Nessus.rb v#{Nessus::VERSION}".freeze
36
38
 
39
+ # Allow passing a block to Faraday::Connection
40
+ yield @connection if block_given?
41
+
37
42
  authenticate(login, password) if login && password
38
43
  end
39
44
 
@@ -42,12 +47,14 @@ module Nessus
42
47
  # @param [String] login the username of the account to use for authentication
43
48
  # @param [String] password the password of the account to use for authentication
44
49
  def authenticate(login, password)
50
+ @login = login
51
+ @password = password
52
+
45
53
  payload = {
46
54
  :login => login,
47
- :password => password,
48
- :json => 1
55
+ :password => password
49
56
  }
50
- resp = connection.post '/login', payload
57
+ resp = post '/login', payload
51
58
  resp = JSON.parse(resp.body)
52
59
 
53
60
  if resp['reply']['status'].eql? 'OK'
@@ -63,7 +70,7 @@ module Nessus
63
70
  # @param [String] login the username of the account to use for authentication
64
71
  # @param [String] password the password of the account to use for authentication
65
72
  def logout
66
- resp = post '/logout', :json => 1
73
+ resp = post '/logout'
67
74
 
68
75
  if resp['reply']['status'].eql? 'OK'
69
76
  if connection.headers[:cookie].include? 'token='
@@ -90,17 +97,28 @@ module Nessus
90
97
  # @param [Hash] params the query parameters to send with the request
91
98
  # @param [Hash] headers the headers to send along with the request
92
99
  def get(url, params = {}, headers = {})
100
+ retries ||= 0
101
+
93
102
  unless authenticated?
94
- raise Nessus::Forbidden, 'Unable to detect a session token cookie, use #authenticate before sending any other requests'
103
+ fail Nessus::Unauthorized, 'Unable to detect a session token cookie, use #authenticate before sending any other requests'
95
104
  end
96
105
 
97
106
  params ||= {}
98
- params[:json] ||= 1
107
+ params[:json] = 1
99
108
 
100
- params = connection.params.merge(params)
101
- headers = connection.headers.merge(headers)
102
109
  resp = connection.get url, params, headers
110
+ fail Nessus::Unauthorized if resp.status == 401
111
+ fail Nessus::Forbidden if resp.status == 403
112
+
103
113
  JSON.parse(resp.body)
114
+ rescue Nessus::Unauthorized, Nessus::Forbidden
115
+ if retries < 1
116
+ retries += 1
117
+ authenticate(@login, @password) if @login && @password
118
+ retry
119
+ else
120
+ raise Nessus::Forbidden, 'Unable to automatically reauthenticate'
121
+ end
104
122
  end
105
123
 
106
124
  # @param [String] url the URL/path to send a GET request using the
@@ -108,15 +126,28 @@ module Nessus
108
126
  # @param [Hash] payload the JSON body to send with the request
109
127
  # @param [Hash] headers the headers to send along with the request
110
128
  def post(url, payload = nil, headers = nil, &block)
129
+ retries ||= 0
130
+
111
131
  unless authenticated?
112
- raise Nessus::Forbidden, 'Unable to detect a session token cookie, use #authenticate before sending any other requests'
132
+ fail Nessus::Unauthorized, 'Unable to detect a session token cookie, use #authenticate before sending any other requests'
113
133
  end
114
134
 
115
135
  payload ||= {}
116
- payload[:json] ||= 1
136
+ payload[:json] = 1
117
137
 
118
138
  resp = connection.post(url, payload, headers, &block)
139
+ fail Nessus::Unauthorized if resp.status == 401
140
+ fail Nessus::Forbidden if resp.status == 403
141
+
119
142
  JSON.parse(resp.body)
143
+ rescue Nessus::Unauthorized, Nessus::Forbidden
144
+ if retries < 1
145
+ retries += 1
146
+ authenticate(@login, @password) if @login && @password
147
+ retry
148
+ else
149
+ raise Nessus::Forbidden, 'Unable to automatically reauthenticate'
150
+ end
120
151
  end
121
152
  end
122
153
  end
@@ -10,6 +10,14 @@ module Nessus
10
10
  resp = connection.get '/file/report/download', :report => uuid
11
11
  resp.body
12
12
  end
13
+
14
+ # GET /file/xslt/list
15
+ #
16
+ # @return [Array<Hash>] an object containing a list of XSLT transformations
17
+ def xslt_list
18
+ response = post '/file/xslt/list'
19
+ response['reply']['contents']
20
+ end
13
21
  end
14
22
  end
15
23
  end
@@ -10,14 +10,6 @@ module Nessus
10
10
  response['reply']['contents']['reports']['report']
11
11
  end
12
12
 
13
- # GET /file/xslt/list
14
- #
15
- # @return [Array<Hash>] an object containing a list of XSLT transformations
16
- def xslt_list
17
- response = post '/file/xslt/list'
18
- response['reply']['contents']
19
- end
20
-
21
13
  # POST /report/delete
22
14
  #
23
15
  # @param [String] report unique identifier
@@ -15,8 +15,7 @@ module Nessus
15
15
  payload = {
16
16
  :target => target,
17
17
  :policy_id => policy_id,
18
- :scan_name => scan_name,
19
- :json => 1
18
+ :scan_name => scan_name
20
19
  }
21
20
  payload[:seq] = seq if seq
22
21
  response = post '/scan/new', payload
@@ -78,8 +77,7 @@ module Nessus
78
77
  payload = {
79
78
  :template_name => template_name,
80
79
  :policy_id => policy_id,
81
- :target => target,
82
- :json => 1
80
+ :target => target
83
81
  }
84
82
  payload[:seq] = seq if seq
85
83
  payload[:startTime] = start_time if start_time
@@ -1,8 +1,10 @@
1
1
  module Nessus
2
2
  # @todo add more descriptive error classes
3
3
 
4
- # 403
4
+ # HTTP error 401
5
+ Unauthorized = Class.new(StandardError)
6
+ # HTTP error 403
5
7
  Forbidden = Class.new(StandardError)
6
- # *
8
+ # Catch all for HTTP errors
7
9
  UnknownError = Class.new(StandardError)
8
10
  end
@@ -1,4 +1,4 @@
1
1
  module Nessus
2
2
  # The version of the Nessus.rb library
3
- VERSION = '0.1.0.beta.18'
3
+ VERSION = '0.1.0'
4
4
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nessus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.beta.18
5
- prerelease: 6
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Erran Carey
@@ -10,86 +9,76 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2014-01-10 00:00:00.000000000 Z
12
+ date: 2014-06-14 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: bundler
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ~>
18
+ - - "~>"
21
19
  - !ruby/object:Gem::Version
22
20
  version: '1.3'
23
21
  type: :development
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ~>
25
+ - - "~>"
29
26
  - !ruby/object:Gem::Version
30
27
  version: '1.3'
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: pry
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ! '>='
32
+ - - ">="
37
33
  - !ruby/object:Gem::Version
38
34
  version: '0'
39
35
  type: :development
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ! '>='
39
+ - - ">="
45
40
  - !ruby/object:Gem::Version
46
41
  version: '0'
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: rake
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
- - - ! '>='
46
+ - - ">="
53
47
  - !ruby/object:Gem::Version
54
48
  version: '0'
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
- - - ! '>='
53
+ - - ">="
61
54
  - !ruby/object:Gem::Version
62
55
  version: '0'
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: yard
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
- - - ! '>='
60
+ - - ">="
69
61
  - !ruby/object:Gem::Version
70
62
  version: '0'
71
63
  type: :development
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
- - - ! '>='
67
+ - - ">="
77
68
  - !ruby/object:Gem::Version
78
69
  version: '0'
79
70
  - !ruby/object:Gem::Dependency
80
71
  name: faraday
81
72
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
73
  requirements:
84
- - - ! '>='
74
+ - - ">="
85
75
  - !ruby/object:Gem::Version
86
76
  version: '0'
87
77
  type: :runtime
88
78
  prerelease: false
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
80
  requirements:
92
- - - ! '>='
81
+ - - ">="
93
82
  - !ruby/object:Gem::Version
94
83
  version: '0'
95
84
  description: A Ruby client for the Nessus 5.x JSON REST API
@@ -100,7 +89,7 @@ executables: []
100
89
  extensions: []
101
90
  extra_rdoc_files: []
102
91
  files:
103
- - .gitignore
92
+ - ".gitignore"
104
93
  - Gemfile
105
94
  - Gemfile.lock
106
95
  - LICENSE.md
@@ -123,32 +112,30 @@ files:
123
112
  - lib/nessus/client/uuid.rb
124
113
  - lib/nessus/error.rb
125
114
  - lib/nessus/version.rb
126
- - mjcarey@10.5.5.14
127
115
  - nessus.gemspec
128
116
  homepage: https://github.com/threatagent/nessus.rb
129
117
  licenses:
130
118
  - MIT
119
+ metadata: {}
131
120
  post_install_message:
132
121
  rdoc_options: []
133
122
  require_paths:
134
123
  - lib
135
124
  required_ruby_version: !ruby/object:Gem::Requirement
136
- none: false
137
125
  requirements:
138
- - - ! '>='
126
+ - - ">="
139
127
  - !ruby/object:Gem::Version
140
128
  version: '0'
141
129
  required_rubygems_version: !ruby/object:Gem::Requirement
142
- none: false
143
130
  requirements:
144
- - - ! '>'
131
+ - - ">="
145
132
  - !ruby/object:Gem::Version
146
- version: 1.3.1
133
+ version: '0'
147
134
  requirements: []
148
135
  rubyforge_project:
149
- rubygems_version: 1.8.23
136
+ rubygems_version: 2.2.0
150
137
  signing_key:
151
- specification_version: 3
138
+ specification_version: 4
152
139
  summary: A Ruby client for the Nessus 5.x JSON REST API. UPDATE_ME
153
140
  test_files: []
154
141
  has_rdoc:
@@ -1,227 +0,0 @@
1
- #
2
- # This file configures the New Relic Agent. New Relic monitors
3
- # Ruby, Java, .NET, PHP, and Python applications with deep visibility and low overhead.
4
- # For more information, visit www.newrelic.com.
5
- #
6
- # Generated January 09, 2014
7
- #
8
- # This configuration file is custom generated for Me_270
9
-
10
-
11
- # Here are the settings that are common to all environments
12
- common: &default_settings
13
- # ============================== LICENSE KEY ===============================
14
-
15
- # You must specify the license key associated with your New Relic
16
- # account. This key binds your Agent's data to your account in the
17
- # New Relic service.
18
- license_key: '06522801ff9ca5c1881e5494d76639ec2932adac'
19
-
20
- # Agent Enabled (Ruby/Rails Only)
21
- # Use this setting to force the agent to run or not run.
22
- # Default is 'auto' which means the agent will install and run only
23
- # if a valid dispatcher such as Mongrel is running. This prevents
24
- # it from running with Rake or the console. Set to false to
25
- # completely turn the agent off regardless of the other settings.
26
- # Valid values are true, false and auto.
27
- #
28
- # agent_enabled: auto
29
-
30
- # Application Name Set this to be the name of your application as
31
- # you'd like it show up in New Relic. The service will then auto-map
32
- # instances of your application into an "application" on your
33
- # dashboard page. If you want to map this instance into multiple
34
- # apps, like "AJAX Requests" and "All UI" then specify a semicolon
35
- # separated list of up to three distinct names, or a yaml list.
36
- # Defaults to the capitalized RAILS_ENV or RACK_ENV (i.e.,
37
- # Production, Staging, etc)
38
- #
39
- # Example:
40
- #
41
- # app_name:
42
- # - Ajax Service
43
- # - All Services
44
- #
45
- app_name: My Application
46
-
47
- # When "true", the agent collects performance data about your
48
- # application and reports this data to the New Relic service at
49
- # newrelic.com. This global switch is normally overridden for each
50
- # environment below. (formerly called 'enabled')
51
- monitor_mode: true
52
-
53
- # Developer mode should be off in every environment but
54
- # development as it has very high overhead in memory.
55
- developer_mode: false
56
-
57
- # The newrelic agent generates its own log file to keep its logging
58
- # information separate from that of your application. Specify its
59
- # log level here.
60
- log_level: info
61
-
62
- # Optionally set the path to the log file This is expanded from the
63
- # root directory (may be relative or absolute, e.g. 'log/' or
64
- # '/var/log/') The agent will attempt to create this directory if it
65
- # does not exist.
66
- # log_file_path: 'log'
67
-
68
- # Optionally set the name of the log file, defaults to 'newrelic_agent.log'
69
- # log_file_name: 'newrelic_agent.log'
70
-
71
- # The newrelic agent communicates with the service via https by default. This
72
- # prevents eavesdropping on the performance metrics transmitted by the agent.
73
- # The encryption required by SSL introduces a nominal amount of CPU overhead,
74
- # which is performed asynchronously in a background thread. If you'd prefer
75
- # to send your metrics over http uncomment the following line.
76
- # ssl: false
77
-
78
- #============================== Browser Monitoring ===============================
79
- # New Relic Real User Monitoring gives you insight into the performance real users are
80
- # experiencing with your website. This is accomplished by measuring the time it takes for
81
- # your users' browsers to download and render your web pages by injecting a small amount
82
- # of JavaScript code into the header and footer of each page.
83
- browser_monitoring:
84
- # By default the agent automatically injects the monitoring JavaScript
85
- # into web pages. Set this attribute to false to turn off this behavior.
86
- auto_instrument: true
87
-
88
- # Proxy settings for connecting to the New Relic server.
89
- #
90
- # If a proxy is used, the host setting is required. Other settings
91
- # are optional. Default port is 8080.
92
- #
93
- # proxy_host: hostname
94
- # proxy_port: 8080
95
- # proxy_user:
96
- # proxy_pass:
97
-
98
- # The agent can optionally log all data it sends to New Relic servers to a
99
- # separate log file for human inspection and auditing purposes. To enable this
100
- # feature, change 'enabled' below to true.
101
- # See: https://newrelic.com/docs/ruby/audit-log
102
- audit_log:
103
- enabled: false
104
-
105
- # Tells transaction tracer and error collector (when enabled)
106
- # whether or not to capture HTTP params. When true, frameworks can
107
- # exclude HTTP parameters from being captured.
108
- # Rails: the RoR filter_parameter_logging excludes parameters
109
- # Java: create a config setting called "ignored_params" and set it to
110
- # a comma separated list of HTTP parameter names.
111
- # ex: ignored_params: credit_card, ssn, password
112
- capture_params: false
113
-
114
- # Transaction tracer captures deep information about slow
115
- # transactions and sends this to the New Relic service once a
116
- # minute. Included in the transaction is the exact call sequence of
117
- # the transactions including any SQL statements issued.
118
- transaction_tracer:
119
-
120
- # Transaction tracer is enabled by default. Set this to false to
121
- # turn it off. This feature is only available at the Professional
122
- # and above product levels.
123
- enabled: true
124
-
125
- # Threshold in seconds for when to collect a transaction
126
- # trace. When the response time of a controller action exceeds
127
- # this threshold, a transaction trace will be recorded and sent to
128
- # New Relic. Valid values are any float value, or (default) "apdex_f",
129
- # which will use the threshold for an dissatisfying Apdex
130
- # controller action - four times the Apdex T value.
131
- transaction_threshold: apdex_f
132
-
133
- # When transaction tracer is on, SQL statements can optionally be
134
- # recorded. The recorder has three modes, "off" which sends no
135
- # SQL, "raw" which sends the SQL statement in its original form,
136
- # and "obfuscated", which strips out numeric and string literals.
137
- record_sql: obfuscated
138
-
139
- # Threshold in seconds for when to collect stack trace for a SQL
140
- # call. In other words, when SQL statements exceed this threshold,
141
- # then capture and send to New Relic the current stack trace. This is
142
- # helpful for pinpointing where long SQL calls originate from.
143
- stack_trace_threshold: 0.500
144
-
145
- # Determines whether the agent will capture query plans for slow
146
- # SQL queries. Only supported in mysql and postgres. Should be
147
- # set to false when using other adapters.
148
- # explain_enabled: true
149
-
150
- # Threshold for query execution time below which query plans will
151
- # not be captured. Relevant only when `explain_enabled` is true.
152
- # explain_threshold: 0.5
153
-
154
- # Error collector captures information about uncaught exceptions and
155
- # sends them to New Relic for viewing
156
- error_collector:
157
-
158
- # Error collector is enabled by default. Set this to false to turn
159
- # it off. This feature is only available at the Professional and above
160
- # product levels.
161
- enabled: true
162
-
163
- # Rails Only - tells error collector whether or not to capture a
164
- # source snippet around the place of the error when errors are View
165
- # related.
166
- capture_source: true
167
-
168
- # To stop specific errors from reporting to New Relic, set this property
169
- # to comma-separated values. Default is to ignore routing errors,
170
- # which are how 404's get triggered.
171
- ignore_errors: "ActionController::RoutingError,Sinatra::NotFound"
172
-
173
- # If you're interested in capturing memcache keys as though they
174
- # were SQL uncomment this flag. Note that this does increase
175
- # overhead slightly on every memcached call, and can have security
176
- # implications if your memcached keys are sensitive
177
- # capture_memcache_keys: true
178
-
179
- # Application Environments
180
- # ------------------------------------------
181
- # Environment-specific settings are in this section.
182
- # For Rails applications, RAILS_ENV is used to determine the environment.
183
- # For Java applications, pass -Dnewrelic.environment <environment> to set
184
- # the environment.
185
-
186
- # NOTE if your application has other named environments, you should
187
- # provide newrelic configuration settings for these environments here.
188
-
189
- development:
190
- <<: *default_settings
191
- # Turn off communication to New Relic service in development mode (also
192
- # 'enabled').
193
- # NOTE: for initial evaluation purposes, you may want to temporarily
194
- # turn the agent on in development mode.
195
- monitor_mode: false
196
-
197
- # Rails Only - when running in Developer Mode, the New Relic Agent will
198
- # present performance information on the last 100 transactions you have
199
- # executed since starting the mongrel.
200
- # NOTE: There is substantial overhead when running in developer mode.
201
- # Do not use for production or load testing.
202
- developer_mode: true
203
-
204
- # Enable textmate links
205
- # textmate: true
206
-
207
- test:
208
- <<: *default_settings
209
- # It almost never makes sense to turn on the agent when running
210
- # unit, functional or integration tests or the like.
211
- monitor_mode: false
212
-
213
- # Turn on the agent in production for 24x7 monitoring. NewRelic
214
- # testing shows an average performance impact of < 5 ms per
215
- # transaction, you can leave this on all the time without
216
- # incurring any user-visible performance degradation.
217
- production:
218
- <<: *default_settings
219
- monitor_mode: true
220
-
221
- # Many applications have a staging environment which behaves
222
- # identically to production. Support for that environment is provided
223
- # here. By default, the staging environment has the agent turned on.
224
- staging:
225
- <<: *default_settings
226
- monitor_mode: true
227
- # app_name: My Application (Staging)