ronin-exploits 1.0.1 → 1.0.3

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
  SHA256:
3
- metadata.gz: 7c482725859543f95754cb4e3fd61e31326eec9a63c2f8d5f5f1e7a64e2bb29e
4
- data.tar.gz: e35da617d9f8301d4fb5a3fff6eb77a17615c0477cdbbaa2e26e4b152a05af6b
3
+ metadata.gz: 4e6dbf77b0e6b4b6de88b6a1afe5484b74918b7a5e3a74007da060381d419f90
4
+ data.tar.gz: 14664066b0d2262912344e5a3c41e4f247eb60bc1d8464bd0b7ca93348cb9549
5
5
  SHA512:
6
- metadata.gz: 7a1b389e0283581e586a65729bb5994f1f8c0ccddee570117bf1746638a09d07b30eed9c13f777d064b436bec418df0697c9e86f39fbf7db1c86bb5e25b5755c
7
- data.tar.gz: 857e56f993e8c55580ef358c8021ae526431607f3ed6188f1813e81dee6a91308dfe95cd2d32b1bf5284e5945f64abddd93893bc3e6211b5d0d350d6d99e31a7
6
+ metadata.gz: 7ed8dedb7ddb26720c0a9df41894e3c97d952c7872bb93adbb76a02d2ffb132368e8a94e3e579daa7517a9b95c7aa97713df88eb0170bc35cd3dfb80c6088828
7
+ data.tar.gz: c6674278d65300b9f4862ef98a1282d0f8a8b7def02618a1ee11df02069c255ba1d493d8ad6b85a64704d0df4f5be0ceb81ae140e3e6e426cb31dc82ac5570ad
data/ChangeLog.md CHANGED
@@ -1,3 +1,27 @@
1
+ ### 1.0.3 / 2023-09-19
2
+
3
+ #### CLI
4
+
5
+ * All newly generated exploit files using `ronin-exploit new` should have a
6
+ `summary` and a `description`.
7
+ * Fixed a bug where the `ronin-exploits new` options `--author`,
8
+ `--author-email`, or `--summary` were not properly escaping given values.
9
+
10
+ ### 1.0.2 / 2023-06-12
11
+
12
+ * Corrected the `class_dir` for {Ronin::Exploits}; even though
13
+ `ronin-exploits` will never contain any built-in exploits.
14
+ * Avoid using `case`/`in` syntax for TruffleRuby.
15
+ * Documentation fixes and improvements.
16
+
17
+ #### CLI
18
+
19
+ * Fixed a typo in `ronin-exploits new` man-page.
20
+ * Fixed a bug in the `ronin-exploits show` command where a target's `version`
21
+ was not being printed.
22
+ * Fixed a bug where `ronin-exploits new --payload-type command` wasn't being
23
+ accepted as a valid payload type.
24
+
1
25
  ### 1.0.1 / 2023-03-01
2
26
 
3
27
  * Require [ronin-support] ~> 1.0, >= 1.0.1.
data/Gemfile CHANGED
@@ -15,21 +15,21 @@ end
15
15
  # branch: 'main'
16
16
 
17
17
  # Ronin dependencies
18
- # gem 'ronin-support', '~> 1.0', github: "ronin-rb/ronin-support",
18
+ # gem 'ronin-support', '~> 1.0', github: 'ronin-rb/ronin-support',
19
19
  # branch: 'main'
20
- # gem 'ronin-payloads', '~> 0.1', github: "ronin-rb/ronin-payloads",
20
+ # gem 'ronin-payloads', '~> 0.1', github: 'ronin-rb/ronin-payloads',
21
21
  # branch: 'main'
22
- # gem 'ronin-vulns', '~> 0.1', github: "ronin-rb/ronin-vulns",
22
+ # gem 'ronin-vulns', '~> 0.1', github: 'ronin-rb/ronin-vulns',
23
23
  # branch: 'main'
24
- # gem 'ronin-post_ex', '~> 0.1', github: "ronin-rb/ronin-post_ex",
24
+ # gem 'ronin-post_ex', '~> 0.1', github: 'ronin-rb/ronin-post_ex',
25
25
  # branch: 'main'
