lacewing 0.1.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.
@@ -0,0 +1,119 @@
1
+ require 'lacewing/core'
2
+
3
+ module Lacewing
4
+ class Exploits
5
+
6
+ def self.lfi
7
+ puts 'LFI: Local File Inclusion'.bold.green
8
+ puts Lacewing::PROMPT + 'Here are a few articles on how to test LFI:'
9
+ places = ['https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion', 'https://www.offensive-security.com/metasploit-unleashed/file-inclusion-vulnerabilities/']
10
+ places.each { |i| puts "\t#{i}"}
11
+
12
+ puts Lacewing::PROMPT + 'Here are some common payloads:'
13
+ payloads = %w[../../../../etc/passwd ../../../../etc/shadow ../../../../var/mail/root]
14
+ payloads.each { |i| puts "\t#{i}" }
15
+
16
+ puts 'Press any key to continue... '.bold.green
17
+ return if STDIN.getch
18
+ end
19
+
20
+ def self.rce
21
+ puts 'RCE: Remote Code Execution'.bold.green
22
+ puts Lacewing::PROMPT + 'There\'s a lot of different kinds of RCE, so here are some examples:'
23
+ examples = %w[https://thehackernews.com/2018/04/windows-patch-updates.html https://www.symantec.com/security_response/vulnerability.jsp?bid=102375 https://en.wikipedia.org/wiki/EternalBlue]
24
+ examples.each { |i| puts "\t#{i}" }
25
+
26
+ puts Lacewing::PROMPT + 'Here are some tools to use:'
27
+ tools = ['Metasploit Framework - metasploit.com', 'Golismero - golismero-project.com/']
28
+ tools.each { |i| puts "\t#{i}"}
29
+
30
+ puts 'Press any key to continue... '.bold.green
31
+ return if STDIN.getch
32
+ end
33
+
34
+ def self.xss
35
+ puts 'XSS: Cross-Site Scripting'.bold.green
36
+ xss_types = ['Reflected - Specially crafted input returned back to user', 'Stored - Permanent Injection', 'DOM-based - XSS artifact as an HTML DOM']
37
+ type = $prompt.select('There are different kinds of XSS attacks. Which one do you want?', xss_types)
38
+ case type
39
+ when xss_types[0]
40
+ ref = [
41
+ 'https://www.owasp.org/index.php/Testing_for_Reflected_Cross_site_scripting_(OWASP-DV-001)',
42
+ 'https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet',
43
+ 'https://security.stackexchange.com/questions/65142/what-is-reflected-xss'
44
+ ]
45
+ puts Lacewing::PROMPT + 'Here are some references to Reflected XSS:'
46
+ ref.each { |i| puts "\t#{i}" }
47
+ when xss_types[1]
48
+ ref = [
49
+ 'https://www.incapsula.com/web-application-security/cross-site-scripting-xss-attacks.html',
50
+ 'https://www.hackingloops.com/what-is-stored-cross-site-scripting-or-stored-xss/',
51
+ 'https://www.acunetix.com/websitesecurity/xss/'
52
+ ]
53
+ puts Lacewing::PROMPT + 'Here are some references for Stored XSS'
54
+ ref.each { |i| puts "\t#{i}" }
55
+ when xss_types[2]
56
+ ref = [
57
+ 'https://www.owasp.org/index.php/DOM_Based_XSS',
58
+ 'https://www.netsparker.com/blog/web-security/dom-based-cross-site-scripting-vulnerability/',
59
+ 'https://en.wikipedia.org/wiki/Cross-site_scripting#Server-side_versus_DOM-based_vulnerabilities'
60
+ ]
61
+ puts Lacewing::PROMPT + 'Here are some references for DOM-based XSS'
62
+ ref.each { |i| puts "\t#{i}" }
63
+ end
64
+ puts 'Press any key to continue... '.bold.green
65
+ return if STDIN.getch
66
+ end
67
+
68
+ def self.code_injection
69
+ puts 'Code Injection - An attack to inject code into a vulnerable computer program to change the course of execution.'.bold.green
70
+ puts Lacewing::PROMPT + 'Here are some references for different kinds of code injection vulnerabilities'
71
+ ref = [
72
+ 'Shell Injection - https://en.wikipedia.org/wiki/Code_injection#Shell_injection',
73
+ 'HTML Injection - https://en.wikipedia.org/wiki/Code_injection#HTML_script_injection',
74
+ 'https://en.wikipedia.org/wiki/Code_injection#Object_injection'
75
+ ]
76
+ ref.each { |i| puts "\t#{i}" }
77
+
78
+ puts 'Press any key to continue...'.bold.green
79
+ return if STDIN.getch
80
+ end
81
+
82
+ def self.reverse_shell
83
+ puts 'Reverse Shell - The act of redirecting the input and output of a shell to a service so that it can be remotely accessed'.bold.green
84
+ puts Lacewing::PROMPT + "If you've found some sort of code injection vulnerability, you can use a reverse shell to get full access"
85
+ puts Lacewing::PROMPT + 'Here are a few great tools to exploit a reverse shell:'
86
+ tools = [
87
+ 'Shell.now - https://shell.now.sh/',
88
+ 'Metasploit - https://metasploit.com',
89
+ 'Turtle - https://github.com/buckyroberts/Turtle'
90
+ ]
91
+ tools.each { |i| puts "\t#{i}" }
92
+ puts 'Press any key to continue...'.bold.green
93
+ return if STDIN.getch
94
+ end
95
+
96
+ def self.sqli
97
+ puts 'SQL Injection - An attack in which nefarious SQL statements are inserted into an entry field for execution'.bold.green
98
+ puts Lacewing::PROMPT + 'Here are some tools for exploiting SQL injections:'
99
+ tools = [
100
+ 'SQLMap - https://github.com/sqlmapproject/sqlmap',
101
+ 'BBQSQL - https://github.com/Neohapsis/bbqsql/',
102
+ 'SQLNinja - https://github.com/xxgrunge/sqlninja'
103
+ ]
104
+ tools.each { |i| puts "\t#{i}" }
105
+
106
+ puts Lacewing::PROMPT + 'Here are some articles on SQL Injection:'
107
+ ref = [
108
+ 'https://en.wikipedia.org/wiki/SQL_injection',
109
+ 'https://technet.microsoft.com/en-us/library/ms161953(v=sql.105).aspx',
110
+ 'https://www.veracode.com/security/sql-injection'
111
+ ]
112
+ ref.each { |i| puts "\t#{i}" }
113
+
114
+ puts 'Press any key to continue...'.bold.green
115
+ return if STDIN.getch
116
+ end
117
+
118
+ end
119
+ end
@@ -0,0 +1,32 @@
1
+ module Lacewing
2
+ class Scans
3
+ def self.subdomains
4
+ return unless $prompt.yes?(Lacewing::PROMPT + 'Do you want to find subdomains?')
5
+ puts Lacewing::PROMPT + "Here are a few places you can get #{'subdomains'.bold}:"
6
+ places = ["https://www.virustotal.com/#/domain/#{$target.gsub('http://', '')}", 'https://dnsdumpster.com/', 'https://pentest-tools.com/information-gathering/find-subdomains-of-domain']
7
+
8
+ places.each { |i| puts "\t#{i}" }
9
+
10
+ if $prompt.yes?(Lacewing::PROMPT + 'Would you like to open one of these in a browser?')
11
+ url = $prompt.select('Which one?', places)
12
+ system("open \"#{url}\"")
13
+ end
14
+ end
15
+
16
+ def self.nmap
17
+ puts Lacewing::PROMPT + 'Here are some nmap scans to get info on ' + $target
18
+ scans = ["nmap -p 1-65535 -sV -sS -T4 \"#{$target}\"", "nmap -v -sS -A -T4 \"#{$target}\"", "nmap -v -Pn -sS -sV --version-light \"#{$target}\""]
19
+ scans.each { |i| puts "\t#{i}" }
20
+ if $prompt.yes?(Lacewing::PROMPT + 'Would you like to execute one of these? (nmap required)')
21
+ if `which nmap`.empty?
22
+ puts Lacewing::PROMPT + 'nmap is not installed. Skipping...'.red
23
+ else
24
+ cmd = $prompt.select('Which one?', scans)
25
+ system(cmd)
26
+ end
27
+ end
28
+ end
29
+
30
+ end # Scans
31
+ end # Lacewing
32
+
@@ -0,0 +1,3 @@
1
+ module Lacewing
2
+ VERSION = "0.1.0"
3
+ end
data/tools/.keep ADDED
File without changes
metadata ADDED
@@ -0,0 +1,203 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lacewing
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - cbrnrd
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-04-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: trollop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: tty-prompt
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.16.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.16.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: colorize
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.8.1
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.8.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: rex-text
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.2.18
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.2.18
111
+ - !ruby/object:Gem::Dependency
112
+ name: rex-socket
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 0.1.14
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 0.1.14
125
+ - !ruby/object:Gem::Dependency
126
+ name: http
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.0'
139
+ description: Lacewing is a tool to assist you in your bug bounty adventures.
140
+ email:
141
+ - cbawsome77@gmail.com
142
+ executables:
143
+ - lacewing
144
+ extensions: []
145
+ extra_rdoc_files: []
146
+ files:
147
+ - ".gitignore"
148
+ - ".idea/.rakeTasks"
149
+ - ".idea/codeStyles/Project.xml"
150
+ - ".idea/dbnavigator.xml"
151
+ - ".idea/lacewing.iml"
152
+ - ".idea/misc.xml"
153
+ - ".idea/modules.xml"
154
+ - ".idea/vcs.xml"
155
+ - ".idea/workspace.xml"
156
+ - ".rspec"
157
+ - ".rubocop.yml"
158
+ - ".travis.yml"
159
+ - CODE_OF_CONDUCT.md
160
+ - Gemfile
161
+ - Gemfile.lock
162
+ - LICENSE.txt
163
+ - README.md
164
+ - Rakefile
165
+ - bin/console
166
+ - bin/setup
167
+ - exe/lacewing
168
+ - img/logo.png
169
+ - img/text-gradient.png
170
+ - lacewing.gemspec
171
+ - lib/lacewing.rb
172
+ - lib/lacewing/cli.rb
173
+ - lib/lacewing/constants.rb
174
+ - lib/lacewing/core.rb
175
+ - lib/lacewing/exploits.rb
176
+ - lib/lacewing/scans.rb
177
+ - lib/lacewing/version.rb
178
+ - tools/.keep
179
+ homepage: https://github.com/cbrnrd/lacewing
180
+ licenses:
181
+ - MIT
182
+ metadata: {}
183
+ post_install_message:
184
+ rdoc_options: []
185
+ require_paths:
186
+ - lib
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ required_rubygems_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ requirements: []
198
+ rubyforge_project:
199
+ rubygems_version: 2.5.2
200
+ signing_key:
201
+ specification_version: 4
202
+ summary: "\U0001F997 Your neighborhood bug bounty assistant"
203
+ test_files: []