ronin-exploits 1.0.0.beta2 → 1.0.0.beta3
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 +4 -0
- data/gemspec.yml +3 -1
- data/lib/ronin/exploits/cli/commands/run.rb +55 -5
- data/lib/ronin/exploits/version.rb +1 -1
- data/ronin-exploits.gemspec +2 -1
- metadata +10 -115
- 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
@@ -1,62 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/metadata/default_port'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::Metadata::DefaultPort do
|
5
|
-
module TestMetadataDefaultPort
|
6
|
-
class WithNoDefaultPortSet
|
7
|
-
include Ronin::Exploits::Metadata::DefaultPort
|
8
|
-
end
|
9
|
-
|
10
|
-
class WithDefaultPortSet
|
11
|
-
include Ronin::Exploits::Metadata::DefaultPort
|
12
|
-
|
13
|
-
default_port 111
|
14
|
-
end
|
15
|
-
|
16
|
-
class InheritsItsDefaultPort < WithDefaultPortSet
|
17
|
-
include Ronin::Exploits::Metadata::DefaultPort
|
18
|
-
end
|
19
|
-
|
20
|
-
class OverridesItsInheritedDefaultPort < WithDefaultPortSet
|
21
|
-
include Ronin::Exploits::Metadata::DefaultPort
|
22
|
-
|
23
|
-
default_port 222
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
describe ".default_port" do
|
28
|
-
subject { test_class }
|
29
|
-
|
30
|
-
context "and when default port is not set in the class" do
|
31
|
-
let(:test_class) { TestMetadataDefaultPort::WithNoDefaultPortSet }
|
32
|
-
|
33
|
-
it "must default to nil" do
|
34
|
-
expect(subject.default_port).to be(nil)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context "and when default port is set in the class" do
|
39
|
-
let(:test_class) { TestMetadataDefaultPort::WithDefaultPortSet }
|
40
|
-
|
41
|
-
it "must return the set default_port" do
|
42
|
-
expect(subject.default_port).to eq(111)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context "but when the default port was set in the superclass" do
|
47
|
-
let(:test_class) { TestMetadataDefaultPort::InheritsItsDefaultPort }
|
48
|
-
|
49
|
-
it "must return the default port set in the superclass" do
|
50
|
-
expect(subject.default_port).to eq(111)
|
51
|
-
end
|
52
|
-
|
53
|
-
context "but the default port is overridden in the sub-class" do
|
54
|
-
let(:test_class) { TestMetadataDefaultPort::OverridesItsInheritedDefaultPort }
|
55
|
-
|
56
|
-
it "must return the default port set in the sub-class" do
|
57
|
-
expect(subject.default_port).to eq(222)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/metadata/header_name'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::Metadata::HeaderName do
|
5
|
-
describe ".header_name" do
|
6
|
-
subject { test_class }
|
7
|
-
|
8
|
-
context "and when header_name is not set in the class" do
|
9
|
-
module TestMetadataHeaderName
|
10
|
-
class WithNoHeaderNameSet
|
11
|
-
include Ronin::Exploits::Metadata::HeaderName
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
let(:test_class) { TestMetadataHeaderName::WithNoHeaderNameSet }
|
16
|
-
|
17
|
-
it "must default to nil" do
|
18
|
-
expect(subject.header_name).to be(nil)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context "and when header_name is set in the class" do
|
23
|
-
module TestMetadataHeaderName
|
24
|
-
class WithHeaderNameSet
|
25
|
-
include Ronin::Exploits::Metadata::HeaderName
|
26
|
-
|
27
|
-
header_name 'test'
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
let(:test_class) { TestMetadataHeaderName::WithHeaderNameSet }
|
32
|
-
|
33
|
-
it "must return the set header_name" do
|
34
|
-
expect(subject.header_name).to eq("test")
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context "but when the header_name was set in the superclass" do
|
39
|
-
module TestMetadataHeaderName
|
40
|
-
class InheritsItsHeaderName < WithHeaderNameSet
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
let(:test_class) { TestMetadataHeaderName::InheritsItsHeaderName }
|
45
|
-
|
46
|
-
it "must return the header_name set in the superclass" do
|
47
|
-
expect(subject.header_name).to eq("test")
|
48
|
-
end
|
49
|
-
|
50
|
-
context "but the header_name is overridden in the sub-class" do
|
51
|
-
module TestMetadataHeaderName
|
52
|
-
class OverridesItsInheritedHeaderName < WithHeaderNameSet
|
53
|
-
header_name "test2"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
let(:test_class) do
|
58
|
-
TestMetadataHeaderName::OverridesItsInheritedHeaderName
|
59
|
-
end
|
60
|
-
|
61
|
-
it "must return the header_name set in the sub-class" do
|
62
|
-
expect(subject.header_name).to eq("test2")
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
data/spec/metadata/os_spec.rb
DELETED
@@ -1,164 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/metadata/os'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::Metadata::OS do
|
5
|
-
module TestMetadataOS
|
6
|
-
class WithNoOSSet
|
7
|
-
include Ronin::Exploits::Metadata::OS
|
8
|
-
end
|
9
|
-
|
10
|
-
class WithOSSet
|
11
|
-
include Ronin::Exploits::Metadata::OS
|
12
|
-
|
13
|
-
os :linux
|
14
|
-
end
|
15
|
-
|
16
|
-
class InheritsItsOS < WithOSSet
|
17
|
-
include Ronin::Exploits::Metadata::OS
|
18
|
-
end
|
19
|
-
|
20
|
-
class OverridesItsInheritedOS < WithOSSet
|
21
|
-
include Ronin::Exploits::Metadata::OS
|
22
|
-
|
23
|
-
os :macos
|
24
|
-
end
|
25
|
-
|
26
|
-
class WithNoOSVersionSet
|
27
|
-
include Ronin::Exploits::Metadata::OS
|
28
|
-
|
29
|
-
os :linux
|
30
|
-
end
|
31
|
-
|
32
|
-
class WithOSVersionSet
|
33
|
-
include Ronin::Exploits::Metadata::OS
|
34
|
-
|
35
|
-
os :linux
|
36
|
-
os_version '5.x'
|
37
|
-
end
|
38
|
-
|
39
|
-
class InheritsItsOSVersion < WithOSVersionSet
|
40
|
-
include Ronin::Exploits::Metadata::OS
|
41
|
-
end
|
42
|
-
|
43
|
-
class OverridesItsInheritedOSVersion < WithOSVersionSet
|
44
|
-
include Ronin::Exploits::Metadata::OS
|
45
|
-
|
46
|
-
os :macos
|
47
|
-
os_version '13'
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
describe ".os" do
|
52
|
-
subject { test_class }
|
53
|
-
|
54
|
-
context "and when os is not set in the class" do
|
55
|
-
let(:test_class) { TestMetadataOS::WithNoOSSet }
|
56
|
-
|
57
|
-
it "must default to nil" do
|
58
|
-
expect(subject.os).to be(nil)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
context "and when os is set in the class" do
|
63
|
-
let(:test_class) { TestMetadataOS::WithOSSet }
|
64
|
-
|
65
|
-
it "must return the set os" do
|
66
|
-
expect(subject.os).to eq(:linux)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context "but when the os was set in the superclass" do
|
71
|
-
let(:test_class) { TestMetadataOS::InheritsItsOS }
|
72
|
-
|
73
|
-
it "must return the os set in the superclass" do
|
74
|
-
expect(subject.os).to eq(:linux)
|
75
|
-
end
|
76
|
-
|
77
|
-
context "but the os is overridden in the sub-class" do
|
78
|
-
let(:test_class) { TestMetadataOS::OverridesItsInheritedOS }
|
79
|
-
|
80
|
-
it "must return the os set in the sub-class" do
|
81
|
-
expect(subject.os).to eq(:macos)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
describe ".os_version" do
|
88
|
-
subject { test_class }
|
89
|
-
|
90
|
-
context "and when os is not set in the class" do
|
91
|
-
let(:test_class) { TestMetadataOS::WithNoOSVersionSet }
|
92
|
-
|
93
|
-
it "must default to nil" do
|
94
|
-
expect(subject.os_version).to be(nil)
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
context "and when os_version is set in the class" do
|
99
|
-
let(:test_class) { TestMetadataOS::WithOSVersionSet }
|
100
|
-
|
101
|
-
it "must return the set os_version" do
|
102
|
-
expect(subject.os_version).to eq('5.x')
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
context "but when the os was set in the superclass" do
|
107
|
-
let(:test_class) { TestMetadataOS::InheritsItsOSVersion }
|
108
|
-
|
109
|
-
it "must return the os_version set in the superclass" do
|
110
|
-
expect(subject.os_version).to eq('5.x')
|
111
|
-
end
|
112
|
-
|
113
|
-
context "but the os is overridden in the sub-class" do
|
114
|
-
let(:test_class) do
|
115
|
-
TestMetadataOS::OverridesItsInheritedOSVersion
|
116
|
-
end
|
117
|
-
|
118
|
-
it "must return the os_version set in the sub-class" do
|
119
|
-
expect(subject.os_version).to eq('13')
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
describe "#os" do
|
126
|
-
subject { test_class.new }
|
127
|
-
|
128
|
-
context "when the Exploit class has .os set" do
|
129
|
-
let(:test_class) { TestMetadataOS::WithOSSet }
|
130
|
-
|
131
|
-
it "must return the Exploit classes .os" do
|
132
|
-
expect(subject.os).to eq(test_class.os)
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
context "when the Exploit class does not have .os set" do
|
137
|
-
let(:test_class) { TestMetadataOS::WithNoOSSet }
|
138
|
-
|
139
|
-
it "must return nil" do
|
140
|
-
expect(subject.os).to be(nil)
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
describe "#os_version" do
|
146
|
-
subject { test_class.new }
|
147
|
-
|
148
|
-
context "when the Exploit class has .os_version set" do
|
149
|
-
let(:test_class) { TestMetadataOS::WithOSVersionSet }
|
150
|
-
|
151
|
-
it "must return the Exploit classes .os_version" do
|
152
|
-
expect(subject.os_version).to eq(test_class.os_version)
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
context "when the Exploit class does not have .os_version set" do
|
157
|
-
let(:test_class) { TestMetadataOS::WithNoOSVersionSet }
|
158
|
-
|
159
|
-
it "must return nil" do
|
160
|
-
expect(subject.os_version).to be(nil)
|
161
|
-
end
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
@@ -1,100 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/metadata/shouts'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::Metadata::Shouts do
|
5
|
-
describe ".shouts" do
|
6
|
-
subject { test_class }
|
7
|
-
|
8
|
-
context "and when shouts is not set in the class" do
|
9
|
-
module TestMetadataShouts
|
10
|
-
class WithNoShoutsSet
|
11
|
-
include Ronin::Exploits::Metadata::Shouts
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
let(:test_class) { TestMetadataShouts::WithNoShoutsSet }
|
16
|
-
|
17
|
-
it "must default to []" do
|
18
|
-
expect(subject.shouts).to eq([])
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context "and when shouts is set in the class" do
|
23
|
-
module TestMetadataShouts
|
24
|
-
class WithShoutsSet
|
25
|
-
include Ronin::Exploits::Metadata::Shouts
|
26
|
-
|
27
|
-
shouts [
|
28
|
-
'https://example.com/link1',
|
29
|
-
'https://example.com/link2'
|
30
|
-
]
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
let(:test_class) { TestMetadataShouts::WithShoutsSet }
|
35
|
-
|
36
|
-
it "must return the set shouts" do
|
37
|
-
expect(subject.shouts).to eq(
|
38
|
-
[
|
39
|
-
'https://example.com/link1',
|
40
|
-
'https://example.com/link2'
|
41
|
-
]
|
42
|
-
)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context "but when the shouts was set in the superclass" do
|
47
|
-
module TestMetadataShouts
|
48
|
-
class InheritsItsShouts < WithShoutsSet
|
49
|
-
include Ronin::Exploits::Metadata::Shouts
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
let(:test_class) { TestMetadataShouts::InheritsItsShouts }
|
54
|
-
|
55
|
-
it "must return the shouts set in the superclass" do
|
56
|
-
expect(subject.shouts).to eq(
|
57
|
-
[
|
58
|
-
'https://example.com/link1',
|
59
|
-
'https://example.com/link2'
|
60
|
-
]
|
61
|
-
)
|
62
|
-
end
|
63
|
-
|
64
|
-
context "but the shouts is overridden in the sub-class" do
|
65
|
-
module TestMetadataShouts
|
66
|
-
class OverridesItsInheritedShouts < WithShoutsSet
|
67
|
-
include Ronin::Exploits::Metadata::Shouts
|
68
|
-
|
69
|
-
shouts [
|
70
|
-
'https://example.com/link3'
|
71
|
-
]
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
let(:test_class) do
|
76
|
-
TestMetadataShouts::OverridesItsInheritedShouts
|
77
|
-
end
|
78
|
-
|
79
|
-
it "must return the shouts in the sub-class and the superclass" do
|
80
|
-
expect(subject.shouts).to eq(
|
81
|
-
[
|
82
|
-
'https://example.com/link1',
|
83
|
-
'https://example.com/link2',
|
84
|
-
'https://example.com/link3'
|
85
|
-
]
|
86
|
-
)
|
87
|
-
end
|
88
|
-
|
89
|
-
it "must not modify the superclass'es shouts" do
|
90
|
-
expect(subject.superclass.shouts).to eq(
|
91
|
-
[
|
92
|
-
'https://example.com/link1',
|
93
|
-
'https://example.com/link2'
|
94
|
-
]
|
95
|
-
)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/metadata/url_path'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::Metadata::URLPath do
|
5
|
-
describe ".url_path" do
|
6
|
-
subject { test_class }
|
7
|
-
|
8
|
-
context "and when url_path is not set in the class" do
|
9
|
-
module TestMetadataURLPath
|
10
|
-
class WithNoURLPathSet
|
11
|
-
include Ronin::Exploits::Metadata::URLPath
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
let(:test_class) { TestMetadataURLPath::WithNoURLPathSet }
|
16
|
-
|
17
|
-
it "must default to '/'" do
|
18
|
-
expect(subject.url_path).to eq('/')
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context "and when url_path is set in the class" do
|
23
|
-
module TestMetadataURLPath
|
24
|
-
class WithURLPathSet
|
25
|
-
include Ronin::Exploits::Metadata::URLPath
|
26
|
-
|
27
|
-
url_path '/test'
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
let(:test_class) { TestMetadataURLPath::WithURLPathSet }
|
32
|
-
|
33
|
-
it "must return the set url_path" do
|
34
|
-
expect(subject.url_path).to eq("/test")
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context "but when the url_path was set in the superclass" do
|
39
|
-
module TestMetadataURLPath
|
40
|
-
class InheritsItsURLPath < WithURLPathSet
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
let(:test_class) { TestMetadataURLPath::InheritsItsURLPath }
|
45
|
-
|
46
|
-
it "must return the url_path set in the superclass" do
|
47
|
-
expect(subject.url_path).to eq("/test")
|
48
|
-
end
|
49
|
-
|
50
|
-
context "but the url_path is overridden in the sub-class" do
|
51
|
-
module TestMetadataURLPath
|
52
|
-
class OverridesItsInheritedURLPath < WithURLPathSet
|
53
|
-
url_path "/test2"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
let(:test_class) do
|
58
|
-
TestMetadataURLPath::OverridesItsInheritedURLPath
|
59
|
-
end
|
60
|
-
|
61
|
-
it "must return the url_path set in the sub-class" do
|
62
|
-
expect(subject.url_path).to eq("/test2")
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/metadata/url_query_param'
|
3
|
-
|
4
|
-
describe Ronin::Exploits::Metadata::URLQueryParam do
|
5
|
-
describe ".url_query_param" do
|
6
|
-
subject { test_class }
|
7
|
-
|
8
|
-
context "and when url_query_param is not set in the class" do
|
9
|
-
module TestMetadataURLQueryParam
|
10
|
-
class WithNoURLQueryParamSet
|
11
|
-
include Ronin::Exploits::Metadata::URLQueryParam
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
let(:test_class) { TestMetadataURLQueryParam::WithNoURLQueryParamSet }
|
16
|
-
|
17
|
-
it "must default to nil" do
|
18
|
-
expect(subject.url_query_param).to be(nil)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context "and when url_query_param is set in the class" do
|
23
|
-
module TestMetadataURLQueryParam
|
24
|
-
class WithURLQueryParamSet
|
25
|
-
include Ronin::Exploits::Metadata::URLQueryParam
|
26
|
-
|
27
|
-
url_query_param 'test'
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
let(:test_class) { TestMetadataURLQueryParam::WithURLQueryParamSet }
|
32
|
-
|
33
|
-
it "must return the set url_query_param" do
|
34
|
-
expect(subject.url_query_param).to eq("test")
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context "but when the url_query_param was set in the superclass" do
|
39
|
-
module TestMetadataURLQueryParam
|
40
|
-
class InheritsItsURLQueryParam < WithURLQueryParamSet
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
let(:test_class) { TestMetadataURLQueryParam::InheritsItsURLQueryParam }
|
45
|
-
|
46
|
-
it "must return the url_query_param set in the superclass" do
|
47
|
-
expect(subject.url_query_param).to eq("test")
|
48
|
-
end
|
49
|
-
|
50
|
-
context "but the url_query_param is overridden in the sub-class" do
|
51
|
-
module TestMetadataURLQueryParam
|
52
|
-
class OverridesItsInheritedURLQueryParam < WithURLQueryParamSet
|
53
|
-
url_query_param "test2"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
let(:test_class) do
|
58
|
-
TestMetadataURLQueryParam::OverridesItsInheritedURLQueryParam
|
59
|
-
end
|
60
|
-
|
61
|
-
it "must return the url_query_param set in the sub-class" do
|
62
|
-
expect(subject.url_query_param).to eq("test2")
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
data/spec/mixins/binary_spec.rb
DELETED
@@ -1,129 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/exploits/mixins/binary'
|
3
|
-
|
4
|
-
require 'ronin/exploits/exploit'
|
5
|
-
require 'ronin/exploits/metadata/arch'
|
6
|
-
require 'ronin/exploits/metadata/os'
|
7
|
-
|
8
|
-
describe Ronin::Exploits::Mixins::Binary do
|
9
|
-
module TestBinaryMixin
|
10
|
-
class ExploitWithArchSet < Ronin::Exploits::Exploit
|
11
|
-
include Ronin::Exploits::Metadata::Arch
|
12
|
-
include Ronin::Exploits::Mixins::Binary
|
13
|
-
|
14
|
-
arch :x86
|
15
|
-
end
|
16
|
-
|
17
|
-
class ExploitWithoutArch < Ronin::Exploits::Exploit
|
18
|
-
include Ronin::Exploits::Mixins::Binary
|
19
|
-
end
|
20
|
-
|
21
|
-
class ExploitWithoutArchSet < Ronin::Exploits::Exploit
|
22
|
-
include Ronin::Exploits::Metadata::Arch
|
23
|
-
include Ronin::Exploits::Mixins::Binary
|
24
|
-
end
|
25
|
-
|
26
|
-
class ExploitWithArchSetButWithoutOSSet < Ronin::Exploits::Exploit
|
27
|
-
include Ronin::Exploits::Metadata::Arch
|
28
|
-
include Ronin::Exploits::Metadata::OS
|
29
|
-
include Ronin::Exploits::Mixins::Binary
|
30
|
-
|
31
|
-
arch :x86
|
32
|
-
end
|
33
|
-
|
34
|
-
class ExploitWithArchAndOSSet < Ronin::Exploits::Exploit
|
35
|
-
include Ronin::Exploits::Metadata::Arch
|
36
|
-
include Ronin::Exploits::Metadata::OS
|
37
|
-
include Ronin::Exploits::Mixins::Binary
|
38
|
-
|
39
|
-
arch :x86
|
40
|
-
os :linux
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
subject { exploit_class.new }
|
45
|
-
|
46
|
-
describe "#perform_validate" do
|
47
|
-
context "when the exploit class does not define an #arch method" do
|
48
|
-
let(:exploit_class) { TestBinaryMixin::ExploitWithoutArch }
|
49
|
-
|
50
|
-
it do
|
51
|
-
expect {
|
52
|
-
subject.perform_validate
|
53
|
-
}.to raise_error(Ronin::Exploits::ValidationError,"exploit #{exploit_class} did not include Ronin::Exploits::Metadata::Arch or Ronin::Exploits::Mixins::HasTargets")
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
context "when the exploit class's #arch method returns nil" do
|
58
|
-
let(:exploit_class) { TestBinaryMixin::ExploitWithoutArchSet }
|
59
|
-
|
60
|
-
it do
|
61
|
-
expect {
|
62
|
-
subject.perform_validate
|
63
|
-
}.to raise_error(Ronin::Exploits::ValidationError,"exploit #{exploit_class} did not include define an architecture")
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
context "when the exploit class defines an architecture" do
|
68
|
-
let(:exploit_class) { TestBinaryMixin::ExploitWithArchSet }
|
69
|
-
|
70
|
-
it do
|
71
|
-
expect {
|
72
|
-
subject.perform_validate
|
73
|
-
}.to_not raise_error
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
describe "#platform" do
|
79
|
-
context "when #arch returns nil" do
|
80
|
-
let(:exploit_class) { TestBinaryMixin::ExploitWithoutArchSet }
|
81
|
-
|
82
|
-
it "must return Ronin::Support::Binary::CTypes" do
|
83
|
-
expect(subject.platform).to be(Ronin::Support::Binary::CTypes)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
context "when #arch returns a architecture name" do
|
88
|
-
let(:exploit_class) { TestBinaryMixin::ExploitWithArchSet }
|
89
|
-
|
90
|
-
it "must return the according Ronin::Support::Binary::CTypes::Arch:: module" do
|
91
|
-
expect(subject.platform).to be(Ronin::Support::Binary::CTypes::Arch::X86)
|
92
|
-
end
|
93
|
-
|
94
|
-
context "and when #os is defined" do
|
95
|
-
context "and it returns an OS name" do
|
96
|
-
let(:exploit_class) do
|
97
|
-
TestBinaryMixin::ExploitWithArchAndOSSet
|
98
|
-
end
|
99
|
-
|
100
|
-
it "must return the according Ronin::Support::Binary::CTypes::OS object with the according Ronin::Support::Binary::CTypes::Arch:: module inside it" do
|
101
|
-
expect(subject.platform).to be_kind_of(Ronin::Support::Binary::CTypes::OS::Linux)
|
102
|
-
expect(subject.platform.types).to be(Ronin::Support::Binary::CTypes::Arch::X86)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
context "but it returns nil" do
|
107
|
-
let(:exploit_class) do
|
108
|
-
TestBinaryMixin::ExploitWithArchSetButWithoutOSSet
|
109
|
-
end
|
110
|
-
|
111
|
-
it "must still return the according Ronin::Support::Binary::CTypes::Arch:: module" do
|
112
|
-
expect(subject.platform).to be(Ronin::Support::Binary::CTypes::Arch::X86)
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
describe "#pack" do
|
120
|
-
let(:exploit_class) { TestBinaryMixin::ExploitWithArchSet }
|
121
|
-
|
122
|
-
let(:type) { :uint32 }
|
123
|
-
let(:value) { 0x12345678 }
|
124
|
-
|
125
|
-
it "must pack the value using the type from #platform" do
|
126
|
-
expect(subject.pack(type,value)).to eq("\x78\x56\x34\x12".b)
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|