ronin-exploits 1.0.0.beta3 → 1.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.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +14 -0
  3. data/.rubocop.yml +61 -0
  4. data/ChangeLog.md +13 -2
  5. data/Gemfile +5 -1
  6. data/README.md +26 -14
  7. data/Rakefile +3 -1
  8. data/bin/ronin-exploits +6 -7
  9. data/gemspec.yml +7 -7
  10. data/lib/ronin/exploits/advisory.rb +1 -0
  11. data/lib/ronin/exploits/cli/command.rb +1 -0
  12. data/lib/ronin/exploits/cli/commands/irb.rb +1 -0
  13. data/lib/ronin/exploits/cli/commands/list.rb +1 -0
  14. data/lib/ronin/exploits/cli/commands/new.rb +13 -2
  15. data/lib/ronin/exploits/cli/commands/run.rb +40 -21
  16. data/lib/ronin/exploits/cli/commands/show.rb +11 -8
  17. data/lib/ronin/exploits/cli/exploit_command.rb +4 -0
  18. data/lib/ronin/exploits/cli/exploit_methods.rb +4 -0
  19. data/lib/ronin/exploits/cli/ruby_shell.rb +1 -0
  20. data/lib/ronin/exploits/cli.rb +1 -0
  21. data/lib/ronin/exploits/client_side_web_vuln.rb +1 -0
  22. data/lib/ronin/exploits/exceptions.rb +1 -0
  23. data/lib/ronin/exploits/exploit.rb +27 -21
  24. data/lib/ronin/exploits/heap_overflow.rb +1 -0
  25. data/lib/ronin/exploits/lfi.rb +7 -7
  26. data/lib/ronin/exploits/loot/file.rb +2 -1
  27. data/lib/ronin/exploits/loot.rb +1 -0
  28. data/lib/ronin/exploits/memory_corruption.rb +1 -0
  29. data/lib/ronin/exploits/metadata/arch.rb +5 -1
  30. data/lib/ronin/exploits/metadata/cookie_param.rb +4 -0
  31. data/lib/ronin/exploits/metadata/default_filename.rb +5 -1
  32. data/lib/ronin/exploits/metadata/default_port.rb +5 -1
  33. data/lib/ronin/exploits/metadata/header_name.rb +4 -0
  34. data/lib/ronin/exploits/metadata/os.rb +4 -0
  35. data/lib/ronin/exploits/metadata/shouts.rb +17 -9
  36. data/lib/ronin/exploits/metadata/url_path.rb +4 -0
  37. data/lib/ronin/exploits/metadata/url_query_param.rb +4 -0
  38. data/lib/ronin/exploits/mixins/binary.rb +1 -0
  39. data/lib/ronin/exploits/mixins/file_builder.rb +5 -4
  40. data/lib/ronin/exploits/mixins/format_string.rb +4 -3
  41. data/lib/ronin/exploits/mixins/has_payload.rb +4 -3
  42. data/lib/ronin/exploits/mixins/has_targets.rb +1 -0
  43. data/lib/ronin/exploits/mixins/html.rb +4 -0
  44. data/lib/ronin/exploits/mixins/http.rb +24 -19
  45. data/lib/ronin/exploits/mixins/loot.rb +3 -2
  46. data/lib/ronin/exploits/mixins/nops.rb +5 -5
  47. data/lib/ronin/exploits/mixins/remote_tcp.rb +2 -1
  48. data/lib/ronin/exploits/mixins/remote_udp.rb +1 -0
  49. data/lib/ronin/exploits/mixins/seh.rb +1 -0
  50. data/lib/ronin/exploits/mixins/stack_overflow.rb +2 -1
  51. data/lib/ronin/exploits/mixins/text.rb +1 -0
  52. data/lib/ronin/exploits/mixins.rb +1 -0
  53. data/lib/ronin/exploits/open_redirect.rb +5 -4
  54. data/lib/ronin/exploits/params/base_url.rb +2 -1
  55. data/lib/ronin/exploits/params/bind_host.rb +1 -0
  56. data/lib/ronin/exploits/params/bind_port.rb +1 -0
  57. data/lib/ronin/exploits/params/filename.rb +3 -2
  58. data/lib/ronin/exploits/params/host.rb +1 -0
  59. data/lib/ronin/exploits/params/port.rb +3 -2
  60. data/lib/ronin/exploits/registry.rb +4 -0
  61. data/lib/ronin/exploits/rfi.rb +9 -6
  62. data/lib/ronin/exploits/root.rb +1 -0
  63. data/lib/ronin/exploits/seh_overflow.rb +9 -8
  64. data/lib/ronin/exploits/sqli.rb +11 -10
  65. data/lib/ronin/exploits/ssti.rb +5 -4
  66. data/lib/ronin/exploits/stack_overflow.rb +9 -8
  67. data/lib/ronin/exploits/target.rb +1 -0
  68. data/lib/ronin/exploits/test_result.rb +2 -1
  69. data/lib/ronin/exploits/use_after_free.rb +1 -0
  70. data/lib/ronin/exploits/version.rb +2 -1
  71. data/lib/ronin/exploits/web.rb +1 -0
  72. data/lib/ronin/exploits/web_vuln.rb +1 -0
  73. data/lib/ronin/exploits/xss.rb +5 -4
  74. data/lib/ronin/exploits.rb +1 -0
  75. data/man/ronin-exploits-irb.1 +1 -1
  76. data/man/ronin-exploits-irb.1.md +1 -1
  77. data/man/ronin-exploits-list.1 +1 -1
  78. data/man/ronin-exploits-list.1.md +1 -1
  79. data/man/ronin-exploits-new.1 +1 -1
  80. data/man/ronin-exploits-new.1.md +2 -2
  81. data/man/ronin-exploits-run.1 +1 -1
  82. data/man/ronin-exploits-run.1.md +1 -1
  83. data/man/ronin-exploits-show.1 +1 -1
  84. data/man/ronin-exploits-show.1.md +1 -1
  85. data/man/ronin-exploits.1 +1 -1
  86. data/man/ronin-exploits.1.md +1 -1
  87. data/ronin-exploits.gemspec +4 -3
  88. metadata +35 -16
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -52,7 +53,7 @@ module Ronin
52
53
  # The {Exploit} class defines six key parts:
