nexposecli 0.1.13 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 645cb21b939d844ed31021452105951e730eaad6
4
- data.tar.gz: 959c184c42fc6e6c5c3144fa990d29eedcafa4ee
3
+ metadata.gz: 55304881a72629484ab8661e51fa5f7add72f67a
4
+ data.tar.gz: c3b6bda8e98491d93e0e8f68fca7336ff999af7b
5
5
  SHA512:
6
- metadata.gz: 976d9fbcd330e701a208fc2f913db375aec73620d5c28be038b986340900ab0610772a76ed33a89c75e9332eba40e5939ad6db481708e19c7375bec28ca6b872
7
- data.tar.gz: b5baef62a245268cb480f8bf0fb105c47798a2117ba335059ea3084b4217894d20b0daa507d7e54aaeee00349af16b1b51ddffa9d613c08b8b49f53e69d61800
6
+ metadata.gz: 7ed6b2f14f1aa74ee8d49a5c1424b5a88d680c4145200ee590ca26e1e31c9c905d8b10268076f73a4b4759c25db43543d136e9214591b9b6ac694c319c40c0de
7
+ data.tar.gz: 9dfecc38b96235615560ae57897ba19495910481a6db43c2aed4ed7453f1d5610b9fbcb825cea0a8e13e959014a2643f313cab65cf3913794daf476de908d803
data/bin/nexposecli CHANGED
@@ -1,20 +1,18 @@
1
1
  #!/usr/bin/env ruby
2
2
  ##############################################################################
3
3
  #
4
- # File: evm.rb
4
+ # File: nexposecli
5
5
  #
6
6
  # Author: Erik Gomez <gomeze@pobox.com>
7
7
  # Erik Gomez <erik_gomez@rapid7.com>
8
8
  #
9
- # Purpose: UF ISC EVM Administrative tasks via cli
9
+ # Purpose: A command-line utility for the Rapid7 Nexpose Console
10
10
  #
11
- # Base Revision: $Id:$ (20141030@1227.01)
12
- # Revision: $Id:$ (20160426@1315.01)
13
- #
14
- # Usage: ./evm.rb <action> <target> [<args>]
11
+ # Usage: nexposecli <action> <target> [<args>]
15
12
  #
16
13
  # -v verbose
17
14
  # --help help
15
+ #
18
16
  # ***NOTE*** This script is being refactored!!!
19
17
  # It is currently a shameless copy of my UF code and
20
18
  # argparse.rb class code from Jim Hranicky (jfh@ufl.edu)
@@ -30,29 +28,18 @@ require 'netaddr'
30
28
  require 'logger'
31
29
  require 'yaml'
32
30
  require 'csv'
33
- require 'set'
34
31
  # for debug, this dumps the ruby objects to STDOUT
35
32
  require 'pp'
36
33
 
37
34
  ##############################################################################
38
- # Set Const
39
-
40
- # Allowed Ops by field, in Set form
41
- CVSS_SCORE_OPS = Set["IS", "IS_NOT", "IN_RANGE", "GREATER_THAN", "LESS_THAN"]
42
- IP_RANGE_OPS = Set["IN", "NOT_IN"]
43
- OS_OPS = Set["CONTAINS", "NOT_CONTAINS", "IS_EMPTY", "IS_NOT_EMPTY"]
44
- RISK_SCORE_OPS = Set["IS", "IS_NOT", "IN_RANGE", "GREATER_THAN", "LESS_THAN"]
45
- SITE_ID_OPS = Set["IN", "NOT_IN"]
46
- SCAN_DATE_OPS = Set["ON_OR_BEFORE", "ON_OR_AFTER", "BETWEEN", "EARLIER_THAN", "WITHIN_THE_LAST"]
47
-
48
35
  # Set default var values
49
36
  $debug = false
50
37
  uf_scanners = ''
51
38
 
52
- @logpath = "./logs/"
39
+ @logpath = "./"
53
40
  @scanpath = "./"
54
41
  # Attempting to use logfile per month: @logfile = "evm" + Time.now.strftime("%Y%m%d_%H%M%S") + ".log"
