pwn 0.4.774 → 0.4.776
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/README.md +2 -2
- data/bin/pwn_jenkins_create_job +9 -9
- data/bin/pwn_jenkins_create_view +9 -9
- data/bin/pwn_jenkins_install_plugin +9 -9
- data/bin/pwn_jenkins_update_plugins +9 -9
- data/bin/pwn_jenkins_useradd +9 -9
- data/lib/pwn/plugins/jenkins.rb +16 -16
- data/lib/pwn/version.rb +1 -1
- data/packer/provisioners/jenkins.sh +9 -4
- data/vagrant/provisioners/jenkins.sh +13 -13
- data/vagrant/provisioners/jenkins_ssh-keygen.rb +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07ff1671592d8e854bb0f495bd1cbc1a285de652ea1548b5794d45ca39d5ef77
|
4
|
+
data.tar.gz: 5926108a739137b599a4ba2db1b5c713d2b3bf3efb3edacb7d0076b4c4b168c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1bd4834110a6f97787c86e8452a2569883aab04447d3900f29ca68faf6a0946799a82bcaa8db447ea8d89e1453fa73a50b45ef2c030b5dd0840c3b8adce728c
|
7
|
+
data.tar.gz: dcb5d740052ecedaac46fa496e1ee13414dfe85090fc0f66ba3c28d6a0f362efc2096ae43d021f0da22b2b1a177d79bbc4bd2878b2e3784894b2354e20ee0f0a
|
data/Gemfile
CHANGED
@@ -11,14 +11,14 @@ gemspec
|
|
11
11
|
# In some circumstances custom flags are passed to gems in order
|
12
12
|
# to build appropriately. Defer to ./reinstall_pwn_gemset.sh
|
13
13
|
# to review these custom flags (e.g. pg, serialport, etc).
|
14
|
-
gem 'activesupport', '7.0.
|
14
|
+
gem 'activesupport', '7.0.6'
|
15
15
|
gem 'anemone', '0.7.2'
|
16
16
|
gem 'authy', '3.0.1'
|
17
17
|
gem 'aws-sdk', '3.1.0'
|
18
18
|
# gem 'bettercap', '1.6.2'
|
19
19
|
gem 'brakeman', '6.0.0'
|
20
20
|
gem 'bson', '4.15.0'
|
21
|
-
gem 'bundler', '>=2.4.
|
21
|
+
gem 'bundler', '>=2.4.15'
|
22
22
|
gem 'bundler-audit', '0.9.1'
|
23
23
|
gem 'bunny', '2.22.0'
|
24
24
|
gem 'colorize', '1.1.0'
|
data/README.md
CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.2.2@pwn
|
|
37
37
|
$ rvm list gemsets
|
38
38
|
$ gem install --verbose pwn
|
39
39
|
$ pwn
|
40
|
-
pwn[v0.4.
|
40
|
+
pwn[v0.4.776]:001 >>> PWN.help
|
41
41
|
```
|
42
42
|
|
43
43
|
[![Installing the pwn Security Automation Framework](https://raw.githubusercontent.com/0dayInc/pwn/master/documentation/pwn_install.png)](https://youtu.be/G7iLUY4FzsI)
|
@@ -52,7 +52,7 @@ $ rvm use ruby-3.2.2@pwn
|
|
52
52
|
$ gem uninstall --all --executables pwn
|
53
53
|
$ gem install --verbose pwn
|
54
54
|
$ pwn
|
55
|
-
pwn[v0.4.
|
55
|
+
pwn[v0.4.776]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
data/bin/pwn_jenkins_create_job
CHANGED
@@ -10,7 +10,7 @@ OptionParser.new do |options|
|
|
10
10
|
#{$PROGRAM_NAME} [opts]
|
11
11
|
"
|
12
12
|
|
13
|
-
options.on('-sIP', '--
|
13
|
+
options.on('-sIP', '--ip=IP', '<Required - Jenkins Server IP>') { |s| opts[:ip] = s }
|
14
14
|
|
15
15
|
options.on('-dPORT', '--dest-port=PORT', '<Optional - Jenkins Server Port (Defaults to 8080)>') do |port|
|
16
16
|
opts[:port] = port
|
@@ -20,8 +20,8 @@ OptionParser.new do |options|
|
|
20
20
|
opts[:username] = user
|
21
21
|
end
|
22
22
|
|
23
|
-
options.on('-
|
24
|
-
opts[:
|
23
|
+
options.on('-PKEY', '--api-key=KEY', '<Optional - Jenkins API Key (Will Prompt if Flag Undetected)>') do |api_key|
|
24
|
+
opts[:api_key] = api_key
|
25
25
|
end
|
26
26
|
|
27
27
|
options.on('-jNAME', '--job-name=NAME', '<Required - Name of Job to Create>') do |job|
|
@@ -38,25 +38,25 @@ if opts.empty?
|
|
38
38
|
exit 1
|
39
39
|
end
|
40
40
|
|
41
|
-
|
41
|
+
ip = opts[:ip].to_s.scrub
|
42
42
|
port = opts[:port].to_i
|
43
43
|
username = opts[:username]
|
44
|
-
|
44
|
+
api_key = opts[:api_key]
|
45
45
|
job_name = opts[:job_name].to_s.scrub
|
46
46
|
config_xml = File.read(opts[:config_xml]) if File.exist?(opts[:config_xml])
|
47
47
|
|
48
48
|
if port.positive?
|
49
49
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
50
|
-
|
50
|
+
ip: ip,
|
51
51
|
port: port,
|
52
52
|
username: username,
|
53
|
-
|
53
|
+
api_key: api_key
|
54
54
|
)
|
55
55
|
else
|
56
56
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
57
|
-
|
57
|
+
ip: ip,
|
58
58
|
username: username,
|
59
|
-
|
59
|
+
api_key: api_key
|
60
60
|
)
|
61
61
|
end
|
62
62
|
|
data/bin/pwn_jenkins_create_view
CHANGED
@@ -10,7 +10,7 @@ OptionParser.new do |options|
|
|
10
10
|
#{$PROGRAM_NAME} [opts]
|
11
11
|
"
|
12
12
|
|
13
|
-
options.on('-sIP', '--
|
13
|
+
options.on('-sIP', '--ip=IP', '<Required - Jenkins Server IP>') { |s| opts[:ip] = s }
|
14
14
|
|
15
15
|
options.on('-dPORT', '--dest-port=PORT', '<Optional - Jenkins Server Port (Defaults to 8080)>') do |port|
|
16
16
|
opts[:port] = port
|
@@ -20,8 +20,8 @@ OptionParser.new do |options|
|
|
20
20
|
opts[:username] = user
|
21
21
|
end
|
22
22
|
|
23
|
-
options.on('-
|
24
|
-
opts[:
|
23
|
+
options.on('-PKEY', '--api-key=KEY', '<Required - Jenkins API Key>') do |api_key|
|
24
|
+
opts[:api_key] = api_key
|
25
25
|
end
|
26
26
|
|
27
27
|
options.on('-vVIEW', '--view-name=VIEW', '<Required - View Name to Create>') do |view_name|
|
@@ -38,25 +38,25 @@ if opts.empty?
|
|
38
38
|
exit 1
|
39
39
|
end
|
40
40
|
|
41
|
-
|
41
|
+
ip = opts[:ip].to_s.scrub
|
42
42
|
port = opts[:port].to_i
|
43
43
|
username = opts[:username]
|
44
|
-
|
44
|
+
api_key = opts[:api_key]
|
45
45
|
view_name = opts[:view_name].to_s.chomp.strip.scrub
|
46
46
|
regex_filter = opts[:regex_filter].to_s.chomp.strip.scrub
|
47
47
|
|
48
48
|
if port.positive?
|
49
49
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
50
|
-
|
50
|
+
ip: ip,
|
51
51
|
port: port,
|
52
52
|
username: username,
|
53
|
-
|
53
|
+
api_key: api_key
|
54
54
|
)
|
55
55
|
else
|
56
56
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
57
|
-
|
57
|
+
ip: ip,
|
58
58
|
username: username,
|
59
|
-
|
59
|
+
api_key: api_key
|
60
60
|
)
|
61
61
|
end
|
62
62
|
|
@@ -10,7 +10,7 @@ OptionParser.new do |options|
|
|
10
10
|
#{$PROGRAM_NAME} [opts]
|
11
11
|
"
|
12
12
|
|
13
|
-
options.on('-sIP', '--
|
13
|
+
options.on('-sIP', '--ip=IP', '<Required - Jenkins Server IP>') { |s| opts[:ip] = s }
|
14
14
|
|
15
15
|
options.on('-dPORT', '--dest-port=PORT', '<Optional - Jenkins Server Port (Defaults to 8080)>') do |port|
|
16
16
|
opts[:port] = port
|
@@ -20,8 +20,8 @@ OptionParser.new do |options|
|
|
20
20
|
opts[:username] = user
|
21
21
|
end
|
22
22
|
|
23
|
-
options.on('-
|
24
|
-
opts[:
|
23
|
+
options.on('-PKEY', '--api-key=KEY', '<Required - Jenkins API Key>') do |api_key|
|
24
|
+
opts[:api_key] = api_key
|
25
25
|
end
|
26
26
|
|
27
27
|
options.on('-pPLUGIN', '--plugin=PLUGIN', '<Required - Comma-Delimited List of Jenkins Plugins to Install>') do |plugins|
|
@@ -42,10 +42,10 @@ if opts.empty?
|
|
42
42
|
exit 1
|
43
43
|
end
|
44
44
|
|
45
|
-
|
45
|
+
ip = opts[:ip].to_s.scrub
|
46
46
|
port = opts[:port].to_i
|
47
47
|
username = opts[:username]
|
48
|
-
|
48
|
+
api_key = opts[:api_key]
|
49
49
|
plugins = opts[:plugins].to_s.scrub
|
50
50
|
list_available_bool = if opts[:list_available_bool]
|
51
51
|
true
|
@@ -57,16 +57,16 @@ restart_jenkins = opts[:restart_jenkins].nil?
|
|
57
57
|
|
58
58
|
if port.positive?
|
59
59
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
60
|
-
|
60
|
+
ip: ip,
|
61
61
|
port: port,
|
62
62
|
username: username,
|
63
|
-
|
63
|
+
api_key: api_key
|
64
64
|
)
|
65
65
|
else
|
66
66
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
67
|
-
|
67
|
+
ip: ip,
|
68
68
|
username: username,
|
69
|
-
|
69
|
+
api_key: api_key
|
70
70
|
)
|
71
71
|
end
|
72
72
|
|
@@ -10,7 +10,7 @@ OptionParser.new do |options|
|
|
10
10
|
#{$PROGRAM_NAME} [opts]
|
11
11
|
"
|
12
12
|
|
13
|
-
options.on('-sIP', '--
|
13
|
+
options.on('-sIP', '--ip=IP', '<Required - Jenkins Server IP>') { |s| opts[:ip] = s }
|
14
14
|
|
15
15
|
options.on('-dPORT', '--dest-port=PORT', '<Optional - Jenkins Server Port (Defaults to 8080)>') do |port|
|
16
16
|
opts[:port] = port
|
@@ -20,8 +20,8 @@ OptionParser.new do |options|
|
|
20
20
|
opts[:username] = user
|
21
21
|
end
|
22
22
|
|
23
|
-
options.on('-
|
24
|
-
opts[:
|
23
|
+
options.on('-PKEY', '--api-key=KEY', '<Required - Jenkins API Key>') do |api_key|
|
24
|
+
opts[:api_key] = api_key
|
25
25
|
end
|
26
26
|
|
27
27
|
options.on('-pPLUGIN', '--plugin-name=PLUGIN', '<Optional - Update Specific Plugin>') do |plugin_name|
|
@@ -42,10 +42,10 @@ if opts.empty?
|
|
42
42
|
exit 1
|
43
43
|
end
|
44
44
|
|
45
|
-
|
45
|
+
ip = opts[:ip].to_s.scrub
|
46
46
|
port = opts[:port].to_i
|
47
47
|
username = opts[:username]
|
48
|
-
|
48
|
+
api_key = opts[:api_key]
|
49
49
|
plugin_name = opts[:plugin_name]
|
50
50
|
list_updates_bool = if opts[:list_updates_bool]
|
51
51
|
true
|
@@ -57,16 +57,16 @@ restart_jenkins = opts[:restart_jenkins].nil?
|
|
57
57
|
|
58
58
|
if port.positive?
|
59
59
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
60
|
-
|
60
|
+
ip: ip,
|
61
61
|
port: port,
|
62
62
|
username: username,
|
63
|
-
|
63
|
+
api_key: api_key
|
64
64
|
)
|
65
65
|
else
|
66
66
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
67
|
-
|
67
|
+
ip: ip,
|
68
68
|
username: username,
|
69
|
-
|
69
|
+
api_key: api_key
|
70
70
|
)
|
71
71
|
end
|
72
72
|
|
data/bin/pwn_jenkins_useradd
CHANGED
@@ -10,7 +10,7 @@ OptionParser.new do |options|
|
|
10
10
|
#{$PROGRAM_NAME} [opts]
|
11
11
|
"
|
12
12
|
|
13
|
-
options.on('-sIP', '--
|
13
|
+
options.on('-sIP', '--ip=IP', '<Required - Jenkins Server IP>') { |s| opts[:ip] = s }
|
14
14
|
|
15
15
|
options.on('-dPORT', '--dest-port=PORT', '<Optional - Jenkins Server Port (Defaults to 8080)>') do |port|
|
16
16
|
opts[:port] = port
|
@@ -20,8 +20,8 @@ OptionParser.new do |options|
|
|
20
20
|
opts[:admin_username] = auser
|
21
21
|
end
|
22
22
|
|
23
|
-
options.on('-
|
24
|
-
opts[:
|
23
|
+
options.on('-PKEY', '--admin-password=KEY', '<Required - Jenkins Admin API Key>') do |akey|
|
24
|
+
opts[:admin_api_key] = akey
|
25
25
|
end
|
26
26
|
|
27
27
|
options.on('-uNUSER', '--new-username=NUSER', '<Required - Jenkins Username to Create>') do |nuser|
|
@@ -46,11 +46,11 @@ if opts.empty?
|
|
46
46
|
exit 1
|
47
47
|
end
|
48
48
|
|
49
|
-
|
49
|
+
ip = opts[:ip].to_s.scrub
|
50
50
|
port = opts[:port].to_i
|
51
51
|
|
52
52
|
admin_username = opts[:admin_username]
|
53
|
-
|
53
|
+
admin_api_key = opts[:admin_api_key]
|
54
54
|
|
55
55
|
new_username = opts[:new_username]
|
56
56
|
new_password = opts[:new_password]
|
@@ -59,16 +59,16 @@ new_email = opts[:new_email]
|
|
59
59
|
|
60
60
|
if port.positive?
|
61
61
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
62
|
-
|
62
|
+
ip: ip,
|
63
63
|
port: port,
|
64
64
|
username: admin_username,
|
65
|
-
|
65
|
+
api_key: admin_api_key
|
66
66
|
)
|
67
67
|
else
|
68
68
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
69
|
-
|
69
|
+
ip: ip,
|
70
70
|
username: admin_username,
|
71
|
-
|
71
|
+
api_key: admin_api_key
|
72
72
|
)
|
73
73
|
end
|
74
74
|
|
data/lib/pwn/plugins/jenkins.rb
CHANGED
@@ -12,25 +12,25 @@ module PWN
|
|
12
12
|
|
13
13
|
# Supported Method Parameters::
|
14
14
|
# PWN::Plugins::Jenkins.connect(
|
15
|
-
#
|
15
|
+
# ip: 'required host/ip of Jenkins Server',
|
16
16
|
# port: 'optional tcp port (defaults to 8080),
|
17
17
|
# username: 'optional username (functionality will be limited if ommitted)',
|
18
|
-
#
|
19
|
-
# identity_file: 'optional ssh private key path to AuthN w/ Jenkins PREFERRED over username/
|
18
|
+
# api_key: 'optional api_key (functionality will be limited if ommitted)'
|
19
|
+
# identity_file: 'optional ssh private key path to AuthN w/ Jenkins PREFERRED over username/api_key',
|
20
20
|
# ssl: 'optional connect over TLS (defaults to true),
|
21
21
|
# proxy: 'optional debug proxy rest api requests to jenkins (e.g. "http://127.0.0.1:8080")''
|
22
22
|
# )
|
23
23
|
|
24
24
|
public_class_method def self.connect(opts = {})
|
25
|
-
|
25
|
+
ip = opts[:ip]
|
26
26
|
port = if opts[:port]
|
27
27
|
opts[:port].to_i
|
28
28
|
else
|
29
29
|
8080
|
30
30
|
end
|
31
31
|
username = opts[:username].to_s.scrub
|
32
|
-
base_jenkins_api_uri = "https://#{
|
33
|
-
|
32
|
+
base_jenkins_api_uri = "https://#{ip}/ase/services".to_s.scrub
|
33
|
+
api_key = opts[:api_key].to_s.scrub
|
34
34
|
identity_file = opts[:identity_file].to_s.scrub
|
35
35
|
ssl_bool = if opts[:ssl] == true
|
36
36
|
opts[:ssl]
|
@@ -45,11 +45,11 @@ module PWN
|
|
45
45
|
proxy_port = proxy.port
|
46
46
|
end
|
47
47
|
|
48
|
-
@@logger.info("Logging into Jenkins Server: #{
|
49
|
-
if username == '' &&
|
48
|
+
@@logger.info("Logging into Jenkins Server: #{ip}")
|
49
|
+
if username == '' && api_key == ''
|
50
50
|
if identity_file == ''
|
51
51
|
jenkins_obj = JenkinsApi::Client.new(
|
52
|
-
server_ip:
|
52
|
+
server_ip: ip,
|
53
53
|
server_port: port,
|
54
54
|
follow_redirects: true,
|
55
55
|
ssl: ssl_bool,
|
@@ -59,7 +59,7 @@ module PWN
|
|
59
59
|
)
|
60
60
|
else
|
61
61
|
jenkins_obj = JenkinsApi::Client.new(
|
62
|
-
server_ip:
|
62
|
+
server_ip: ip,
|
63
63
|
server_port: port,
|
64
64
|
identity_file: identity_file,
|
65
65
|
follow_redirects: true,
|
@@ -70,12 +70,12 @@ module PWN
|
|
70
70
|
)
|
71
71
|
end
|
72
72
|
else
|
73
|
-
|
73
|
+
api_key = PWN::Plugins::AuthenticationHelper.mask_password if api_key == ''
|
74
74
|
jenkins_obj = JenkinsApi::Client.new(
|
75
|
-
server_ip:
|
75
|
+
server_ip: ip,
|
76
76
|
server_port: port,
|
77
77
|
username: username,
|
78
|
-
|
78
|
+
api_key: api_key,
|
79
79
|
follow_redirects: true,
|
80
80
|
ssl: ssl_bool,
|
81
81
|
proxy_protocol: proxy_protocol,
|
@@ -452,11 +452,11 @@ module PWN
|
|
452
452
|
public_class_method def self.help
|
453
453
|
puts %{USAGE:
|
454
454
|
jenkins_obj = #{self}.connect(
|
455
|
-
|
455
|
+
ip: 'required host/ip of Jenkins Server',
|
456
456
|
port: 'optional tcp port (defaults to 8080),
|
457
457
|
username: 'optional username (functionality will be limited if ommitted)',
|
458
|
-
|
459
|
-
identity_file: 'optional ssh private key path to AuthN w/ Jenkins PREFERRED over username/
|
458
|
+
api_key: 'optional api_key (functionality will be limited if ommitted)',
|
459
|
+
identity_file: 'optional ssh private key path to AuthN w/ Jenkins PREFERRED over username/api_key',
|
460
460
|
ssl: 'optional connect over TLS (defaults to true),
|
461
461
|
proxy: 'optional debug proxy rest api requests to jenkins (e.g. "http://127.0.0.1:8080")''
|
462
462
|
)
|
data/lib/pwn/version.rb
CHANGED
@@ -20,7 +20,12 @@ rvm use ruby-$ruby_version@pwn
|
|
20
20
|
|
21
21
|
printf "Installing Jenkins ********************************************************************"
|
22
22
|
domain_name=`hostname -d`
|
23
|
-
|
23
|
+
curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee \
|
24
|
+
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
|
25
|
+
|
26
|
+
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
|
27
|
+
https://pkg.jenkins.io/debian binary/ | sudo tee \
|
28
|
+
/etc/apt/sources.list.d/jenkins.list > /dev/null
|
24
29
|
|
25
30
|
# Get back to a Java version Jenkins supports
|
26
31
|
sudo ln -sf /usr/lib/jvm/java-11-openjdk-amd64/bin/java /etc/alternatives/java
|
@@ -51,12 +56,12 @@ echo "JENKINS Initial Admin: ${initial_admin_pwd}"
|
|
51
56
|
|
52
57
|
# TODO: Get this working
|
53
58
|
# printf "Updating Pre-Installed Jenkins Plugins ************************************************"
|
54
|
-
# pwn_jenkins_update_plugins --
|
59
|
+
# pwn_jenkins_update_plugins --ip 127.0.0.1 -U admin --api-key $initial_admin_pwd --no-restart-jenkins
|
55
60
|
|
56
61
|
printf "Installing Necessary Jenkins Plugins **************************************************"
|
57
|
-
pwn_jenkins_install_plugin --
|
62
|
+
pwn_jenkins_install_plugin --ip 127.0.0.1 \
|
58
63
|
-d 8888 \
|
59
64
|
-U admin \
|
60
|
-
-
|
65
|
+
--api-key $initial_admin_pwd \
|
61
66
|
--no-restart-jenkins \
|
62
67
|
-p "ace-editor, analysis-core, ansicolor, ant, antisamy-markup-formatter, apache-httpcomponents-client-4-api, bouncycastle-api, build-pipeline-plugin, bulk-builder, command-launcher, conditional-buildstep, credentials, dashboard-view, dependency-check-jenkins-plugin, dependency-track, display-url-api, external-monitor-job, git, git-client, handlebars, htmlpublisher, jackson2-api, javadoc, jdk-tool, jquery, jquery-detached, jquery-ui, jsch, junit, ldap, log-parser, mailer, matrix-auth, matrix-project, maven-plugin, momentjs, nested-view, pam-auth, parameterized-trigger, pipeline-build-step, pipeline-graph-analysis, pipeline-input-step, pipeline-rest-api, pipeline-stage-step, pipeline-stage-view, plain-credentials, purge-build-queue-plugin, role-strategy, run-condition, scm-api, script-security, slack, ssh-agent, ssh-credentials, ssh-slaves, structs, token-macro, windows-slaves, workflow-api, workflow-cps, workflow-job, workflow-scm-step, workflow-step-api, workflow-support"
|
@@ -26,17 +26,17 @@ new_pass=`ruby -e "require 'yaml'; print YAML.load_file('${jenkins_vagrant_yaml}
|
|
26
26
|
new_fullname=`ruby -e "require 'yaml'; print YAML.load_file('${jenkins_vagrant_yaml}')['fullname']"`
|
27
27
|
new_email=`ruby -e "require 'yaml'; print YAML.load_file('${jenkins_vagrant_yaml}')['email']"`
|
28
28
|
|
29
|
-
pwn_jenkins_useradd -s 127.0.0.1 -d 8888 -u $new_user -p $new_pass -U admin -
|
29
|
+
pwn_jenkins_useradd -s 127.0.0.1 -d 8888 -u $new_user -p $new_pass -U admin --api-key $initial_admin_pwd -e $new_email
|
30
30
|
|
31
31
|
# Begin Creating Self-Update Jobs in Jenkins and Template-Based Jobs to Describe how to Intgrate PWN into Jenkins
|
32
32
|
printf "Creating Self-Update and PWN-Template Jobs ********************************************"
|
33
33
|
ls $jenkins_userland_root/jobs/*.xml | while read jenkins_xml_config; do
|
34
34
|
file_name=`basename $jenkins_xml_config`
|
35
35
|
job_name=${file_name%.*}
|
36
|
-
pwn_jenkins_create_job --
|
36
|
+
pwn_jenkins_create_job --ip 127.0.0.1 \
|
37
37
|
-d 8888 \
|
38
38
|
-U admin \
|
39
|
-
-
|
39
|
+
--api-key $initial_admin_pwd \
|
40
40
|
-j $job_name \
|
41
41
|
-c $jenkins_xml_config
|
42
42
|
done
|
@@ -48,40 +48,40 @@ if [[ $? == 0 ]]; then
|
|
48
48
|
ls $jenkins_userland_root/jobs_userland/*.xml | while read jenkins_xml_config; do
|
49
49
|
file_name=`basename $jenkins_xml_config`
|
50
50
|
job_name=${file_name%.*}
|
51
|
-
pwn_jenkins_create_job --
|
51
|
+
pwn_jenkins_create_job --ip 127.0.0.1 \
|
52
52
|
-d 8888 \
|
53
53
|
-U admin \
|
54
|
-
-
|
54
|
+
--api-key $initial_admin_pwd \
|
55
55
|
-j $job_name \
|
56
56
|
-c $jenkins_xml_config
|
57
57
|
done
|
58
58
|
fi
|
59
59
|
|
60
60
|
printf "Creating Jenkins Views ****************************************************************"
|
61
|
-
pwn_jenkins_create_view --
|
61
|
+
pwn_jenkins_create_view --ip 127.0.0.1 \
|
62
62
|
-d 8888 \
|
63
63
|
-U admin \
|
64
|
-
-
|
64
|
+
--api-key $initial_admin_pwd \
|
65
65
|
-v 'PWN-Templates' \
|
66
66
|
-r '^pwntemplate-.+$'
|
67
67
|
|
68
|
-
pwn_jenkins_create_view --
|
68
|
+
pwn_jenkins_create_view --ip 127.0.0.1 \
|
69
69
|
-d 8888 \
|
70
70
|
-U admin \
|
71
|
-
-
|
71
|
+
--api-key $initial_admin_pwd \
|
72
72
|
-v 'Self-Update' \
|
73
73
|
-r '^selfupdate-.+$'
|
74
74
|
|
75
|
-
pwn_jenkins_create_view --
|
75
|
+
pwn_jenkins_create_view --ip 127.0.0.1 \
|
76
76
|
-d 8888 \
|
77
77
|
-U admin \
|
78
|
-
-
|
78
|
+
--api-key $initial_admin_pwd \
|
79
79
|
-v 'Pipeline' \
|
80
80
|
-r '^pipeline-.+$'
|
81
81
|
|
82
|
-
pwn_jenkins_create_view --
|
82
|
+
pwn_jenkins_create_view --ip 127.0.0.1 \
|
83
83
|
-d 8888 \
|
84
84
|
-U admin \
|
85
|
-
-
|
85
|
+
--api-key $initial_admin_pwd \
|
86
86
|
-v 'User-Land' \
|
87
87
|
-r '^userland-.+$'
|
@@ -43,10 +43,10 @@ puts `
|
|
43
43
|
|
44
44
|
# TODO: Create Jenkins SSH Credentials for all hosts referenced in vagrant.yaml (User-Land Config)
|
45
45
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
46
|
-
|
46
|
+
ip: '127.0.0.1',
|
47
47
|
port: 8888,
|
48
48
|
username: userland_user,
|
49
|
-
|
49
|
+
api_key: userland_pass
|
50
50
|
)
|
51
51
|
|
52
52
|
if jenkins_userland_config.include?('jenkins_job_credentials') &&
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pwn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.776
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 0day Inc.
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 7.0.
|
19
|
+
version: 7.0.6
|
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: 7.0.
|
26
|
+
version: 7.0.6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: anemone
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 2.4.
|
103
|
+
version: 2.4.15
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 2.4.
|
110
|
+
version: 2.4.15
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: bundler-audit
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -2155,7 +2155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
2155
2155
|
- !ruby/object:Gem::Version
|
2156
2156
|
version: '0'
|
2157
2157
|
requirements: []
|
2158
|
-
rubygems_version: 3.4.
|
2158
|
+
rubygems_version: 3.4.15
|
2159
2159
|
signing_key:
|
2160
2160
|
specification_version: 4
|
2161
2161
|
summary: Automated Security Testing for CI/CD Pipelines & Beyond
|