26
- # gem 'ronin-core', '~> 0.1', github: "ronin-rb/ronin-core",
26
+ # gem 'ronin-core', '~> 0.1', github: 'ronin-rb/ronin-core',
27
27
  # branch: 'main'
28
- # gem 'ronin-repos', '~> 0.1', github: "ronin-rb/ronin-repos",
28
+ # gem 'ronin-repos', '~> 0.1', github: 'ronin-rb/ronin-repos',
29
29
  # branch: 'main'
30
- # gem 'ronin-code-asm', '~> 1.0', github: "ronin-rb/ronin-code-asm",
30
+ # gem 'ronin-code-asm', '~> 1.0', github: 'ronin-rb/ronin-code-asm',
31
31
  # branch: 'main'
32
- # gem 'ronin-code-sql', '~> 2.0', github: "ronin-rb/ronin-code-sql",
32
+ # gem 'ronin-code-sql', '~> 2.0', github: 'ronin-rb/ronin-code-sql',
33
33
  # branch: 'main'
34
34
 
35
35
  group :development do
data/README.md CHANGED
@@ -8,7 +8,6 @@
8
8
  * [Issues](https://github.com/ronin-rb/ronin-exploits/issues)
9
9
  * [Documentation](https://rubydoc.info/github/ronin-rb/ronin-exploits/frames)
10
10
  * [Discord](https://discord.gg/6WAb3PsVX9) |
11
- [Twitter](https://twitter.com/ronin_rb) |
12
11
  [Mastodon](https://infosec.exchange/@ronin_rb)
13
12
 
14
13
  ## Description
@@ -401,6 +400,10 @@ module Ronin
401
400
  end
402
401
  ```
403
402
 
403
+ For real-world example ronin exploits, see the [example-exploits] repository.
404
+
405
+ [example-exploits]: https://github.com/ronin-rb/example-exploits
406
+
404
407
  ## Requirements
405
408
 
406
409
  * [Ruby] >= 3.0.0
@@ -5,7 +5,7 @@ require 'ronin/exploits/<%= @exploit_type[:file] -%>'
5
5
  require 'ronin/exploits/mixins/<%= @networking_mixin[:file] -%>'
6
6
  <%- end -%>
7
7
  <%- if @target -%>
8
- require 'ronin/exploits/mixins/has_target'
8
+ require 'ronin/exploits/mixins/has_targets'
9
9
  <%- end -%>
10
10
  <%- if @has_payload -%>
11
11
  require 'ronin/exploits/mixins/has_payload'
@@ -41,7 +41,7 @@ module Ronin
41
41
  # disclosure_date 'YYYY-MM-DD'
42
42
  <%- unless @advisories.empty? -%>
43
43
  <%- @advisories.each do |advisory| -%>
44
- advisory '<%= advisory -%>'
44
+ advisory <%= advisory.inspect -%>
45
45
  <%- end -%>
46
46
  <%- else -%>
47
47
  # advisory 'CVE-YYYY-NNNN'
@@ -49,23 +49,23 @@ module Ronin
49
49
  <%- end -%>
50
50
 
51
51
  <%- if @author_email -%>
52
- author '<%= @author_name %>', email: '<%= @author_email -%>'
52
+ author <%= @author_name.inspect %>, email: <%= @author_email.inspect %>
53
53
  <%- else -%>
54
- author '<%= @author_name %>'
54
+ author <%= @author_name.inspect %>
55
55
  <%- end -%>
56
56
  <%- if @summary -%>
57
- summary "<%= @summary %>"
57
+ summary <%= @summary.inspect %>
58
58
  <%- else -%>
59
- # summary "FIX ME"
59
+ summary "FIX ME"
60
60
  <%- end -%>
61
61
  <%- if @description -%>
62
62
  description <<~DESC
63
63
  <%= @description %>
64
64
  DESC
65
65
  <%- else -%>
66
- # description <<~DESC
67
- # FIX ME
68
- # DESC
66
+ description <<~DESC
67
+ FIX ME
68
+ DESC
69
69
  <%- end -%>
70
70
  <%- unless @references.empty? -%>
71
71
  references [
@@ -55,7 +55,7 @@ module Ronin
55
55
  # -I CVE-YYYY-NNNN|GHSA-XXXXX|..., Add the advisory ID to the exploit
56
56
  # --advisory-id
57
57
  # -R, --reference URL Adds a reference URL
58
- # -P payload|asm|shellcode|c|shell|powershell|html|javascript|typpescript|java|sql|php|nodejs,
58
+ # -P payload|asm|shellcode|c|command|shell|powershell|html|javascript|typpescript|java|sql|php|nodejs,
59
59
  # --has-payload The payload type the exploit uses
60
60
  # -N remote_tcp|remote_udp|http, The networking mixin to use
61
61
  # --networking
@@ -234,12 +234,12 @@ module Ronin
234
234
 
235
235
  # The payload params.
236
236
  #
237
- # @return [Hash{Hash{String => String}]
237
+ # @return [Hash{String => String}]
238
238
  attr_reader :payload_params
239
239
 
240
240
  # The keyword arguments to select a target with.
241
241
  #
242
- # @return [Hash{Hash{Symbol => Object}]
242
+ # @return [Hash{Symbol => Object}]
243
243
  attr_reader :target_kwargs
244
244
 
245
245
  #
@@ -291,8 +291,10 @@ module Ronin
291
291
  def load_encoders
292
292
  @encoder_classes = @encoders_to_load.map do |(type,value)|
293
293
  case type
294
- in :name then load_encoder(value)
295
- in :file then load_encoder_from(value)
294
+ when :name then load_encoder(value)
295
+ when :file then load_encoder_from(value)
296
+ else
297
+ raise(NotImplementedError,"invalid encoder type: #{type.inspect}")
296
298
  end
297
299
  end
298
300
  end
@@ -266,8 +266,8 @@ module Ronin
266
266
  end
267
267
 
268
268
  if target.software
269
- fields['Software'] = if target.software_version
270
- "#{target.software} #{target.software_version}"
269
+ fields['Software'] = if target.version
270
+ "#{target.software} #{target.version}"
271
271
  else
272
272
  target.software
273
273
  end
@@ -42,11 +42,11 @@ module Ronin
42
42
  def load_exploit(name)
43
43
  Exploits.load_class(name)
44
44
  rescue Exploits::ClassNotFound => error
45
- print_error error.message
45
+ print_error(error.message)
46
46
  exit(1)
47
47
  rescue => error
48
48
  print_exception(error)
49
- print_error "an unhandled exception occurred while loading exploit #{name}"
49
+ print_error("an unhandled exception occurred while loading exploit #{name}")
50
50
  exit(-1)
51
51
  end
52
52
 
@@ -62,11 +62,11 @@ module Ronin
62
62
  def load_exploit_from(file)
63
63
  Exploits.load_class_from_file(file)
64
64
  rescue Exploits::ClassNotFound => error
65
- print_error error.message
65
+ print_error(error.message)
66
66
  exit(1)
67
67
  rescue => error
68
68
  print_exception(error)
69
- print_error "an unhandled exception occurred while loading exploit from file #{file}"
69
+ print_error("an unhandled exception occurred while loading exploit from file #{file}")
70
70
  exit(-1)
71
71
  end
72
72
 
@@ -79,14 +79,17 @@ module Ronin
79
79
  # @param [Hash{Symbol => Object}] kwargs
80
80
  # Additional keyword arguments for {Exploit#initialize}.
81
81
  #
82
+ # @return [Exploit]
83
+ # The initialized exploit object.
84
+ #
82
85
  def initialize_exploit(exploit_class,**kwargs)
83
86
  exploit_class.new(**kwargs)
84
87
  rescue Core::Params::ParamError => error
85
- print_error error.message
88
+ print_error(error.message)
86
89
  exit(1)
87
90
  rescue => error
88
91
  print_exception(error)
89
- print_error "an unhandled exception occurred while initializing exploit #{exploit_class.id}"
92
+ print_error("an unhandled exception occurred while initializing exploit #{exploit_class.id}")
90
93
  exit(-1)
91
94
  end
92
95
 
@@ -105,11 +108,11 @@ module Ronin
105
108
  def validate_exploit(exploit)
106
109
  exploit.perform_validate
107
110
  rescue Core::Params::ParamError, ValidationError => error
108
- print_error "failed to validate the exploit #{exploit.class_id}: #{error.message}"
111
+ print_error("failed to validate the exploit #{exploit.class_id}: #{error.message}")
109
112
  exit(1)
110
113
  rescue => error
111
114
  print_exception(error)
112
- print_error "an unhandled exception occurred while validating the exploit #{exploit.class_id}"
115
+ print_error("an unhandled exception occurred while validating the exploit #{exploit.class_id}")
113
116
  exit(-1)
114
117
  end
115
118
  end
@@ -117,7 +117,7 @@ module Ronin
117
117
  #
118
118
  # ### register
119
119
  #
120
- # Registers the exploit with `Exploits`.
120
+ # Registers the exploit with {Exploits}.
121
121
  #
122
122
  # register 'my_exploit'
123
123
  #
@@ -276,6 +276,9 @@ module Ronin
276
276
  # @param [String] exploit_id
277
277
  # The exploit's `id`.
278
278
  #
279
+ # @example
280
+ # register 'my_exploit'
281
+ #
279
282
  # @api public
280
283
  #
281
284
  def self.register(exploit_id)
@@ -47,10 +47,10 @@ module Ronin
47
47
  #
48
48
  # Gets or sets the exploit's targeted Operating System (OS).
49
49
  #
50
- # @param [:unix, :bsd, :freebsd, :openbsd, :netbsd, :linux, :macos, :windows, nil] new_os
50
+ # @param [:unix, :bsd, :freebsd, :openbsd, :netbsd, :linux, :macos, :windows, :android, nil] new_os
51
51
  # The optional new Operating System (OS) to set.
52
52
  #
53
- # @return [:unix, :bsd, :freebsd, :openbsd, :netbsd, :linux, :macos, :windows, nil]
53
+ # @return [:unix, :bsd, :freebsd, :openbsd, :netbsd, :linux, :macos, :windows, :android, nil]
54
54
  # The exploit's Operating System (OS).
55
55
  #
56
56
  # @example
@@ -97,7 +97,7 @@ module Ronin
97
97
  #
98
98
  # The Operating System (OS) that the exploit targets.
99
99
  #
100
- # @return [:unix, :bsd, :freebsd, :openbsd, :netbsd, :linux, :macos, :windows, nil]
100
+ # @return [:unix, :bsd, :freebsd, :openbsd, :netbsd, :linux, :macos, :windows, :android, nil]
101
101
  #
102
102
  # @see ClassMethods#os
103
103
  #
@@ -79,6 +79,9 @@ module Ronin
79
79
  # Ronin::Support::Binary::CTypes::Arch::X86_64,
80
80
  # Ronin::Support::Binary::CTypes::OS]
81
81
  #
82
+ # @raise [ArgumentError]
83
+ # The exploit defined an unknown `arch` or `os` value.
84
+ #
82
85
  def platform
83
86
  @platform ||= Support::Binary::CTypes.platform(
84
87
  arch: arch,
@@ -31,6 +31,8 @@ module Ronin
31
31
  #
32
32
  # Adds TCP helper methods for communicating with a remote host.
33
33
  #
34
+ # @see https://ronin-rb.dev/docs/ronin-support/Ronin/Support/Network/TCP/Mixin.html
35
+ #
34
36
  # @api public
35
37
  #
36
38
  # @since 1.0.0
@@ -31,6 +31,8 @@ module Ronin
31
31
  #
32
32
  # Adds UDP helper methods for communicating with a remote host.
33
33
  #
34
+ # @see https://ronin-rb.dev/docs/ronin-support/Ronin/Support/Network/UDP/Mixin.html
35
+ #
34
36
  # @api public
35
37
  #
36
38
  # @since 1.0.0
@@ -36,6 +36,8 @@ module Ronin
36
36
  # # ...
37
37
  # end
38
38
  #
39
+ # @see https://ronin-rb.dev/docs/ronin-support/Ronin/Support/Text/Mixin.html
40
+ #
39
41
  # @api public
40
42
  #
41
43
  # @since 1.0.0
@@ -30,7 +30,7 @@ module Ronin
30
30
  include Core::ClassRegistry
31
31
  include Repos::ClassDir
32
32
 
33
- class_dir "#{__dir__}/exploits/builtin"
33
+ class_dir "#{__dir__}/builtin"
34
34
  repo_class_dir 'exploits'
35
35
  end
36
36
  end
@@ -22,6 +22,6 @@
22
22
  module Ronin
23
23
  module Exploits
24
24
  # ronin-exploits version
25
- VERSION = '1.0.1'
25
+ VERSION = '1.0.3'
26
26
  end
27
27
  end
@@ -50,7 +50,7 @@ Add the advisory ID to the exploit\.
50
50
  Adds a reference to the exploit\.
51
51
  .LP
52
52
  .TP
53
- \fB-P\fR, \fB--has-payload\fR \fBpayload\fR\[or]\fBasm\fR\[or]\fBshellcode\fR\[or]\fBc\fR\[or]\fBshell\fR\[or]\fBpowershell\fR\[or]\fBhtml\fR\[or]\fBjavascript\fR\[or]\fBtyppescript\fR\[or]\fBjava\fR\[or]\fBsql\fR\[or]\fBphp\fR\[or]\fBnodejs\fR
53
+ \fB-P\fR, \fB--has-payload\fR \fBpayload\fR\[or]\fBasm\fR\[or]\fBshellcode\fR\[or]\fBc\fR\[or]\fBcommand\fR\[or]\fBshell\fR\[or]\fBpowershell\fR\[or]\fBhtml\fR\[or]\fBjavascript\fR\[or]\fBtypescript\fR\[or]\fBjava\fR\[or]\fBsql\fR\[or]\fBphp\fR\[or]\fBnodejs\fR
54
54
  The payload type the exploit uses\.
55
55
  .LP
56
56
  .TP
@@ -37,7 +37,7 @@ Creates a new exploit file.
37
37
  `-R`, `--reference` *URL*
38
38
  Adds a reference to the exploit.
39
39
 
40
- `-P`, `--has-payload` `payload`\|`asm`\|`shellcode`\|`c`\|`shell`\|`powershell`\|`html`\|`javascript`\|`typpescript`\|`java`\|`sql`\|`php`\|`nodejs`
40
+ `-P`, `--has-payload` `payload`\|`asm`\|`shellcode`\|`c`\|`command`\|`shell`\|`powershell`\|`html`\|`javascript`\|`typescript`\|`java`\|`sql`\|`php`\|`nodejs`
41
41
  The payload type the exploit uses.
42
42
 
43
43
  `-N`, `--networking` `remote_tcp`\|`remote_udp`\|`http`
data/man/ronin-exploits.1 CHANGED
@@ -27,19 +27,19 @@ Print help information
27
27
  .SH COMMANDS
28
28
  .LP
29
29
  .TP
30
- \fIirb\fP
30
+ \fBirb\fR
31
31
  Starts ronin\-exploits interactive Ruby shell\.
32
32
  .LP
33
33
  .TP
34
- \fIlist\fP
34
+ \fBlist\fR
35
35
  Lists available exploits\.
36
36
  .LP
37
37
  .TP
38
- \fIrun\fP
38
+ \fBrun\fR
39
39
  Runs an exploit\.
40
40
  .LP
41
41
  .TP
42
- \fIhelp\fP
42
+ \fBhelp\fR
43
43
  Lists available commands or shows help about a specific command\.
44
44
  .LP
45
45
  .SH AUTHOR
@@ -20,16 +20,16 @@ Runs a `ronin-exploits` *COMMAND*.
20
20
 
21
21
  ## COMMANDS
22
22
 
23
- *irb*
23
+ `irb`
24
24
  Starts ronin-exploits interactive Ruby shell.
25
25
 
26
- *list*
26
+ `list`
27
27
  Lists available exploits.
28
28
 
29
- *run*
29
+ `run`
30
30
  Runs an exploit.
31
31
 
32
- *help*
32
+ `help`
33
33
  Lists available commands or shows help about a specific command.
34
34
 
35
35
  ## AUTHOR
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ronin-exploits
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Postmodern
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-02 00:00:00.000000000 Z
11
+ date: 2023-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: uri-query_params