53
54
  #
54
55
  # 1. Metadata - defines information about the exploit.
55
- # 2. Params - user configurable parameters.
56
+ # 2. [Params] - user configurable parameters.
56
57
  # 3. {Exploit#test test} - optional method that tests whether the target is
57
58
  # vulnerable or not.
58
59
  # 4. {Exploit#build build} - method which builds the exploit.
@@ -60,28 +61,30 @@ module Ronin
60
61
  # 6. {Exploit#cleanup cleanup} - optional Method which performs additional
61
62
  # cleanup steps.
62
63
  #
64
+ # [Params]: https://ronin-rb.dev/docs/ronin-core/Ronin/Core/Params/Mixin.html
65
+ #
63
66
  # ## Example
64
- #
67
+ #
65
68
  # require 'ronin/exploits/exploit'
66
69
  # require 'ronin/exploits/mixins/remote_tcp'
67
- #
70
+ #
68
71
  # module Ronin
69
72
  # module Exploits
70
73
  # class MyExploit < Exploit
71
74
  #
72
75
  # include Mixins::RemoteTCP
73
- #
76
+ #
74
77
  # register 'my_exploit'
75
- #
78
+ #
76
79
  # summary 'My first exploit'
77
80
  # description <<~EOS
78
81
  # This is my first exploit.
79
82
  # Bla bla bla bla.
80
83
  # EOS
81
- #
84
+ #
82
85
  # author '...'
83
86
  # author '...', email: '...', twitter: '...'
84
- #
87
+ #
85
88
  # disclosure_date 'YYY-MM-DD'
86
89
  # release_date 'YYYY-MM-DD'
87
90
  #
@@ -119,7 +122,7 @@ module Ronin
119
122
  # register 'my_exploit'
120
123
  #
121
124
  # ### quality
122
- #
125
+ #
123
126
  # Defines the quality level of the exploit. Accepted values are:
124
127
  #
125
128
  # * `:testing`
@@ -136,7 +139,7 @@ module Ronin
136
139
  #
137
140
  # ### description
138
141
  #
139
- # Defines a longer multi-paragraph escription of the exploit.
142
+ # Defines a longer multi-paragraph description of the exploit.
140
143
  #
141
144
  # description <<~EOS
142
145
  # This is my first exploit.
