diff --git a/modules/vulnerabilities/unix/http/jenkins_cli/manifests/configure.pp b/modules/vulnerabilities/unix/http/jenkins_cli/manifests/configure.pp index 0e4272f35..beacf3786 100644 --- a/modules/vulnerabilities/unix/http/jenkins_cli/manifests/configure.pp +++ b/modules/vulnerabilities/unix/http/jenkins_cli/manifests/configure.pp @@ -2,20 +2,28 @@ # Configuration and extras for Jenkins cli # class jenkins_cli::configure { - $leaked_filenames = ['flagtest'] ##$secgen_parameters['leaked_filenames'] - $strings_to_leak = ['this is a list of strings that are secrets / flags','another secret'] ##$secgen_parameters['strings_to_leak'] + $secgen_parameters = secgen_functions::get_parameters($::base64_inputs_file) + $leaked_filenames = $secgen_parameters['leaked_filenames'] + $strings_to_leak = $secgen_parameters['strings_to_leak'] Exec { path => ['/bin', '/usr/bin', '/usr/local/bin', '/sbin', '/usr/sbin'] } - $user = 'yong'#$secgen_parameters['leaked_username'][0] + $user = $secgen_parameters['leaked_username'][0] $user_home = "/home/${user}" + # Create user + user { $user: + ensure => present, + home => $user_home, + managehome => true, + } + ::secgen_functions::leak_files { 'jenkins-flag-leak': storage_directory => $user_home, leaked_filenames => $leaked_filenames, strings_to_leak => $strings_to_leak, - owner => 'root', - mode => '0750', + owner => $user, + mode => '0644', leaked_from => 'jenkins_cli', } } diff --git a/modules/vulnerabilities/unix/http/jenkins_cli/manifests/install.pp b/modules/vulnerabilities/unix/http/jenkins_cli/manifests/install.pp index afcf2ddf0..ea6cbd2b9 100644 --- a/modules/vulnerabilities/unix/http/jenkins_cli/manifests/install.pp +++ b/modules/vulnerabilities/unix/http/jenkins_cli/manifests/install.pp @@ -3,6 +3,11 @@ # https://github.com/rapid7/metasploit-framework/blob/master/documentation/modules/exploit/linux/http/jenkins_cli_deserialization.md class jenkins_cli::install { Exec { path => [ '/bin/', '/sbin/' , '/usr/bin/', '/usr/sbin/' ] } + + $secgen_parameters = secgen_functions::get_parameters($::base64_inputs_file) + $user = $secgen_parameters['leaked_username'][0] + $port = $secgen_parameters['port'][0] + $modulename = 'jenkins_cli' $releasename = 'jenkins.war' $splits = ["${releasename}.partaa", @@ -33,9 +38,9 @@ class jenkins_cli::install { command => "cat ${releasename}.parta* >/usr/local/bin/${releasename}", } -> file { '/etc/systemd/system/jenkins.service': - source => 'puppet:///modules/jenkins_cli/jenkins.service', - owner => 'root', - mode => '0777', + content => template("${modulename}/jenkins.service.erb"), + owner => 'root', + mode => '0755', } -> service { 'jenkins': ensure => running, diff --git a/modules/vulnerabilities/unix/http/jenkins_cli/secgen_metadata.xml b/modules/vulnerabilities/unix/http/jenkins_cli/secgen_metadata.xml index ad2aa3d79..6b44479bf 100644 --- a/modules/vulnerabilities/unix/http/jenkins_cli/secgen_metadata.xml +++ b/modules/vulnerabilities/unix/http/jenkins_cli/secgen_metadata.xml @@ -27,37 +27,31 @@ leaked_filenames - 8080 + - - + - + flag + + + + CVE-2017-1000353 9.8 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Jenkins - MIT + AV:N/AC:L/Au:N/C:C/I:C/A:C https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/linux/http/jenkins_cli_deserialization.rb https://github.com/rapid7/metasploit-framework/blob/master/documentation/modules/exploit/linux/http/jenkins_cli_deserialization.md - - - Navigate to IP:8080 - Check Metasploit DB - - - openjdk-8 - + Jenkins + MIT \ No newline at end of file diff --git a/modules/vulnerabilities/unix/http/jenkins_cli/files/jenkins.service b/modules/vulnerabilities/unix/http/jenkins_cli/templates/jenkins.service.erb similarity index 70% rename from modules/vulnerabilities/unix/http/jenkins_cli/files/jenkins.service rename to modules/vulnerabilities/unix/http/jenkins_cli/templates/jenkins.service.erb index 27ea51d05..4cce9cbd7 100644 --- a/modules/vulnerabilities/unix/http/jenkins_cli/files/jenkins.service +++ b/modules/vulnerabilities/unix/http/jenkins_cli/templates/jenkins.service.erb @@ -4,8 +4,8 @@ After=network.target [Service] Type=simple -User=root -ExecStart=/bin/sh -c "java -Djenkins.install.runSetupWizard=false -jar /usr/local/bin/jenkins.war" +User=<%= @leaked_username %> +ExecStart=/bin/sh -c "java -Djenkins.install.runSetupWizard=false -jar /usr/local/bin/jenkins.war --httpPort=<% @port %>" Restart=on-abort RestartSec=1