ronin-exploits 1.0.0.beta2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -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
|