@@ -155,7 +158,7 @@ module Ronin
155
158
  # author 'doctor_doom', email: '...', twitter: '...'
156
159
  #
157
160
  # ### software
158
- #
161
+ #
159
162
  # Defines the software which the exploit targets.
160
163
  #
161
164
  # software 'TestApp'
@@ -179,33 +182,33 @@ module Ronin
179
182
  # default to `String`. Params must have a one-line description.
180
183
  #
181
184
  # param :str, desc: 'A basic string param'
182
- #
185
+ #
183
186
  # param :feature_flag, Boolean, desc: 'A boolean param'
184
- #
187
+ #
185
188
  # param :enum, Enum[:one, :two, :three],
186
189
  # desc: 'An enum param'
187
190
  #
188
191
  # param :num1, Integer, desc: 'An integer param'
189
- #
192
+ #
190
193
  # param :num2, Integer, default: 42,
191
194
  # desc: 'A param with a default value'
192
- #
195
+ #
193
196
  # param :num3, Integer, default: ->{ rand(42) },
194
197
  # desc: 'A param with a dynamic default value'
195
- #
198
+ #
196
199
  # param :float, Float, 'Floating point param'
197
200
  #
198
201
  # param :url, URI, desc: 'URL param'
199
202
  #
200
203
  # param :pattern, Regexp, desc: 'Regular Expression param'
201
- #
204
+ #
202
205
  # Params may then be accessed in instance methods using `params` Hash.
203
206
  #
204
207
  # param :padding, Integer, desc: 'Amount of additional padding'
205
208
  #
206
209
  # def build
207
210
  # # ...
208
- #
211
+ #
209
212
  # if params[:padding]
210
213
  # @buffer << 'A' * params[:padding]
211
214
  # end
@@ -229,7 +232,7 @@ module Ronin
229
232
  # end
230
233
  #
231
234
  # ### build
232
- #
235
+ #
233
236
  # The method which defines the logic that builds the exploit before
234
237
  # launching it.
235
238
  #
@@ -313,7 +316,7 @@ module Ronin
313
316
  end
314
317
 
315
318
  #
316
- # Determines whether the exploit has been publically released yet.
319
+ # Determines whether the exploit has been publicly released yet.
317
320
  #
318
321
  # @return [Boolean]
319
322
  #
@@ -438,6 +441,9 @@ module Ronin
438
441
  # @param [Hash{Symbol => Object}] kwargs
439
442
  # Additional keyword arguments.
440
443
  #
444
+ # @option kwargs [Hash{Symbol => Object}] :params
445
+ # The param values for the exploit.
446
+ #
441
447
  def initialize(**kwargs)
442
448
  super(**kwargs)
443
449
  end
@@ -526,7 +532,7 @@ module Ronin
526
532
  end
527
533
 
528
534
  #
529
- # Builds the exploit and then launchs the exploit.
535
+ # Builds the exploit and then launches the exploit.
530
536
  #
531
537
  # @param [Boolean] dry_run
532
538
  # If `true` performs a dry-run by only calling {#build} and **not**
@@ -633,7 +639,7 @@ module Ronin
633
639
  end
634
640
 
635
641
  #
636
- # Place holder method for testing whether the targeet is vulnerable.
642
+ # Place holder method for testing whether the target is vulnerable.
637
643
  #
638
644
  # @return [Test::Vulnerable, Test::NotVulnerable, Test::Unknown]
639
645
  #
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -32,17 +33,17 @@ module Ronin
32
33
  # ## Example
33
34
  #
34
35
  # require 'ronin/exploits/lfi'
35
- #
36
+ #
36
37
  # module Ronin
37
38
  # module Exploits
38
39
  # class MyExploit < LFI
39
- #
40
+ #
40
41
  # register 'my_exploit'
41
- #
42
+ #
42
43
  # base_path '/path/to/page.php'
43
44
  # query_param 'template'
44
45
  # depth 7
45
- #
46
+ #
46
47
  # end
47
48
  # end
48
49
  # end
@@ -66,14 +67,13 @@ module Ronin
66
67
  :base64,
67
68
  :rot13,
68
69
  :zlib
69
- ],
70
- desc: 'Optional filter-bypass strategy to use'
70
+ ], desc: 'Optional filter-bypass strategy to use'
71
71
 