55
- @logfile = "evm" + Time.now.strftime("%Y%m") + ".log"
42
+ @logfile = "nexposecli" + Time.now.strftime("%Y%m") + ".log"
56
43
  @evm_reqid = SecureRandom.hex
57
44
  @nsc_server = "<server>"
58
45
  @nsc_user = "<user>"
@@ -80,7 +67,7 @@ def upp( uobj )
80
67
  end
81
68
  end
82
69
 
83
- # UF bail vs exit
70
+ # bail vs exit
84
71
  def ubail(retval, msg)
85
72
  uputs("BAIL", msg.to_s)
86
73
  exit(retval)
@@ -225,14 +212,7 @@ def validate_searchstring(sfstr)
225
212
  valid_search_field = nil
226
213
  valid_search_op = nil
227
214
 
228
- # Valid search fields and operators:
229
- # CVSS_SCORE = IS, IS_NOT, IN_RANGE, GREATER_THAN, LESS_THAN (Float 0.0-10.0)
230
- # IP_RANGE = IN, NOT_IN (IPv4 dotted notation)
231
- # OS = CONTAINS, NOT_CONTAINS, IS_EMPTY, IS_NOT_EMPTY
232
- # RISK_SCORE = IS, IS_NOT, IN_RANGE, GREATER_THAN, LESS_THAN (Fixnum)
233
- # SITE_ID = IN, NOT_IN (Fixnum)
234
- # SCAN_DATE = ON_OR_BEFORE, ON_OR_AFTER, BETWEEN (Value::ScanDate::FORMAT dates)
235
- # SCAN_DATE = EARLIER_THAN, WITHIN_THE_LAST (Fixnum days)
215
+ # Valid search fields and operators can be found in lib/nexposecli/ops.rb
236
216
 
237
217
  # Grab search field and op
238
218
  search_field = sfstr.split(':').first.to_s
@@ -242,17 +222,17 @@ def validate_searchstring(sfstr)
242
222
  isValid = false
243
223
  case search_field
244
224
  when "CVSS_SCORE"
245
- isValid = true if CVSS_SCORE_OPS.include?(search_op)
225
+ isValid = true if Nexposecli::CVSS_SCORE_OPS.include?(search_op)
246
226
  when "IP_RANGE"
247
- isValid = true if IP_RANGE_OPS.include?(search_op)
227
+ isValid = true if Nexposecli::IP_RANGE_OPS.include?(search_op)
248
228
  when "OS"
249
- isValid = true if OS_OPS.include?(search_op)
229
+ isValid = true if Nexposecli::OS_OPS.include?(search_op)
250
230
  when "RISK_SCORE"
251
- isValid = true if RISK_SCORE_OPS.include?(search_op)
231
+ isValid = true if Nexposecli::RISK_SCORE_OPS.include?(search_op)
252
232
  when "SITE_ID"
253
- isValid = true if SITE_ID_OPS.include?(search_op)
233
+ isValid = true if Nexposecli::SITE_ID_OPS.include?(search_op)
254
234
  when "SCAN_DATE"
255
- isValid = true if SCAN_DATE_OPS.include?(search_op)
235
+ isValid = true if Nexposecli::SCAN_DATE_OPS.include?(search_op)
256
236
  else
257
237
  # Unsupported search field
258
238
  end
@@ -265,230 +245,13 @@ def validate_searchstring(sfstr)
265
245
  end
266
246
  end
267
247
 
