ronin-exploits 1.0.0.beta2 → 1.0.0
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 +4 -4
- data/.github/workflows/ruby.yml +1 -0
- data/README.md +29 -13
- data/gemspec.yml +10 -8
- data/lib/ronin/exploits/cli/commands/new.rb +1 -1
- data/lib/ronin/exploits/cli/commands/run.rb +55 -5
- data/lib/ronin/exploits/exploit.rb +7 -5
- data/lib/ronin/exploits/lfi.rb +1 -1
- data/lib/ronin/exploits/metadata/arch.rb +1 -1
- data/lib/ronin/exploits/metadata/default_filename.rb +1 -1
- data/lib/ronin/exploits/metadata/default_port.rb +1 -1
- data/lib/ronin/exploits/mixins/file_builder.rb +2 -2
- data/lib/ronin/exploits/mixins/nops.rb +1 -1
- data/lib/ronin/exploits/params/base_url.rb +1 -1
- data/lib/ronin/exploits/version.rb +1 -1
- data/ronin-exploits.gemspec +2 -1
- metadata +24 -129
- data/spec/advisory_spec.rb +0 -71
- data/spec/cli/exploit_command_spec.rb +0 -68
- data/spec/cli/exploit_methods_spec.rb +0 -208
- data/spec/cli/ruby_shell_spec.rb +0 -14
- data/spec/client_side_web_vuln_spec.rb +0 -117
- data/spec/exploit_spec.rb +0 -538
- data/spec/exploits_spec.rb +0 -8
- data/spec/heap_overflow_spec.rb +0 -14
- data/spec/lfi_spec.rb +0 -162
- data/spec/loot/file_spec.rb +0 -131
- data/spec/loot_spec.rb +0 -138
- data/spec/memory_corruption_spec.rb +0 -22
- data/spec/metadata/arch_spec.rb +0 -82
- data/spec/metadata/cookie_param_spec.rb +0 -67
- data/spec/metadata/default_filename_spec.rb +0 -62
- data/spec/metadata/default_port_spec.rb +0 -62
- data/spec/metadata/header_name_spec.rb +0 -67
- data/spec/metadata/os_spec.rb +0 -164
- data/spec/metadata/shouts_spec.rb +0 -100
- data/spec/metadata/url_path_spec.rb +0 -67
- data/spec/metadata/url_query_param_spec.rb +0 -67
- data/spec/mixins/binary_spec.rb +0 -129
- data/spec/mixins/build_dir.rb +0 -66
- data/spec/mixins/file_builder_spec.rb +0 -67
- data/spec/mixins/format_string_spec.rb +0 -44
- data/spec/mixins/has_payload_spec.rb +0 -333
- data/spec/mixins/has_targets_spec.rb +0 -434
- data/spec/mixins/html_spec.rb +0 -772
- data/spec/mixins/http_spec.rb +0 -1227
- data/spec/mixins/loot_spec.rb +0 -20
- data/spec/mixins/nops_spec.rb +0 -165
- data/spec/mixins/remote_tcp_spec.rb +0 -217
- data/spec/mixins/remote_udp_spec.rb +0 -217
- data/spec/mixins/seh_spec.rb +0 -89
- data/spec/mixins/stack_overflow_spec.rb +0 -87
- data/spec/mixins/text_spec.rb +0 -43
- data/spec/open_redirect_spec.rb +0 -71
- data/spec/params/base_url_spec.rb +0 -71
- data/spec/params/bind_host_spec.rb +0 -34
- data/spec/params/bind_port_spec.rb +0 -35
- data/spec/params/filename_spec.rb +0 -77
- data/spec/params/host_spec.rb +0 -34
- data/spec/params/port_spec.rb +0 -77
- data/spec/rfi_spec.rb +0 -107
- data/spec/seh_overflow_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -8
- data/spec/sqli_spec.rb +0 -306
- data/spec/ssti_spec.rb +0 -121
- data/spec/stack_overflow_spec.rb +0 -18
- data/spec/target_spec.rb +0 -92
- data/spec/test_result_spec.rb +0 -32
- data/spec/use_after_free_spec.rb +0 -14
- data/spec/web_spec.rb +0 -12
- data/spec/web_vuln_spec.rb +0 -854
- data/spec/xss_spec.rb +0 -69
data/spec/sqli_spec.rb
DELETED
@@ -1,306 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/sqli'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::SQLI do
|
5
|
-
module TestSQLI
|
6
|
-
class TestExploit < Ronin::Exploits::SQLI
|
7
|
-
base_path '/showthread.asp'
|
8
|
-
query_param 'id'
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
let(:exploit_class) { TestSQLI::TestExploit }
|
13
|
-
let(:base_url) { 'http://testasp.vulnweb.com' }
|
14
|
-
|
15
|
-
subject do
|
16
|
-
exploit_class.new(
|
17
|
-
params: {
|
18
|
-
base_url: base_url
|
19
|
-
}
|
20
|
-
)
|
21
|
-
end
|
22
|
-
|
23
|
-
describe ".exploit_type" do
|
24
|
-
subject { described_class }
|
25
|
-
|
26
|
-
it { expect(subject.exploit_type).to eq(:sqli) }
|
27
|
-
end
|
28
|
-
|
29
|
-
describe ".escape_quote" do
|
30
|
-
subject { exploit_class }
|
31
|
-
|
32
|
-
context "and when escape_quote is not set in the class" do
|
33
|
-
module TestSQLI
|
34
|
-
class WithNoEscapeQuoteSet < Ronin::Exploits::SQLI
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
let(:exploit_class) { TestSQLI::WithNoEscapeQuoteSet }
|
39
|
-
|
40
|
-
it "must default to false" do
|
41
|
-
expect(subject.escape_quote).to be(false)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
context "and when escape_quote is set in the class" do
|
46
|
-
module TestSQLI
|
47
|
-
class WithEscapeQuoteSet < Ronin::Exploits::SQLI
|
48
|
-
escape_quote true
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
let(:exploit_class) { TestSQLI::WithEscapeQuoteSet }
|
53
|
-
|
54
|
-
it "must return the set escape_quote" do
|
55
|
-
expect(subject.escape_quote).to eq(true)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
context "but when the escape_quote was set in the superclass" do
|
60
|
-
module TestSQLI
|
61
|
-
class InheritsItsEscapeQuote < WithEscapeQuoteSet
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
let(:exploit_class) { TestSQLI::InheritsItsEscapeQuote }
|
66
|
-
|
67
|
-
it "must return the escape_quote set in the superclass" do
|
68
|
-
expect(subject.escape_quote).to eq(true)
|
69
|
-
end
|
70
|
-
|
71
|
-
context "but the escape_quote is overridden in the sub-class" do
|
72
|
-
module TestSQLI
|
73
|
-
class OverridesItsInheritedEscapeQuote < WithEscapeQuoteSet
|
74
|
-
escape_quote false
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
let(:exploit_class) do
|
79
|
-
TestSQLI::OverridesItsInheritedEscapeQuote
|
80
|
-
end
|
81
|
-
|
82
|
-
it "must return the escape_quote set in the sub-class" do
|
83
|
-
expect(subject.escape_quote).to eq(false)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
describe ".escape_parens" do
|
90
|
-
subject { exploit_class }
|
91
|
-
|
92
|
-
context "and when escape_parens is not set in the class" do
|
93
|
-
module TestSQLI
|
94
|
-
class WithNoEscapeParensSet < Ronin::Exploits::SQLI
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
let(:exploit_class) { TestSQLI::WithNoEscapeParensSet }
|
99
|
-
|
100
|
-
it "must default to false" do
|
101
|
-
expect(subject.escape_parens).to be(false)
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
context "and when escape_parens is set in the class" do
|
106
|
-
module TestSQLI
|
107
|
-
class WithEscapeParensSet < Ronin::Exploits::SQLI
|
108
|
-
escape_parens true
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
let(:exploit_class) { TestSQLI::WithEscapeParensSet }
|
113
|
-
|
114
|
-
it "must return the set escape_parens" do
|
115
|
-
expect(subject.escape_parens).to eq(true)
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
context "but when the escape_parens was set in the superclass" do
|
120
|
-
module TestSQLI
|
121
|
-
class InheritsItsEscapeParens < WithEscapeParensSet
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
let(:exploit_class) { TestSQLI::InheritsItsEscapeParens }
|
126
|
-
|
127
|
-
it "must return the escape_parens set in the superclass" do
|
128
|
-
expect(subject.escape_parens).to eq(true)
|
129
|
-
end
|
130
|
-
|
131
|
-
context "but the escape_parens is overridden in the sub-class" do
|
132
|
-
module TestSQLI
|
133
|
-
class OverridesItsInheritedEscapeParens < WithEscapeParensSet
|
134
|
-
escape_parens false
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
let(:exploit_class) do
|
139
|
-
TestSQLI::OverridesItsInheritedEscapeParens
|
140
|
-
end
|
141
|
-
|
142
|
-
it "must return the escape_parens set in the sub-class" do
|
143
|
-
expect(subject.escape_parens).to eq(false)
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
describe ".terminate" do
|
150
|
-
subject { exploit_class }
|
151
|
-
|
152
|
-
context "and when terminate is not set in the class" do
|
153
|
-
module TestSQLI
|
154
|
-
class WithNoTerminateSet < Ronin::Exploits::SQLI
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
let(:exploit_class) { TestSQLI::WithNoTerminateSet }
|
159
|
-
|
160
|
-
it "must default to false" do
|
161
|
-
expect(subject.terminate).to be(false)
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
context "and when terminate is set in the class" do
|
166
|
-
module TestSQLI
|
167
|
-
class WithTerminateSet < Ronin::Exploits::SQLI
|
168
|
-
terminate true
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
let(:exploit_class) { TestSQLI::WithTerminateSet }
|
173
|
-
|
174
|
-
it "must return the set terminate" do
|
175
|
-
expect(subject.terminate).to eq(true)
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
context "but when the terminate was set in the superclass" do
|
180
|
-
module TestSQLI
|
181
|
-
class InheritsItsTerminate < WithTerminateSet
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
let(:exploit_class) { TestSQLI::InheritsItsTerminate }
|
186
|
-
|
187
|
-
it "must return the terminate set in the superclass" do
|
188
|
-
expect(subject.terminate).to eq(true)
|
189
|
-
end
|
190
|
-
|
191
|
-
context "but the terminate is overridden in the sub-class" do
|
192
|
-
module TestSQLI
|
193
|
-
class OverridesItsInheritedTerminate < WithTerminateSet
|
194
|
-
terminate false
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
let(:exploit_class) do
|
199
|
-
TestSQLI::OverridesItsInheritedTerminate
|
200
|
-
end
|
201
|
-
|
202
|
-
it "must return the terminate set in the sub-class" do
|
203
|
-
expect(subject.terminate).to eq(false)
|
204
|
-
end
|
205
|
-
end
|
206
|
-
end
|
207
|
-
end
|
208
|
-
|
209
|
-
describe "#vuln" do
|
210
|
-
it "must return a Ronin::Vulns::SQLI object" do
|
211
|
-
expect(subject.vuln).to be_kind_of(Ronin::Vulns::SQLI)
|
212
|
-
end
|
213
|
-
|
214
|
-
it "must set the #url attribute of the SQLI vuln object" do
|
215
|
-
expect(subject.vuln.url).to eq(subject.url)
|
216
|
-
end
|
217
|
-
|
218
|
-
it "must default the #escape_quote attribute of the SQLI vuln object to false" do
|
219
|
-
expect(subject.vuln.escape_quote).to be(false)
|
220
|
-
end
|
221
|
-
|
222
|
-
context "when the exploit class sets escape_quote" do
|
223
|
-
module TestSQLI
|
224
|
-
class TestExploitWithEscapeQuote < Ronin::Exploits::SQLI
|
225
|
-
base_path '/showthread.asp'
|
226
|
-
query_param 'id'
|
227
|
-
escape_quote true
|
228
|
-
end
|
229
|
-
end
|
230
|
-
|
231
|
-
let(:exploit_class) { TestSQLI::TestExploitWithEscapeQuote }
|
232
|
-
|
233
|
-
it "must set the #escape_quote attribute of the SQLI vuln object to the exploit class'es escape_quote" do
|
234
|
-
expect(subject.vuln.escape_quote).to eq(exploit_class.escape_quote)
|
235
|
-
end
|
236
|
-
end
|
237
|
-
|
238
|
-
it "must default the #escape_parens attribute of the SQLI vuln object to false" do
|
239
|
-
expect(subject.vuln.escape_parens).to be(false)
|
240
|
-
end
|
241
|
-
|
242
|
-
context "when the exploit class sets escape_parens" do
|
243
|
-
module TestSQLI
|
244
|
-
class TestExploitWithEscapeParens < Ronin::Exploits::SQLI
|
245
|
-
base_path '/showthread.asp'
|
246
|
-
query_param 'id'
|
247
|
-
escape_parens true
|
248
|
-
end
|
249
|
-
end
|
250
|
-
|
251
|
-
let(:exploit_class) { TestSQLI::TestExploitWithEscapeParens }
|
252
|
-
|
253
|
-
it "must set the #escape_parens attribute of the SQLI vuln object to the exploit class'es escape_parens" do
|
254
|
-
expect(subject.vuln.escape_parens).to eq(exploit_class.escape_parens)
|
255
|
-
end
|
256
|
-
end
|
257
|
-
|
258
|
-
it "must default the #terminate attribute of the SQLI vuln object to false" do
|
259
|
-
expect(subject.vuln.terminate).to be(false)
|
260
|
-
end
|
261
|
-
|
262
|
-
context "when the exploit class sets terminate" do
|
263
|
-
module TestSQLI
|
264
|
-
class TestExploitWithTerminate < Ronin::Exploits::SQLI
|
265
|
-
base_path '/showthread.asp'
|
266
|
-
query_param 'id'
|
267
|
-
terminate true
|
268
|
-
end
|
269
|
-
end
|
270
|
-
|
271
|
-
let(:exploit_class) { TestSQLI::TestExploitWithTerminate }
|
272
|
-
|
273
|
-
it "must set the #terminate attribute of the SQLI vuln object to the exploit class'es terminate" do
|
274
|
-
expect(subject.vuln.terminate).to eq(exploit_class.terminate)
|
275
|
-
end
|
276
|
-
end
|
277
|
-
end
|
278
|
-
|
279
|
-
describe "#launch" do
|
280
|
-
module TestSQLI
|
281
|
-
class SQLPayload < Ronin::Payloads::SQLPayload
|
282
|
-
def build
|
283
|
-
@payload = 'SQL PAYLOAD HERE();'
|
284
|
-
end
|
285
|
-
end
|
286
|
-
end
|
287
|
-
|
288
|
-
let(:payload_class) { TestSQLI::SQLPayload }
|
289
|
-
let(:payload) { payload_class.new }
|
290
|
-
|
291
|
-
subject do
|
292
|
-
exploit_class.new(
|
293
|
-
payload: payload,
|
294
|
-
params: {
|
295
|
-
base_url: base_url
|
296
|
-
}
|
297
|
-
)
|
298
|
-
end
|
299
|
-
|
300
|
-
it "must call #exploit on the #vuln object with the #payload" do
|
301
|
-
expect(subject.vuln).to receive(:exploit).with(payload)
|
302
|
-
|
303
|
-
subject.launch
|
304
|
-
end
|
305
|
-
end
|
306
|
-
end
|
data/spec/ssti_spec.rb
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/ssti'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::SSTI do
|
5
|
-
module TestSSTI
|
6
|
-
class TestExploit < Ronin::Exploits::SSTI
|
7
|
-
base_path '/Templatize.asp'
|
8
|
-
query_param 'item'
|
9
|
-
end
|
10
|
-
|
11
|
-
class TestExploitWithEscapeExpr < Ronin::Exploits::SSTI
|
12
|
-
base_path '/Templatize.asp'
|
13
|
-
query_param 'item'
|
14
|
-
escape_expr ->(expr) { "${{#{expr}}}" }
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
let(:exploit_class) { TestSSTI::TestExploit }
|
19
|
-
let(:base_url) { 'http://testasp.vulnweb.com/' }
|
20
|
-
let(:query) { 'item=html/about.html' }
|
21
|
-
let(:query_param) { 'item' }
|
22
|
-
|
23
|
-
subject do
|
24
|
-
exploit_class.new(
|
25
|
-
params: {
|
26
|
-
base_url: base_url
|
27
|
-
}
|
28
|
-
)
|
29
|
-
end
|
30
|
-
|
31
|
-
describe ".escape_expr" do
|
32
|
-
subject { exploit_class }
|
33
|
-
|
34
|
-
context "and when escape_expr is not set in the class" do
|
35
|
-
module TestSSTI
|
36
|
-
class WithNoEscapeExprSet < Ronin::Exploits::SSTI
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
let(:exploit_class) { TestSSTI::WithNoEscapeExprSet }
|
41
|
-
|
42
|
-
it "must default to nil" do
|
43
|
-
expect(subject.escape_expr).to be(nil)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context "and when escape_expr is set in the class" do
|
48
|
-
module TestSSTI
|
49
|
-
class WithEscapeExprSet < Ronin::Exploits::SSTI
|
50
|
-
escape_expr ->(expr) { "{{#{expr}}}" }
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
let(:exploit_class) { TestSSTI::WithEscapeExprSet }
|
55
|
-
|
56
|
-
it "must return the set escape_expr" do
|
57
|
-
expect(subject.escape_expr).to be_kind_of(Proc)
|
58
|
-
expect(subject.escape_expr.call('test')).to eq('{{test}}')
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
context "but when the escape_expr was set in the superclass" do
|
63
|
-
module TestSSTI
|
64
|
-
class InheritsItsEscapeExpr < WithEscapeExprSet
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
let(:exploit_class) { TestSSTI::InheritsItsEscapeExpr }
|
69
|
-
|
70
|
-
it "must return the escape_expr set in the superclass" do
|
71
|
-
expect(subject.escape_expr).to be_kind_of(Proc)
|
72
|
-
expect(subject.escape_expr.call('test')).to eq('{{test}}')
|
73
|
-
end
|
74
|
-
|
75
|
-
context "but the escape_expr is overridden in the sub-class" do
|
76
|
-
module TestSSTI
|
77
|
-
class OverridesItsInheritedEscapeExpr < WithEscapeExprSet
|
78
|
-
escape_expr ->(expr) { "${#{expr}}" }
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
let(:exploit_class) do
|
83
|
-
TestSSTI::OverridesItsInheritedEscapeExpr
|
84
|
-
end
|
85
|
-
|
86
|
-
it "must return the escape_expr set in the sub-class" do
|
87
|
-
expect(subject.escape_expr).to be_kind_of(Proc)
|
88
|
-
expect(subject.escape_expr.call('test')).to eq('${test}')
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
describe ".exploit_type" do
|
95
|
-
subject { described_class }
|
96
|
-
|
97
|
-
it { expect(subject.exploit_type).to eq(:ssti) }
|
98
|
-
end
|
99
|
-
|
100
|
-
describe "#vuln" do
|
101
|
-
it "must return a Ronin::Vulns::SSTI object" do
|
102
|
-
expect(subject.vuln).to be_kind_of(Ronin::Vulns::SSTI)
|
103
|
-
end
|
104
|
-
|
105
|
-
it "must set the #url attribute of the SSTI vuln object" do
|
106
|
-
expect(subject.vuln.url).to eq(subject.url)
|
107
|
-
end
|
108
|
-
|
109
|
-
it "must defalt the #escape attribute of the SSTI vuln object to nil" do
|
110
|
-
expect(subject.vuln.escape).to be(nil)
|
111
|
-
end
|
112
|
-
|
113
|
-
context "when the exploit's escape_expr has been set" do
|
114
|
-
let(:exploit_class) { TestSSTI::TestExploitWithEscapeExpr }
|
115
|
-
|
116
|
-
it "must set the #escape attribute of the SSTI vuln object" do
|
117
|
-
expect(subject.vuln.escape).to be(exploit_class.escape_expr)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
data/spec/stack_overflow_spec.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/stack_overflow'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::StackOverflow do
|
5
|
-
it "must inherit from Ronin::Exploits::MemoryCorruption" do
|
6
|
-
expect(described_class).to be < Ronin::Exploits::MemoryCorruption
|
7
|
-
end
|
8
|
-
|
9
|
-
it "must include Ronin::Exploits::Mixins::StackOverflow" do
|
10
|
-
expect(described_class).to include(Ronin::Exploits::Mixins::StackOverflow)
|
11
|
-
end
|
12
|
-
|
13
|
-
describe ".exploit_type" do
|
14
|
-
subject { described_class }
|
15
|
-
|
16
|
-
it { expect(subject.exploit_type).to eq(:stack_overflow) }
|
17
|
-
end
|
18
|
-
end
|
data/spec/target_spec.rb
DELETED
@@ -1,92 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/target'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::Target do
|
5
|
-
it "must inherit from OpenStruct" do
|
6
|
-
expect(described_class).to be < OpenStruct
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "#initialize" do
|
10
|
-
it "must default #arch to nil" do
|
11
|
-
expect(subject.arch).to be(nil)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "must default #os to nil" do
|
15
|
-
expect(subject.os).to be(nil)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "must default #os_version to nil" do
|
19
|
-
expect(subject.os_version).to be(nil)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "must default #software to nil" do
|
23
|
-
expect(subject.software).to be(nil)
|
24
|
-
end
|
25
|
-
|
26
|
-
it "must default #versiong to nil" do
|
27
|
-
expect(subject.versiong).to be(nil)
|
28
|
-
end
|
29
|
-
|
30
|
-
context "when given the arch: keyword argument" do
|
31
|
-
let(:arch) { :x86_64 }
|
32
|
-
|
33
|
-
subject { described_class.new(arch: arch) }
|
34
|
-
|
35
|
-
it "must set #arch" do
|
36
|
-
expect(subject.arch).to be(arch)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
context "when given the os: keyword argument" do
|
41
|
-
let(:os) { :linux }
|
42
|
-
|
43
|
-
subject { described_class.new(os: os) }
|
44
|
-
|
45
|
-
it "must set #os" do
|
46
|
-
expect(subject.os).to be(os)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
context "when given the os_version: keyword argument" do
|
51
|
-
let(:os_version) { '5.17.0' }
|
52
|
-
|
53
|
-
subject { described_class.new(os_version: os_version) }
|
54
|
-
|
55
|
-
it "must set #os_version" do
|
56
|
-
expect(subject.os_version).to be(os_version)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
context "when given the software: keyword argument" do
|
61
|
-
let(:software) { 'Apache' }
|
62
|
-
|
63
|
-
subject { described_class.new(software: software) }
|
64
|
-
|
65
|
-
it "must set #software" do
|
66
|
-
expect(subject.software).to be(software)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context "when given the versiong: keyword argument" do
|
71
|
-
let(:versiong) { '1.2.3' }
|
72
|
-
|
73
|
-
subject { described_class.new(versiong: versiong) }
|
74
|
-
|
75
|
-
it "must set #versiong" do
|
76
|
-
expect(subject.versiong).to be(versiong)
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
context "when given additional keyword arguments" do
|
81
|
-
let(:foo) { 42 }
|
82
|
-
let(:bar) { 'data' }
|
83
|
-
|
84
|
-
subject { described_class.new(foo: foo, bar: bar) }
|
85
|
-
|
86
|
-
it "must populate the OpenStruct with them" do
|
87
|
-
expect(subject.foo).to be(foo)
|
88
|
-
expect(subject.bar).to be(bar)
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
data/spec/test_result_spec.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/test_result'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::TestResult do
|
5
|
-
let(:message) { 'example message' }
|
6
|
-
|
7
|
-
subject { described_class.new(message) }
|
8
|
-
|
9
|
-
describe "#initialize" do
|
10
|
-
it "must set #message" do
|
11
|
-
expect(subject.message).to eq(message)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "#to_s" do
|
16
|
-
it "must return #message" do
|
17
|
-
expect(subject.to_s).to eq(subject.message)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
it "must define a Vulnerable sub-class" do
|
22
|
-
expect(described_class::Vulnerable).to be < described_class
|
23
|
-
end
|
24
|
-
|
25
|
-
it "must define a NotVulnerable sub-class" do
|
26
|
-
expect(described_class::NotVulnerable).to be < described_class
|
27
|
-
end
|
28
|
-
|
29
|
-
it "must define a Unknown sub-class" do
|
30
|
-
expect(described_class::Unknown).to be < described_class
|
31
|
-
end
|
32
|
-
end
|
data/spec/use_after_free_spec.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/use_after_free'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::UseAfterFree do
|
5
|
-
it "must inherit from Ronin::Exploits::MemoryCorruption" do
|
6
|
-
expect(described_class).to be < Ronin::Exploits::MemoryCorruption
|
7
|
-
end
|
8
|
-
|
9
|
-
describe ".exploit_type" do
|
10
|
-
subject { described_class }
|
11
|
-
|
12
|
-
it { expect(subject.exploit_type).to eq(:use_after_free) }
|
13
|
-
end
|
14
|
-
end
|
data/spec/web_spec.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/web'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::Web do
|
5
|
-
it "must inherit from Ronin::Exploits::Exploit" do
|
6
|
-
expect(described_class).to be < Ronin::Exploits::Exploit
|
7
|
-
end
|
8
|
-
|
9
|
-
it "must include Ronin::Exploits::Mixin::HTTP" do
|
10
|
-
expect(described_class).to include(Ronin::Exploits::Mixins::HTTP)
|
11
|
-
end
|
12
|
-
end
|