72
72
  #
73
73
  # Gets or sets the directory traversal depth for the LFI vulnerability.
74
74
  #
75
75
  # @param [Integer, nil] new_depth
76
- # The optional new directory trasversal depth to set.
76
+ # The optional new directory traversal depth to set.
77
77
  #
78
78
  # @return [Integer]
79
79
  # The LFI vulnerability's directory traverse depth.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -81,7 +82,7 @@ module Ronin
81
82
  case @format
82
83
  when :json then JSON.pretty_generate(@contents)
83
84
  when :yaml then YAML.dump(@contents)
84
- when :csv
85
+ when :csv
85
86
  CSV.generate do |csv|
86
87
  @contents.each do |row|
87
88
  csv << row
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -38,9 +39,12 @@ module Ronin
38
39
  exploit.extend ClassMethods
39
40
  end
40
41
 
42
+ #
43
+ # Class-methods.
44
+ #
41
45
  module ClassMethods
42
46
  #
43
- # Gets or sets the exploits's targetted architecture.
47
+ # Gets or sets the exploit's targeted architecture.
44
48
  #
45
49
  # @param [:x86, :x86_64, :ia64, :amd64, :ppc, :ppc64, :mips, :mips_le, :mips_be, :mips64, :mips64_le, :mips64_be, :arm, :arm_le, :arm_be, :arm64, :arm64_le, :arm64_be, nil] new_arch
46
50
  # The optional new architecture to set.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -38,6 +39,9 @@ module Ronin
38
39
  exploit.extend ClassMethods
39
40
  end
40
41
 
42
+ #
43
+ # Class-methods.
44
+ #
41
45
  module ClassMethods
42
46
  #
43
47
  # Get or sets the target Cookie param of the exploit.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -38,9 +39,12 @@ module Ronin
38
39
  exploit.extend ClassMethods
39
40
  end
40
41
 
42
+ #
43
+ # Class-methods.
44
+ #
41
45
  module ClassMethods
42
46
  #
43
- # Gets or sets the exploits's default filename.
47
+ # Gets or sets the exploit's default filename.
44
48
  #
45
49
  # @param [Integer, nil] new_default_filename
46
50
  # The optional new default filename to set.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -38,9 +39,12 @@ module Ronin
38
39
  exploit.extend ClassMethods
39
40
  end
40
41
 
42
+ #
43
+ # Class-methods.
44
+ #
41
45
  module ClassMethods
42
46
  #
43
- # Gets or sets the exploits's default port.
47
+ # Gets or sets the exploit's default port.
44
48
  #
45
49
  # @param [Integer, nil] new_default_port
46
50
  # The optional new default port number to set.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -38,6 +39,9 @@ module Ronin
38
39
  exploit.extend ClassMethods
39
40
  end
40
41
 
42
+ #
43
+ # Class-methods.
44
+ #
41
45
  module ClassMethods
42
46
  #
43
47
  # Get or sets the target HTTP Header name of the exploit.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -39,6 +40,9 @@ module Ronin
39
40
  exploit.extend ClassMethods
40
41
  end
41
42
 
43
+ #
44
+ # Class-methods.
45
+ #
42
46
  module ClassMethods
43
47
  #
44
48
  # Gets or sets the exploit's targeted Operating System (OS).
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -28,13 +29,13 @@ module Ronin
28
29
  # ### Example
29
30
  #
30
31
  # require 'ronin/exploits/metadata/shouts'
31
- #
32
+ #
32
33
  # class MyExploit < Exploit
33
- #
34
+ #
34
35
  # include Metadata::Shouts
35
- #
36
+ #
36
37
  # shouts ['Ultra Laser', 'Dr.Doom']
37
- #
38
+ #
38
39
  # end
39
40
  #
40
41
  module Shouts
@@ -50,6 +51,9 @@ module Ronin
50
51
  base.extend ClassMethods
51
52
  end
52
53
 
54
+ #
55
+ # Class-methods.
56
+ #
53
57
  module ClassMethods
54
58
  #
55
59
  # Gets or sets the exploit's shouts.
@@ -69,13 +73,17 @@ module Ronin
69
73
  #
70
74
  def shouts(new_shouts=nil)
71
75
  if new_shouts
