security-gem 0.1.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6edb94cc1e01b1cafa41c80efb2757beea865b8b08323294a62b0e173e376eae
4
- data.tar.gz: a541e237ef277663cdbd4983df66b96335e59807581f696600cfbdc6996ceb8b
3
+ metadata.gz: 1861d7d816f659f59c15391e75fb1e95aeac0088dff85af4ee111f76e743b936
4
+ data.tar.gz: 63dba123845017c076c57b52b64fa1be6425de43ced46e74d628deab1e0db29f
5
5
  SHA512:
6
- metadata.gz: 1fbda697f1b85d8ecbff4bffb359b703f5465af87c625f3c8e87aed0d431f7b4b11c67c8018c5eb89a69f4d33fa4bb1857a5de6d011ef8d153166a70e4462d9f
7
- data.tar.gz: a11f2331724910658bac30a8880555762c3149509aa483fb01718a208e02e64a329ff6b7b2e6db79045cf4b9d653e3086927602363a216f33d76507db66e2929
6
+ metadata.gz: c70695d1dffa5d4b06710182dc885854f95eccaee3f90efaca572d1f1b4487edc29cf2fbe169291dfb2d58e7dcbdbabe257e89d5360677df307d9c2e8a6f85ad
7
+ data.tar.gz: b8150a3d21a3a0aada6f788d0ffe5f30dcd31fd27e29cd1a71a1ca5b5bb814e5677078e59cb24801bc518006040cb4858f43e5bfd4f61204031db14b6fd686a1
data/.gitignore CHANGED
@@ -6,4 +6,5 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
- *.gem
9
+ *.gem
10
+ .env
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- security-gem (0.1.1)
4
+ security-gem (0.1.4)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Security
4
4
  module Gem
5
- VERSION = "0.1.1"
5
+ VERSION = "0.1.4"
6
6
  end
7
7
  end
data/lib/security/gem.rb CHANGED
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "gem/version"
4
- require_relative "gem/builder"
5
- require 'socket'
4
+ require_relative "gem/security"
6
5
 
7
6
  module Security
8
7
  module Gem
@@ -10,7 +9,3 @@ module Security
10
9
  end
11
10
  end
12
11
 
13
- input = "delete"
14
-
15
- SecurityLogger::Sql_Injection.new().check_input(input)
16
-
@@ -0,0 +1,12 @@
1
+ require_relative "gem/security"
2
+
3
+ # Sample SQL input
4
+ input = "or 1=1"
5
+
6
+ # Using the gem to log injection attempts
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)