268
- ##############################################################################
269
- #
270
- # Conf
271
- #
272
- ##############################################################################
273
- # Parse cli and config options passed
274
- ARGS = %q{
275
- - comment : General Options
276
-
277
- - name : help
278
- desc : Print help
279
-
280
- - name : verbose
281
- short : v
282
- desc : Run verbosely
283
-
284
- - comment : EVM Administrative Actions
285
-
286
- - name : create
287
- short : c
288
- desc : The create action is used for new objects
289
-
290
- - name : list
291
- short : l
292
- desc : The list action is used to list of objects of the same type
293
-
294
- - name : show
295
- short : s
296
- desc : The show action is used to display details of a single object
297
-
298
- - name : update
299
- short : u
300
- desc : The update action is used to change properties of a single object
301
-
302
- - name : delete
303
- short : d
304
- desc : The delete action is used to delete a single object
305
-
306
- - name : run
307
- desc : The run action is only used to issue commands to the COMMAND object
308
-
309
- - comment : EVM Action Targets
310
-
311
- - name : USER
312
- short : U
313
- desc : The USER target is used to alter or create the USER object
314
-
315
- - name : ROLE
316
- short : L
317
- desc : The ROLE target is used to alter or create the ROLE object
318
-
319
- - name : ENGINE
320
- short : E
321
- desc : The ENGINE target is used to alter or create the SCAN ENGINE object
322
-
323
- - name : POOL
324
- short : P
325
- desc : The POOL target is used to alter or create the POOL object
326
-
327
- - name : SCAN
328
- short : S
329
- desc : The SCAN target is used to alter or create the SCAN object
330
-
331
- - name : SITE
332
- short : T
333
- desc : The SITE target is used to alter or create the SITE object
334
-
335
- - name : ASSET
336
- short : A
337
- desc : The ASSET target is used to alter or create the ASSET object
338
-
339
- - name : DASSET
340
- short : D
341
- desc : The DASSET target is used to alter or create the DASSET object
342
-
343
- - name : TAG
344
- short : G
345
- desc : The TAG target is used to alter or create the TAG object
346
-
347
- - name : REPORT
348
- short : R
349
- desc : The REPORT target is used to alter or create the REPORT object
350
-
351
- - name : VULN
352
- short : V
353
- desc : The VULN target is used to alter or create the VULN object
354
-
355
- - name : CONSOLE
356
- desc : The CONSOLE target is used to alter the CONSOLE nsc connection object
357
-
358
- - name : COMMAND
359
- short : C
360
- desc : The COMMAND target is only used in conjunction with the --run action
361
- required : true
362
-
363
- - name : QUERY
364
- desc : The QUERY target is only used in conjunction with the --run action
365
-
366
- - comment : EVM Action Argument Values
367
-
368
- - name : host
369
- short : h
370
- desc : The target ip or host to be acted upon by the action
371
- required : true
372
-
373
- - name : port
374
- short : p
375
- desc : The target port to be acted upon by the action
376
- required : true
377
-
378
- - name : name
379
- short : n
380
- desc : The target object name
381
- required : true
382
-
383
- - name : fullname
384
- desc : The target object full name
385
- required : true
386
-
387
- - name : newname
388
- desc : The target object new name
389
- required : true
390
-
391
- - name : description
392
- short : t
393
- desc : The text based description of the object being acted upon
394
- required : true
395
-
396
- - name : id
397
- short : i
398
- desc : The object id being acted upon
399
- required : true
400
-
401
- - name : site
402
- desc : The site id of the object being acted upon
403
- required : true
404
-
405
- - name : range
406
- short : r
407
- desc : The comma separated (begin,end) range of ip addresses to be acted upon
408
- required : true
409
-
410
- - name : targets
411
- desc : The network block or ip addresses to be acted upon, in CIDRv4, dotted dashed, or ip format
412
- required : true
413
-
414
- - name : argv
415
- short : g
416
- desc : Argument vector for the action, in the form key:value pairs
417
- required : true
418
-
419
- - name : filter
420
- short : f
421
- desc : Filters which are applied to the action, in the form key:value pairs
422
- required : true
423
-
424
- - name : filterv
425
- desc : Filter value which are applied to the action. Formate varies by filter type
426
- required : true
427
-
428
- - name : action
429
- short : a
430
- desc : The subaction to be performed within the target action
431
- required : true
432
-
433
- - name : sql
434
- desc : The sql query to be executed
435
- required : true
436
-
437
- - name : sqlvar
438
- desc : The sql query to be executed
439
- required : true
440
-
441
- - name : sqlfile
442
- desc : The file containing the sql query to be executed
443
- required : true
444
-
445
- - name : timeout
446
- desc : The timeout value in seconds for certain actions, such as reporting
447
- required : true
448
-
449
- - name : attempts
450
- desc : The max number of attempts for iterative actions
451
- required : true
452
-
453
- - name : loop_sleep
454
- desc : The sleep interval in seconds between action iterations
455
- required : true
456
-
457
- - comment : Nexpose Console credentials
458
-
459
- - name : config
460
- desc : The config yaml file containing the connection details of the Nexpose Console Server
461
- required : true
462
-
463
- - name : nsc_server
464
- desc : The ip or hostname of the Nexpose Console Server
465
- required : true
466
-
467
- - name : nsc_user
468
- desc : The username to login to the Nexpose Console Server
469
- required : true
470
-
471
- - name : nsc_pass
472
- desc : The password to login to the Nexpose Console Server
473
- required : true
474
-
475
- - name : logpath
476
- desc : The path for writing the logs
477
- required : true
478
-
479
- - name : scanpath
480
- desc : The path for exported/imported scans
481
- required : true
482
- }
483
-
484
-
485
248
  ##############################################################################