72
- @shouts = shouts() + new_shouts
76
+ @shouts = if superclass.kind_of?(ClassMethods)
77
+ superclass.shouts + new_shouts
78
+ else
79
+ new_shouts
80
+ end
73
81
  else
74
82
  @shouts || if superclass.kind_of?(ClassMethods)
75
- superclass.shouts
76
- else
77
- []
78
- end
83
+ superclass.shouts
84
+ else
85
+ []
86
+ end
79
87
  end
80
88
  end
81
89
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -38,6 +39,9 @@ module Ronin
38
39
  exploit.extend ClassMethods
39
40
  end
40
41
 
42
+ #
43
+ # Class-methods.
44
+ #
41
45
  module ClassMethods
42
46
  #
43
47
  # Get or sets the target URL path of the exploit.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -38,6 +39,9 @@ module Ronin
38
39
  exploit.extend ClassMethods
39
40
  end
40
41
 
42
+ #
43
+ # Class-methods.
44
+ #
41
45
  module ClassMethods
42
46
  #
43
47
  # Get or sets the target URL query param of the exploit.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -24,8 +25,8 @@ module Ronin
24
25
  module Exploits
25
26
  module Mixins
26
27
  #
27
- # Adds methods for building exploit files. Also adds a `filenam`
28
- # param and a
28
+ # Adds methods for building exploit files. Also adds a `filename` param
29
+ # and a
29
30
  # {Metadata::DefaultFilename::ClassMethods#default_filename default_filename}
30
31
  # class method.
31
32
  #
@@ -37,13 +38,13 @@ module Ronin
37
38
  #
38
39
  # def build
39
40
  # # ...
40
- #
41
+ #
41
42
  # build_file do |file|
42
43
  # # ...
43
44
  # file.write(buffer)
44
45
  # # ...
45
46
  # end
46
- #
47
+ #
47
48
  # # ...
48
49
  # end
49
50
  #
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -56,7 +57,7 @@ module Ronin
56
57
 
57
58
  buffer = String.new(encoding: Encoding::ASCII_8BIT)
58
59
  buffer << pack(:machine_word,overwrite)
59
- buffer << pack(:machine_word,overwrite + (machine_word.size / 2))
60
+ buffer << pack(:machine_word,overwrite + (machine_word.size / 2))
60
61
 
61
62
  low_mask = 0xff
62
63
 
@@ -72,10 +73,10 @@ module Ronin
72
73
 
73
74
  if low < high
74
75
  low -= (machine_word.size * 2)
75
- buffer << format("%%.%ud%%%u$hn%%.%ud%%%u$hn",low,pop_length,high-low,pop_length+1)
76
+ buffer << format("%%.%ud%%%u$hn%%.%ud%%%u$hn",low,pop_length,high - low,pop_length + 1)
76
77
  else
77
78
  high -= (machine_word.size * 2)
78
- buffer << format("%%.%ud%%%u$hn%%.%ud%%%u$hn",high,pop_length+1,low-high,pop_length)
79
+ buffer << format("%%.%ud%%%u$hn%%.%ud%%%u$hn",high,pop_length + 1,low - high,pop_length)
79
80
  end
80
81
 
81
82
  buffer << payload.to_s
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -32,11 +33,11 @@ module Ronin
32
33
  # module Ronin
33
34
  # module Exploits
34
35
  # class MyExploit < Exploit
35
- #
36
+ #
36
37
  # include Mixins::HasPayload
37
- #
38
+ #
38
39
  # payload_class Ronin::Payloads::JavaScriptPayload
39
- #
40
+ #
40
41
  # end
41
42
  # end
42
43
  # end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -24,6 +25,9 @@ require 'ronin/support/text/core_ext'
24
25
  module Ronin
25
26
  module Exploits
26
27
  module Mixins
28
+ #
29
+ # Mixin which adds methods for building HTML.
30
+ #
27
31
  module HTML
28
32
  #
29
33
  # Formats an HTML attribute name.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -32,6 +33,22 @@ module Ronin
32
33
  # @since 1.0.0
33
34
  #
34
35
  module HTTP
