pwn 0.4.774 → 0.4.775
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 +4 -4
- data/bin/pwn_jenkins_create_view +4 -4
- data/bin/pwn_jenkins_install_plugin +4 -4
- data/bin/pwn_jenkins_update_plugins +4 -4
- data/bin/pwn_jenkins_useradd +4 -4
- data/lib/pwn/plugins/jenkins.rb +8 -8
- data/lib/pwn/version.rb +1 -1
- data/packer/provisioners/jenkins.sh +9 -4
- data/vagrant/provisioners/jenkins.sh +6 -6
- data/vagrant/provisioners/jenkins_ssh-keygen.rb +1 -1
- 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: c10eec4ac3e1712691c0031a5883fc2a2e11398748f1823a8d49b6b210e50aff
|
4
|
+
data.tar.gz: 289ca6ece7d3ae829aba16e87e8515e89a1e21e1bbdd2e9eef1aa3b631200f63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0ac4410338cc0601beca35c142484a4bfadd7ea197b23e24338bd68e8f989c1e233a03d80a26e6dd35ac8169e7053fa039d259a7416bb2037280bff200d6908
|
7
|
+
data.tar.gz: a6289daeb468bf6255fb3594bf43c7fe61e7cb3c009d6b68ef19105675ed6f3e90466a3360b6632ee7709100ef8bd1dbd0c65fe8389c8e84baaf05cbfffb3f63
|
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.775]: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.775]: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
|
@@ -38,7 +38,7 @@ 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
|
password = opts[:password]
|
@@ -47,14 +47,14 @@ 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
|
password: password
|
54
54
|
)
|
55
55
|
else
|
56
56
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
57
|
-
|
57
|
+
ip: ip,
|
58
58
|
username: username,
|
59
59
|
password: password
|
60
60
|
)
|
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
|
@@ -38,7 +38,7 @@ 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
|
password = opts[:password]
|
@@ -47,14 +47,14 @@ 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
|
password: password
|
54
54
|
)
|
55
55
|
else
|
56
56
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
57
|
-
|
57
|
+
ip: ip,
|
58
58
|
username: username,
|
59
59
|
password: password
|
60
60
|
)
|
@@ -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
|
@@ -42,7 +42,7 @@ 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
|
password = opts[:password]
|
@@ -57,14 +57,14 @@ 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
|
password: password
|
64
64
|
)
|
65
65
|
else
|
66
66
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
67
|
-
|
67
|
+
ip: ip,
|
68
68
|
username: username,
|
69
69
|
password: password
|
70
70
|
)
|
@@ -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
|
@@ -42,7 +42,7 @@ 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
|
password = opts[:password]
|
@@ -57,14 +57,14 @@ 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
|
password: password
|
64
64
|
)
|
65
65
|
else
|
66
66
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
67
|
-
|
67
|
+
ip: ip,
|
68
68
|
username: username,
|
69
69
|
password: password
|
70
70
|
)
|
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
|
@@ -46,7 +46,7 @@ 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]
|
@@ -59,14 +59,14 @@ 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
|
password: admin_password
|
66
66
|
)
|
67
67
|
else
|
68
68
|
jenkins_obj = PWN::Plugins::Jenkins.connect(
|
69
|
-
|
69
|
+
ip: ip,
|
70
70
|
username: admin_username,
|
71
71
|
password: admin_password
|
72
72
|
)
|
data/lib/pwn/plugins/jenkins.rb
CHANGED
@@ -12,7 +12,7 @@ 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
18
|
# password: 'optional password (functionality will be limited if ommitted)'
|
@@ -22,14 +22,14 @@ module PWN
|
|
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://#{
|
32
|
+
base_jenkins_api_uri = "https://#{ip}/ase/services".to_s.scrub
|
33
33
|
password = opts[:password].to_s.scrub
|
34
34
|
identity_file = opts[:identity_file].to_s.scrub
|
35
35
|
ssl_bool = if opts[:ssl] == true
|
@@ -45,11 +45,11 @@ module PWN
|
|
45
45
|
proxy_port = proxy.port
|
46
46
|
end
|
47
47
|
|
48
|
-
@@logger.info("Logging into Jenkins Server: #{
|
48
|
+
@@logger.info("Logging into Jenkins Server: #{ip}")
|
49
49
|
if username == '' && password == ''
|
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,
|
@@ -72,7 +72,7 @@ module PWN
|
|
72
72
|
else
|
73
73
|
password = PWN::Plugins::AuthenticationHelper.mask_password if password == ''
|
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
|
password: password,
|
@@ -452,7 +452,7 @@ 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
458
|
password: 'optional password (functionality will be limited if ommitted)',
|
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"
|
@@ -33,7 +33,7 @@ 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
|
-P $initial_admin_pwd \
|
@@ -48,7 +48,7 @@ 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
|
-P $initial_admin_pwd \
|
@@ -58,28 +58,28 @@ if [[ $? == 0 ]]; then
|
|
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
|
-P $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
|
-P $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
|
-P $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
|
-P $initial_admin_pwd \
|
@@ -43,7 +43,7 @@ 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
|
password: userland_pass
|
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.775
|
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
|