nessus 0.2.1.beta.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 76ac1f6c86cb0cbf049142847dbdf42cc5f8a1db
4
- data.tar.gz: e652f5f7f4e1982e9b9b10c867b43cec6ecd3a47
3
+ metadata.gz: da26219bbf327395cb4829fff768192a636efa2d
4
+ data.tar.gz: 23dc3fe7971f3d72c5a4c1532404b20ab0c1dcf5
5
5
  SHA512:
6
- metadata.gz: e15cbca29b8ae17f2d184abbd266abf11ff7fba756b4c9bd017f3cbdb30a408e5890ad4a080c8cd906ba84578e7eec3212fddf6025ea52aec1e1cdcf15ec897b
7
- data.tar.gz: aba6f4c23faf598197bf79a2fca6467a7c00b2709715cc2809aec430d9a46efdd4b5997bf6ddd6f54ea960c610130195b4da5f47aba5ffa4a500f53b7d45002b
6
+ metadata.gz: 867e8736cebdb0d7935fd7253a5eb364d1b67d5a520d639846dca210b8aecc9cca2beb14f5f29b519507c798c22866dae16979a0e4230d572d2eb6a024e11928
7
+ data.tar.gz: 42cdc8218da8593041207b36f715564cd8ab2c575e9aabc8036a4b839f2a18826299b5e3c8af1e4ff7b66337a76d5e8c5e61e9f92f7642b49f8cc11aa84ec2b3
data/.gitignore CHANGED
@@ -21,9 +21,9 @@
21
21
 
22
22
  # for a library or gem, you might want to ignore these files since the code is
23
23
  # intended to run in multiple environments; otherwise, check them in:
24
- # Gemfile.lock
25
- # .ruby-version
26
- # .ruby-gemset
24
+ Gemfile.lock
25
+ .ruby-version
26
+ .ruby-gemset
27
27
 
28
28
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
29
29
  .rvmrc
@@ -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,10 +47,13 @@ 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
55
  :password => password,
48
- :json => 1
56
+ :json => 1,
49
57
  }
50
58
  resp = connection.post '/login', payload
51
59
  resp = JSON.parse(resp.body)
@@ -63,7 +71,7 @@ module Nessus
63
71
  # @param [String] login the username of the account to use for authentication
64
72
  # @param [String] password the password of the account to use for authentication
65
73
  def logout
66
- resp = post '/logout', :json => 1
74
+ resp = post '/logout'
67
75
 
68
76
  if resp['reply']['status'].eql? 'OK'
69
77
  if connection.headers[:cookie].include? 'token='
@@ -90,17 +98,28 @@ module Nessus
90
98
  # @param [Hash] params the query parameters to send with the request
91
99
  # @param [Hash] headers the headers to send along with the request
92
100
  def get(url, params = {}, headers = {})
101
+ retries ||= 0
102
+
93
103
  unless authenticated?
94
- raise Nessus::Forbidden, 'Unable to detect a session token cookie, use #authenticate before sending any other requests'
104
+ fail Nessus::Unauthorized, 'Unable to detect a session token cookie, use #authenticate before sending any other requests'
95
105
  end
96
106
 
97
107
  params ||= {}
98
- params[:json] ||= 1
108
+ params[:json] = 1
99
109
 
100
- params = connection.params.merge(params)
101
- headers = connection.headers.merge(headers)
102
110
  resp = connection.get url, params, headers
111
+ fail Nessus::Unauthorized if resp.status == 401
112
+ fail Nessus::Forbidden if resp.status == 403
113
+
103
114
  JSON.parse(resp.body)
115
+ rescue Nessus::Unauthorized, Nessus::Forbidden
116
+ if retries < 1
117
+ retries += 1
118
+ authenticate(@login, @password) if @login && @password
119
+ retry
120
+ else
121
+ raise Nessus::Forbidden, 'Unable to automatically reauthenticate'
122
+ end
104
123
  end
105
124
 
106
125
  # @param [String] url the URL/path to send a GET request using the
@@ -108,15 +127,28 @@ module Nessus
108
127
  # @param [Hash] payload the JSON body to send with the request
109
128
  # @param [Hash] headers the headers to send along with the request
110
129
  def post(url, payload = nil, headers = nil, &block)
130
+ retries ||= 0
131
+
111
132
  unless authenticated?
112
- raise Nessus::Forbidden, 'Unable to detect a session token cookie, use #authenticate before sending any other requests'
133
+ fail Nessus::Unauthorized, 'Unable to detect a session token cookie, use #authenticate before sending any other requests'
113
134
  end
114
135
 
115
136
  payload ||= {}
116
- payload[:json] ||= 1
137
+ payload[:json] = 1
117
138
 
118
139
  resp = connection.post(url, payload, headers, &block)
140
+ fail Nessus::Unauthorized if resp.status == 401
141
+ fail Nessus::Forbidden if resp.status == 403
142
+
119
143
  JSON.parse(resp.body)
144
+ rescue Nessus::Unauthorized, Nessus::Forbidden
145
+ if retries < 1
146
+ retries += 1
147
+ authenticate(@login, @password) if @login && @password
148
+ retry
149
+ else
150
+ raise Nessus::Forbidden, 'Unable to automatically reauthenticate'
151
+ end
120
152
  end
121
153
  end
122
154
  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.2.1.beta.1'
3
+ VERSION = '0.3.0'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nessus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1.beta.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erran Carey
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-24 00:00:00.000000000 Z
12
+ date: 2014-09-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -91,7 +91,6 @@ extra_rdoc_files: []
91
91
  files:
92
92
  - ".gitignore"
93
93
  - Gemfile
94
- - Gemfile.lock
95
94
  - LICENSE.md
96
95
  - README.md
97
96
  - Rakefile
@@ -112,7 +111,6 @@ files:
112
111
  - lib/nessus/client/uuid.rb
113
112
  - lib/nessus/error.rb
114
113
  - lib/nessus/version.rb
115
- - mjcarey@10.5.5.14
116
114
  - nessus.gemspec
117
115
  homepage: https://github.com/threatagent/nessus.rb
118
116
  licenses:
@@ -129,9 +127,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
129
127
  version: '0'
130
128
  required_rubygems_version: !ruby/object:Gem::Requirement
131
129
  requirements:
132
- - - ">"
130
+ - - ">="
133
131
  - !ruby/object:Gem::Version
134
- version: 1.3.1
132
+ version: '0'
135
133
  requirements: []
136
134
  rubyforge_project:
137
135
  rubygems_version: 2.2.0
@@ -1,31 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- nessus (0.1.0.beta.18)
5
- faraday
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- coderay (1.1.0)
11
- faraday (0.8.9)
12
- multipart-post (~> 1.2.0)
13
- method_source (0.8.2)
14
- multipart-post (1.2.0)
15
- pry (0.9.12.3)
16
- coderay (~> 1.0)
17
- method_source (~> 0.8)
18
- slop (~> 3.4)
19
- rake (10.1.0)
20
- slop (3.4.6)
21
- yard (0.8.7.3)
22
-
23
- PLATFORMS
24
- ruby
25
-
26
- DEPENDENCIES
27
- bundler (~> 1.3)
28
- nessus!
29
- pry
30
- rake
31
- yard
@@ -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)