36
+ # Possible values for the `user_agent` param.
37
+ #
38
+ # @api private
39
+ HTTP_USER_AGENT_ALIASES = [
40
+ :random,
41
+ :chrome,
42
+ :firefox,
43
+ :safari,
44
+ :linux,
45
+ :macos,
46
+ :windows,
47
+ :iphone,
48
+ :ipad,
49
+ :android
50
+ ] + Support::Network::HTTP::UserAgents::ALIASES.keys
51
+
35
52
  #
36
53
  # Adds the required `base_url` params to the exploit class.
37
54
  #
@@ -49,19 +66,7 @@ module Ronin
49
66
 
50
67
  exploit.param :http_password, desc: 'The HTTP Basic-Auth password'
51
68
 
52
- user_agent_ids = [
53
- :random,
54
- :chrome,
55
- :firefox,
56
- :safari,
57
- :linux,
58
- :macos,
59
- :windows,
60
- :iphone,
61
- :ipad,
62
- :android
63
- ] + Support::Network::HTTP::UserAgents::ALIASES.keys
64
- exploit.param :user_agent, Core::Params::Types::Enum.new(user_agent_ids), desc: 'The HTTP User-Agent to select'
69
+ exploit.param :user_agent, Core::Params::Types::Enum.new(HTTP_USER_AGENT_ALIASES), desc: 'The HTTP User-Agent to select'
65
70
 
66
71
  exploit.param :raw_user_agent, desc: 'The raw HTTP User-Agent string to use'
67
72
 
@@ -145,22 +150,22 @@ module Ronin
145
150
  #
146
151
  # @option kwargs [String, nil] :query
147
152
  # The query-string to append to the request path.
148
- #
153
+ #
149
154
  # @option kwargs [Hash, nil] :query_params
150
155
  # The query-params to append to the request path.
151
- #
156
+ #
152
157
  # @option kwargs [String, nil] :body
153
158
  # The body of the request.
154
- #
159
+ #
155
160
  # @option kwargs [Hash, String, nil] :form_data
156
161
  # The form data that may be sent in the body of the request.
157
- #
162
+ #
158
163
  # @option kwargs [String, nil] :user (http_user)
159
164
  # The user to authenticate as.
160
- #
165
+ #
161
166
  # @option kwargs [String, nil] :password (http_password)
162
167
  # The password to authenticate with.
163
- #
168
+ #
164
169
  # @option kwargs [Hash{Symbol,String => String}, nil] :headers
165
170
  # Additional HTTP headers to use for the request.
166
171
  #
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -31,7 +32,7 @@ module Ronin
31
32
  # module Ronin
32
33
  # module Exploits
33
34
  # class MyExploit < Exploit
34
- #
35
+ #
35
36
  # include Mixins::Loot
36
37
  #
37
38
  # def launch
@@ -52,7 +53,7 @@ module Ronin
52
53
  # # add CSV data
53
54
  # loot.add('foo.csv', data, format: :csv)
54
55
  # end
55
- #
56
+ #
56
57
  # end
57
58
  # end
58
59
  # end
@@ -45,10 +45,10 @@ module Ronin
45
45
  #
46
46
  # @api private
47
47
  NOPS = {
48
- x86: "\x90".b, # nop
49
- x86_64: "\x90".b, # nop
50
- arm: "\x05P\xa0\xe1".b, # mov r5, r5
51
- arm64: "\xe5\x03\x05\xaa".b, # mov x5, x5
48
+ x86: "\x90".b, # nop
49
+ x86_64: "\x90".b, # nop
50
+ arm: "\x05P\xa0\xe1".b, # mov r5, r5
51
+ arm64: "\xe5\x03\x05\xaa".b # mov x5, x5
52
52
  # TODO: mips
53
53
  # TODO: mips64
54
54
  # TODO: ppc
@@ -81,7 +81,7 @@ module Ronin
81
81
  end
82
82
 
83
83
  #
84
- # An individual NOP instructure for the target architecture of the
84
+ # An individual NOP instruction for the target architecture of the
85
85
  # exploit.
86
86
  #
87
87
  # @return [String]
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # ronin-exploits - A Ruby library for ronin-rb that provides exploitation and
3
4
  # payload crafting functionality.
@@ -129,7 +130,7 @@ module Ronin
129
130
  # @example
130
131
  # @socket = tcp_connect
131
132
  # # => TCPSocket
132
- #
133
+ #
133
134
  # @example
134
135
  # tcp_connect do |socket|
135
136
  # socket.write("GET /\n\n")