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.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.idea/.rakeTasks +7 -0
- data/.idea/codeStyles/Project.xml +28 -0
- data/.idea/dbnavigator.xml +450 -0
- data/.idea/lacewing.iml +46 -0
- data/.idea/misc.xml +4 -0
- data/.idea/modules.xml +8 -0
- data/.idea/vcs.xml +6 -0
- data/.idea/workspace.xml +547 -0
- data/.rspec +3 -0
- data/.rubocop.yml +5 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +91 -0
- data/LICENSE.txt +21 -0
- data/README.md +48 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/lacewing +29 -0
- data/img/logo.png +0 -0
- data/img/text-gradient.png +0 -0
- data/lacewing.gemspec +35 -0
- data/lib/lacewing.rb +1 -0
- data/lib/lacewing/cli.rb +48 -0
- data/lib/lacewing/constants.rb +7 -0
- data/lib/lacewing/core.rb +10 -0
- data/lib/lacewing/exploits.rb +119 -0
- data/lib/lacewing/scans.rb +32 -0
- data/lib/lacewing/version.rb +3 -0
- data/tools/.keep +0 -0
- metadata +203 -0
@@ -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
|
+
|
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: []
|