security-gem 0.1.3 → 0.1.4
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/Gemfile.lock +1 -1
- data/lib/security/gem/security.rb +79 -0
- data/lib/security/gem/version.rb +1 -1
- data/lib/security/gem.rb +1 -1
- data/lib/security/test.rb +7 -2
- data/{payloads.txt → sql_payloads.txt} +0 -0
- data/xss_payloads.txt +1 -0
- metadata +4 -3
- data/lib/security/gem/builder.rb +0 -45
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1861d7d816f659f59c15391e75fb1e95aeac0088dff85af4ee111f76e743b936
|
|
4
|
+
data.tar.gz: 63dba123845017c076c57b52b64fa1be6425de43ced46e74d628deab1e0db29f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c70695d1dffa5d4b06710182dc885854f95eccaee3f90efaca572d1f1b4487edc29cf2fbe169291dfb2d58e7dcbdbabe257e89d5360677df307d9c2e8a6f85ad
|
|
7
|
+
data.tar.gz: b8150a3d21a3a0aada6f788d0ffe5f30dcd31fd27e29cd1a71a1ca5b5bb814e5677078e59cb24801bc518006040cb4858f43e5bfd4f61204031db14b6fd686a1
|
data/Gemfile.lock
CHANGED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
require 'logger'
|
|
3
|
+
require 'logger/formatter'
|
|
4
|
+
require 'net/http'
|
|
5
|
+
require 'open-uri'
|
|
6
|
+
require 'dotenv'
|
|
7
|
+
Dotenv.load
|
|
8
|
+
|
|
9
|
+
module SecurityLogger
|
|
10
|
+
|
|
11
|
+
#Create logs used for SQL Injection detections
|
|
12
|
+
class Sql_Injection
|
|
13
|
+
def initialize (ip_origin:)
|
|
14
|
+
@ip_origin = ip_origin
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def log(input)
|
|
18
|
+
logger = Logger.new(STDOUT)
|
|
19
|
+
logger.formatter = proc do |severity, datetime, progname, msg|
|
|
20
|
+
{
|
|
21
|
+
severity: severity,
|
|
22
|
+
timestamp: datetime.to_s,
|
|
23
|
+
app: progname,
|
|
24
|
+
message: msg
|
|
25
|
+
}.to_json + $/
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
error = {:threat => "sql_injection_attack", :input => input, :ip_origin => @ip_origin}
|
|
29
|
+
logger.warn(JSON.parse(error.to_json))
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def check_input(input)
|
|
33
|
+
uri = ENV['PATH_TO_SQL_PAYLOAD']
|
|
34
|
+
uri = URI(uri)
|
|
35
|
+
file = Net::HTTP.get(uri)
|
|
36
|
+
file.each_line do |file|
|
|
37
|
+
if file.strip == input.strip
|
|
38
|
+
self.log(input.strip)
|
|
39
|
+
break
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
class Xss_Injection
|
|
47
|
+
def initialize (ip_origin:)
|
|
48
|
+
@ip_origin = ip_origin
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def log(input)
|
|
52
|
+
logger = Logger.new(STDOUT)
|
|
53
|
+
logger.formatter = proc do |severity, datetime, progname, msg|
|
|
54
|
+
{
|
|
55
|
+
severity: severity,
|
|
56
|
+
timestamp: datetime.to_s,
|
|
57
|
+
app: progname,
|
|
58
|
+
message: msg
|
|
59
|
+
}.to_json + $/
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
error = {:threat => "xss_attack", :input => input, :ip_origin => @ip_origin}
|
|
63
|
+
logger.warn(JSON.parse(error.to_json))
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def check_input(input)
|
|
67
|
+
uri = ENV['PATH_TO_XSS_PAYLOAD']
|
|
68
|
+
uri = URI(uri)
|
|
69
|
+
file = Net::HTTP.get(uri)
|
|
70
|
+
file.each_line do |file|
|
|
71
|
+
if file.strip == input.strip
|
|
72
|
+
self.log(input.strip)
|
|
73
|
+
break
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
data/lib/security/gem/version.rb
CHANGED
data/lib/security/gem.rb
CHANGED
data/lib/security/test.rb
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
require_relative "gem/
|
|
1
|
+
require_relative "gem/security"
|
|
2
2
|
|
|
3
3
|
# Sample SQL input
|
|
4
4
|
input = "or 1=1"
|
|
5
5
|
|
|
6
6
|
# Using the gem to log injection attempts
|
|
7
|
-
SecurityLogger::Sql_Injection.new(ip_origin: "123.123.123.1").check_input(input)
|
|
7
|
+
SecurityLogger::Sql_Injection.new(ip_origin: "123.123.123.1").check_input(input)
|
|
8
|
+
|
|
9
|
+
input = "<script>alert(0)</script>"
|
|
10
|
+
|
|
11
|
+
# Using gem to log xss attempts
|
|
12
|
+
SecurityLogger::Xss_Injection.new(ip_origin: "123.123.123.1").check_input(input)
|
|
File without changes
|
data/xss_payloads.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script>alert(0)</script>
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: security-gem
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- tuckerweibell
|
|
@@ -28,11 +28,12 @@ files:
|
|
|
28
28
|
- bin/setup
|
|
29
29
|
- file.json
|
|
30
30
|
- lib/security/gem.rb
|
|
31
|
-
- lib/security/gem/
|
|
31
|
+
- lib/security/gem/security.rb
|
|
32
32
|
- lib/security/gem/version.rb
|
|
33
33
|
- lib/security/test.rb
|
|
34
|
-
- payloads.txt
|
|
35
34
|
- security-gem.gemspec
|
|
35
|
+
- sql_payloads.txt
|
|
36
|
+
- xss_payloads.txt
|
|
36
37
|
homepage: https://github.com/tuckerweibell/security-gem
|
|
37
38
|
licenses:
|
|
38
39
|
- MIT
|
data/lib/security/gem/builder.rb
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
require 'json'
|
|
2
|
-
require 'logger'
|
|
3
|
-
require 'logger/formatter'
|
|
4
|
-
require 'net/http'
|
|
5
|
-
require 'open-uri'
|
|
6
|
-
require 'dotenv'
|
|
7
|
-
Dotenv.load
|
|
8
|
-
|
|
9
|
-
module SecurityLogger
|
|
10
|
-
|
|
11
|
-
#Create logs used for SQL Injection detections
|
|
12
|
-
class Sql_Injection
|
|
13
|
-
def initialize (ip_origin:)
|
|
14
|
-
@ip_origin = ip_origin
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def log(input)
|
|
18
|
-
logger = Logger.new(STDOUT)
|
|
19
|
-
logger.formatter = proc do |severity, datetime, progname, msg|
|
|
20
|
-
{
|
|
21
|
-
severity: severity,
|
|
22
|
-
timestamp: datetime.to_s,
|
|
23
|
-
app: progname,
|
|
24
|
-
message: msg
|
|
25
|
-
}.to_json + $/
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
error = {:input => input, :ip_origin => @ip_origin}
|
|
29
|
-
logger.warn(JSON.parse(error.to_json))
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def check_input(input)
|
|
33
|
-
uri = ENV['PATH_TO_PAYLOAD']
|
|
34
|
-
uri = URI(uri)
|
|
35
|
-
file = Net::HTTP.get(uri)
|
|
36
|
-
file.each_line do |file|
|
|
37
|
-
if file.strip == input.strip
|
|
38
|
-
self.log(input.strip)
|
|
39
|
-
break
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|