486
249
  #
487
250
  # Main
488
251
  #
489
252
  ##############################################################################
490
253
  # Args parsing
491
- ap = Nexposecli::ArgParse.new( ARGS )
254
+ ap = Nexposecli::ArgParse.new( Nexposecli::ARGS )
492
255
 
493
256
  begin
494
257
  args = ap.parse
@@ -508,6 +271,7 @@ end
508
271
  uputs("LOG", "Automation tasks being run from: " + Socket.gethostname.to_s)
509
272
  uputs("LOG", "Automation tasks being logged to: #{@logpath.to_s + @logfile.to_s}")
510
273
 
274
+ # Needs to move
511
275
  if args.scanpath
512
276
  # consider input validation, to avoid sec issues
513
277
  @scanpath = args.scanpath.to_s
@@ -517,6 +281,7 @@ $debug = TRUE if args.verbose
517
281
  uputs("CLI", "Command-line args parsed for #{$0}")
518
282
  uputs("CLI", "Args: #{args.inspect}")
519
283
 
284
+ # Needs to potentially move, based on TARGET help vs general usage
520
285
  if args.help
521
286
  uputs("CLI", "Help was requested, displaying usage and exiting")
522
287
  puts ap.usage("#{$0} [options] (v #{Nexposecli::VERSION})")
@@ -552,9 +317,12 @@ uputs("TARGET", "Checking for the requested target")
552
317
  @target |= 4096 if args.TEMPLATE
553
318
  @target |= 8192 if args.ROLE
554
319
  @target |= 16384 if args.QUERY
320
+ @target |= 32768 if args.AUTHSRC
555
321
  uputs("TARGET", "The requested target value is: #{@target.to_s}")
556
- raise "You can only submit one target per task, see --help (#{@target})" unless [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384].include?(@target)
322
+ raise "You can only submit one target per task, see --help (#{@target})" unless [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768].include?(@target)
557
323
 
324
+ # Needs to potentially move into TARGET object or module instance var
325
+ ## First NSC Connection and Session creation
558
326
  # nsc conn vars
