pwn 0.4.774 → 0.4.776
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 +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
|
[](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
|