559
327
  unless (
560
328
  (args.nsc_server && args.nsc_user && args.nsc_pass) || args.config
@@ -609,26 +377,38 @@ when 1 # TARGET USER
609
377
  uputs("ACTION", 'create USER action requested')
610
378
  name = args.name
611
379
  full_name = "#{args.fullname}"
612
- password = "nxpassword"
380
+ email = "#{args.email}"
381
+ role = "#{args.role}"
382
+ password = "#{args.password}"
613
383
 
614
384
  user = Nexpose::User.new(name,
615
385
  full_name,
616
386
  password,
617
- role_name = 'user',
387
+ role_name = role,
618
388
  id = -1,
619
389
  enabled = 1,
620
- email = nil,
390
+ email = email,
621
391
  all_sites = false,
622
392
  all_groups = false,
623
393
  token = nil)
624
- pp user
625
- puts 'Not yet saved'
394
+ if args.authsrc
395
+ user.authsrcid = args.authsrc
396
+ user.password = nil
397
+ end
626
398
  user.save(@nsc)
627
- pp user
399
+ puts "The user: #{user.name} was created with id: #{user.id}"
400
+ uputs("USER", "New user created: #{user.name} (id:#{user.id})")
401
+ upp user
628
402
  when 2 # list
629
403
  uputs("ACTION", 'list USER action requested')
630
404
  user_listing = @nsc.list_users
631
- pp user_listing
405
+ puts "Users:"
406
+ puts " - " + '%-6.6s' % 'Admin?' + " " + '%-15.15s' % 'Username' + " " + '%-25.25s' % 'Full Name' + " " + '%-30.30s' % 'Email' + " " + '%-25.25s' % "Role" + "\tAuth Module:Source"
407
+ user_listing.each do |user|
408
+ role = Nexpose::User.load(@nsc, user.id).role_name
409
+ puts " - " + '%-6.6s' % user.is_admin.to_s + " " + '%-15.15s' % user.name + " " + '%-25.25s' % user.full_name + " " + '%-30.30s' % user.email + " " + '%-25.25s' % role + "\t#{user.auth_module}:#{user.auth_source}"
410
+ end
411
+ upp user_listing
632
412
  when 4 # show
633
413
  uputs("ACTION", 'show USER action requested')
634
414
  userid = args.id.to_str
@@ -1705,6 +1485,11 @@ when 8192 # TARGET ROLE
1705
1485
  when 2 # list
1706
1486
  uputs("ACTION", 'list ROLE action requested')
1707
1487
  postd = @nsc.roles
1488
+ puts "Roles:"
1489
+ puts " - " + '%-6.6s' % 'Scope' + " " + '%-5.5s' % 'Id' + " " + '%-25.25s' % 'Username' + " " + '%-25.25s' % 'Full Name' + " " + '%-60.60s' % 'Description'
1490
+ postd.each do |role|
1491
+ puts " - " + '%-6.6s' % role.scope + " " + '%-5.5s' % role.id + " " + '%-25.25s' % role.name + " " + '%-25.25s' % role.full_name + " " + '%-60.60s' % role.description
1492
+ end
1708
1493
  upp postd
1709
1494
  puts "\n"
1710
1495
  when 4 # show
@@ -1762,8 +1547,24 @@ when 16384 # TARGET QUERY
1762
1547
 
1763
1548
  puts csv_output
1764
1549
  else
1765
- uputs("ACTION", 'The action requested is not implemented for target: COMMAND')
1766
- puts 'The action requested is not implemented for target: COMMAND'
1550
+ uputs("ACTION", 'The action requested is not implemented for target: QUERY')
1551
+ puts 'The action requested is not implemented for target: QUERY'
1552
+ end
1553
+ when 32768 # TARGET AUTHSRC
1554
+ case @action
1555
+ when 2 # list
1556
+ uputs("ACTION", 'list AUTHSRC action requested')
1557
+ authsrcs = Nexpose::UserAuthenticator.list(@nsc)
1558
+ puts "Authenticator Sources:"
1559
+ puts " - " + '%-10.10s' % 'Auth Module' + " " + '%-5.5s' % 'Id' + " " + '%-40.40s' % 'Auth Source' + " " + '%-10.10s' % 'External?'
1560
+ authsrcs.each do |src|
1561
+ puts " - " + '%-10.10s' % src.auth_module + " " + '%-5.5s' % src.id + " " + '%-40.40s' % src.auth_source + " " + '%-10.10s' % src.external.to_s
1562
+ end
1563
+ upp authsrcs
1564
+ puts "\n"
1565
+ else
1566
+ uputs("ACTION", 'The action requested is not implemented for target: AUTHSRC')
1567
+ puts 'The action requested is not implemented for target: AUTHSRC'
1767
1568
  end
1768
1569
  else
1769
1570
  # there is no default target
data/bin/nexposecli.test CHANGED
@@ -2,5 +2,14 @@
2
2
 
3
3
  require 'nexposecli'
4
4
 
5
- chatter = Nexposecli::Chatter.new
6
- chatter.say_hello
5
+ # chatter = Nexposecli::Chatter.new
6
+ # chatter.say_hello
7
+
8
+ # nxclass = Nexposecli::Target.const_get("Role")
9
+ nxclass = Nexposecli::Target.const_get("#{ARGV[0]}")
10
+
11
+ puts nxclass.new.list
12
+ puts "and again but via const_get for method"
13
+ puts nxclass.new.method("list").call("me")
14
+ puts nxclass.new.method("list").call
15
+ puts nxclass.new.method("list").call("Sarah")
@@ -0,0 +1,232 @@
1
+ module Nexposecli
2
+ ##############################################################################
3
+ #
4
+ # Conf
5
+ #
6
+ ##############################################################################
7
+ # Parse cli and config options passed
8
+ ARGS = %q{
9
+ - comment : General Options
10
+
11
+ - name : help
12
+ desc : Print help
13
+
14
+ - name : verbose
15
+ short : v
16
+ desc : Run verbosely
17
+
18
+ - comment : EVM Administrative Actions
19
+
20
+ - name : create
21
+ short : c
22
+ desc : The create action is used for new objects
23
+
24
+ - name : list
25
+ short : l
26
+ desc : The list action is used to list of objects of the same type
27
+
28
+ - name : show
29
+ short : s
30
+ desc : The show action is used to display details of a single object
31
+
32
+ - name : update
33
+ short : u
34
+ desc : The update action is used to change properties of a single object
35
+
36
+ - name : delete
37
+ short : d
38
+ desc : The delete action is used to delete a single object
39
+
40
+ - name : run
41
+ desc : The run action is only used to issue commands to the COMMAND object
42
+
43
+ - comment : EVM Action Targets
44
+
45
+ - name : USER
46
+ short : U
47
+ desc : The USER target is used to alter or create the USER object
48
+
49
+ - name : ROLE
50
+ short : L
51
+ desc : The ROLE target is used to alter or create the ROLE object
52
+
53
+ - name : ENGINE
54
+ short : E
55
+ desc : The ENGINE target is used to alter or create the SCAN ENGINE object
56
+
57
+ - name : POOL
58
+ short : P
59
+ desc : The POOL target is used to alter or create the POOL object
60
+
61
+ - name : SCAN
62
+ short : S
63
+ desc : The SCAN target is used to alter or create the SCAN object
64
+
65
+ - name : SITE
66
+ short : T
67
+ desc : The SITE target is used to alter or create the SITE object
68
+
69
+ - name : ASSET
70
+ short : A
71
+ desc : The ASSET target is used to alter or create the ASSET object
72
+
73
+ - name : DASSET
74
+ short : D
75
+ desc : The DASSET target is used to alter or create the DASSET object
76
+
77
+ - name : TAG
78
+ short : G
79
+ desc : The TAG target is used to alter or create the TAG object
80
+
81
+ - name : REPORT
82
+ short : R
83
+ desc : The REPORT target is used to alter or create the REPORT object
84
+
85
+ - name : VULN
86
+ short : V
87
+ desc : The VULN target is used to alter or create the VULN object
88
+
89
+ - name : AUTHSRC
90
+ desc : The AUTHSRC target is used to alter or list the AUTHSRC object
91
+
92
+ - name : CONSOLE
93
+ desc : The CONSOLE target is used to alter the CONSOLE nsc connection object
94
+
95
+ - name : COMMAND
96
+ short : C
97
+ desc : The COMMAND target is only used in conjunction with the --run action
98
+ required : true
99
+
100
+ - name : QUERY
101
+ desc : The QUERY target is only used in conjunction with the --run action
102
+
103
+ - comment : EVM Action Argument Values
104
+
105
+ - name : host
106
+ short : h
107
+ desc : The target ip or host to be acted upon by the action
108
+ required : true
109
+
110
+ - name : port
111
+ short : p
112
+ desc : The target port to be acted upon by the action
113
+ required : true
114
+
115
+ - name : authsrc
116
+ desc : The target authsrc id
117
+ required : true
118
+
119
+ - name : role
120
+ desc : The target role name
121
+ required : true
122
+
123
+ - name : email
124
+ desc : The target email address
125
+ required : true
126
+
127
+ - name : name
128
+ short : n
129
+ desc : The target object name
130
+ required : true
131
+
132
+ - name : fullname
133
+ desc : The target object full name
134
+ required : true
135
+
136
+ - name : newname
137
+ desc : The target object new name
138
+ required : true
139
+
140
+ - name : description
141
+ short : t
142
+ desc : The text based description of the object being acted upon
143
+ required : true
144
+
145
+ - name : id
146
+ short : i
147
+ desc : The object id being acted upon
148
+ required : true
149
+
150
+ - name : site
151
+ desc : The site id of the object being acted upon
152
+ required : true
153
+
154
+ - name : range
155
+ short : r
156
+ desc : The comma separated (begin,end) range of ip addresses to be acted upon
157
+ required : true
158
+
159
+ - name : targets
160
+ desc : The network block or ip addresses to be acted upon, in CIDRv4, dotted dashed, or ip format
161
+ required : true
162
+
163
+ - name : argv
164
+ short : g
165
+ desc : Argument vector for the action, in the form key:value pairs
166
+ required : true
167
+
168
+ - name : filter
169
+ short : f
170
+ desc : Filters which are applied to the action, in the form key:value pairs
171
+ required : true
172
+
173
+ - name : filterv
174
+ desc : Filter value which are applied to the action. Formate varies by filter type
175
+ required : true
176
+
177
+ - name : action
178
+ short : a
179
+ desc : The subaction to be performed within the target action
180
+ required : true
181
+
182
+ - name : sql
183
+ desc : The sql query to be executed
184
+ required : true
185
+
186
+ - name : sqlvar
187
+ desc : The sql query to be executed
188
+ required : true
189
+
190
+ - name : sqlfile
191
+ desc : The file containing the sql query to be executed
192
+ required : true
193
+
194
+ - name : timeout
195
+ desc : The timeout value in seconds for certain actions, such as reporting
196
+ required : true
197
+
198
+ - name : attempts
199
+ desc : The max number of attempts for iterative actions
200
+ required : true
201
+
202
+ - name : loop_sleep
203
+ desc : The sleep interval in seconds between action iterations
204
+ required : true
205
+
206
+ - comment : Nexpose Console credentials
207
+
208
+ - name : config
209
+ desc : The config yaml file containing the connection details of the Nexpose Console Server
210
+ required : true
211
+
212
+ - name : nsc_server
213
+ desc : The ip or hostname of the Nexpose Console Server
214
+ required : true
215
+
216
+ - name : nsc_user
217
+ desc : The username to login to the Nexpose Console Server
218
+ required : true
219
+
220
+ - name : nsc_pass
221
+ desc : The password to login to the Nexpose Console Server
222
+ required : true
223
+
224
+ - name : logpath
225
+ desc : The path for writing the logs
226
+ required : true
227
+
228
+ - name : scanpath
229
+ desc : The path for exported/imported scans
230
+ required : true
231
+ }
232
+ end
@@ -0,0 +1,11 @@
1
+ require 'set'
2
+
3
+ module Nexposecli
4
+ # Allowed Search and Filter Operators by field, in Set form
5
+ CVSS_SCORE_OPS = Set["IS", "IS_NOT", "IN_RANGE", "GREATER_THAN", "LESS_THAN"]
6
+ IP_RANGE_OPS = Set["IN", "NOT_IN"]
7
+ OS_OPS = Set["CONTAINS", "NOT_CONTAINS", "IS_EMPTY", "IS_NOT_EMPTY"]
8
+ RISK_SCORE_OPS = Set["IS", "IS_NOT", "IN_RANGE", "GREATER_THAN", "LESS_THAN"]
9
+ SITE_ID_OPS = Set["IN", "NOT_IN"]
10
+ SCAN_DATE_OPS = Set["ON_OR_BEFORE", "ON_OR_AFTER", "BETWEEN", "EARLIER_THAN", "WITHIN_THE_LAST"]
11
+ end
@@ -0,0 +1,10 @@
1
+ module Nexposecli
2
+ module Target
3
+ class Role
4
+ def list(me='you')
5
+ puts "This is a nexposecli role list. Coming Soon for #{me}."
6
+ end
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1,10 @@
1
+ module Nexposecli
2
+ module Target
3
+ class Scan
4
+ def list
5
+ puts 'This is a nexposecli scan list. Coming Soon.'
6
+ end
7
+ end
8
+ end
9
+ end
10
+
@@ -1,3 +1,3 @@
1
1
  module Nexposecli
2
- VERSION = "0.1.13"
2
+ VERSION = "0.2.1"
3
3
  end
data/lib/nexposecli.rb CHANGED
@@ -1,10 +1,9 @@
1
1
  require "nexposecli/version"
2
2
  require "nexposecli/argparse"
3
+ require "nexposecli/args"
4
+ require "nexposecli/ops"
5
+ require "nexposecli/role"
6
+ require "nexposecli/scan"
3
7
 
4
8
  module Nexposecli
5
- class Chatter
6
- def say_hello
7
- puts 'This is nexposecli. Coming Soon.'
8
- end
9
- end
10
9
  end
data/nexposecli.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.summary = 'Ruby command-line utility for Rapid7 Nexpose'
11
11
  spec.description = 'This experimental gem provides a Ruby command-line utility to the Nexpose vulnerability management product by Rapid7.'
12
12
  spec.homepage = 'https://github.com/frozenr7/nexposecli'
13
- spec.license = 'BSD'
13
+ spec.license = 'BSD-3-Clause'
14
14
 
15
15
  spec.files = `git ls-files`.split($\)
16
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ["lib"]
19
19
 
20
20
  spec.required_ruby_version = '>= 2.1'
21
- spec.add_runtime_dependency "nexpose", ">= 4.0.4"
22
- spec.add_runtime_dependency "netaddr", ">= 1.5.1"
21
+ spec.add_runtime_dependency "nexpose", '~> 4.0', '>= 4.0.4'
22
+ spec.add_runtime_dependency "netaddr", '~> 1.5', '>= 1.5.1'
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.12"
25
25
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexposecli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Gomez
@@ -9,12 +9,15 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-06-02 00:00:00.000000000 Z
12
+ date: 2016-06-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nexpose
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '4.0'
18
21
  - - ">="
19
22
  - !ruby/object:Gem::Version
20
23
  version: 4.0.4
@@ -22,6 +25,9 @@ dependencies:
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '4.0'
25
31
  - - ">="
26
32
  - !ruby/object:Gem::Version
27
33
  version: 4.0.4
@@ -29,6 +35,9 @@ dependencies:
29
35
  name: netaddr
30
36
  requirement: !ruby/object:Gem::Requirement
31
37
  requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.5'
32
41
  - - ">="
33
42
  - !ruby/object:Gem::Version
34
43
  version: 1.5.1
@@ -36,6 +45,9 @@ dependencies:
36
45
  prerelease: false
37
46
  version_requirements: !ruby/object:Gem::Requirement
38
47
  requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: '1.5'
39
51
  - - ">="
40
52
  - !ruby/object:Gem::Version
41
53
  version: 1.5.1
@@ -103,6 +115,10 @@ files:
103
115
  - bin/setup
104
116
  - lib/nexposecli.rb
105
117
  - lib/nexposecli/argparse.rb
118
+ - lib/nexposecli/args.rb
119
+ - lib/nexposecli/ops.rb
120
+ - lib/nexposecli/role.rb
121
+ - lib/nexposecli/scan.rb
106
122
  - lib/nexposecli/version.rb
107
123
  - nexposecli-0.1.11.gem
108
124
  - nexposecli.gemspec
@@ -110,7 +126,7 @@ files:
110
126
  - spec/spec_helper.rb
111
127
  homepage: https://github.com/frozenr7/nexposecli
112
128
  licenses:
113
- - BSD
129
+ - BSD-3-Clause
114
130
  metadata: {}
115
131
  post_install_message:
116
132
  rdoc_options: []