diff --git a/modules/vulnerabilities/unix/http/lucee_rce/files/lucee-express-5.3.7.43.zip.partaa b/modules/vulnerabilities/unix/http/lucee_rce/files/lucee-express-5.3.7.43.zip.partaa new file mode 100644 index 000000000..6c16eef3a Binary files /dev/null and b/modules/vulnerabilities/unix/http/lucee_rce/files/lucee-express-5.3.7.43.zip.partaa differ diff --git a/modules/vulnerabilities/unix/http/lucee_rce/files/lucee-express-5.3.7.43.zip.partab b/modules/vulnerabilities/unix/http/lucee_rce/files/lucee-express-5.3.7.43.zip.partab new file mode 100644 index 000000000..2e747ac2d Binary files /dev/null and b/modules/vulnerabilities/unix/http/lucee_rce/files/lucee-express-5.3.7.43.zip.partab differ diff --git a/modules/vulnerabilities/unix/http/lucee_rce/files/lucee.service b/modules/vulnerabilities/unix/http/lucee_rce/files/lucee.service new file mode 100644 index 000000000..7c9ecc9b0 --- /dev/null +++ b/modules/vulnerabilities/unix/http/lucee_rce/files/lucee.service @@ -0,0 +1,14 @@ +[Unit] +Description=Lucee +[Service] +Type=forking +ExecStart=/usr/local/src/bin/startup.sh +ExecStop=/usr/local/src/bin/shutdown.sh +TimeoutStopSec=5 +# The exit code of the tomcat java process when terminated via shutdown.sh is 143. +# Don't treat that non-zero exit code as a failure. +SuccessExitStatus=143 +Restart=always +RestartSec=5 +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/modules/vulnerabilities/unix/http/lucee_rce/lucee_rce.pp b/modules/vulnerabilities/unix/http/lucee_rce/lucee_rce.pp new file mode 100644 index 000000000..b3c77bc83 --- /dev/null +++ b/modules/vulnerabilities/unix/http/lucee_rce/lucee_rce.pp @@ -0,0 +1,6 @@ +contain lucee_rce::install +contain lucee_rce::service +contain lucee_rce::configure +Class['lucee_rce::install'] +-> Class['lucee_rce::service'] +-> Class['lucee_rce::configure'] diff --git a/modules/vulnerabilities/unix/http/lucee_rce/manifests/configure.pp b/modules/vulnerabilities/unix/http/lucee_rce/manifests/configure.pp new file mode 100644 index 000000000..41b29ec0d --- /dev/null +++ b/modules/vulnerabilities/unix/http/lucee_rce/manifests/configure.pp @@ -0,0 +1,18 @@ +# Class: lucee_rce::configure +# Configuration for lucee with secgen +# +class lucee_rce::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'] + + Exec { path => ['/bin', '/usr/bin', '/usr/local/bin', '/sbin', '/usr/sbin'] } + + ::secgen_functions::leak_files { 'lucee-flag-leak': + storage_directory => '/', + leaked_filenames => $leaked_filenames, + strings_to_leak => $strings_to_leak, + owner => 'root', + mode => '0750', + leaked_from => 'lucee_rce', + } +} diff --git a/modules/vulnerabilities/unix/http/lucee_rce/manifests/install.pp b/modules/vulnerabilities/unix/http/lucee_rce/manifests/install.pp new file mode 100644 index 000000000..22639b896 --- /dev/null +++ b/modules/vulnerabilities/unix/http/lucee_rce/manifests/install.pp @@ -0,0 +1,37 @@ +# Class: lucee_rce::install +# Install process for lucee can be found at: +# https://docs.lucee.org/guides/installing-lucee/download-and-install.html +class lucee_rce::install { + Exec { path => [ '/bin/', '/sbin/' , '/usr/bin/', '/usr/sbin/' ] } + $modulename = 'lucee_rce' + $releasename = 'lucee-express-5.3.7.43.zip' + $splits = ["${releasename}.partaa", + "${releasename}.partab"] + + ensure_packages(['openjdk-11-jdk'], { ensure => 'installed'}) + + $splits.each |String $split| { + file { "/tmp/${split}": + ensure => file, + source => "puppet:///modules/${modulename}/${split}", + } + } + + exec { 'rebuild-archive': + cwd => '/tmp/', + command => "cat ${releasename}.parta* >/usr/local/src/${releasename}", + } + -> exec { 'unpack-lucee': + cwd => '/usr/local/src/', + command => 'unzip -n lucee-express-5.3.7.43.zip', + } + -> file { '/usr/local/src/logs/': + ensure => directory, + } + -> exec { 'giveperms-lucee': + command => 'chmod -R 777 /usr/local/src/bin/', + } + #-> file { '/usr/local/src/lucee-express-5.3.7.43.zip': + # ensure => absent + #} +} diff --git a/modules/vulnerabilities/unix/http/lucee_rce/manifests/service.pp b/modules/vulnerabilities/unix/http/lucee_rce/manifests/service.pp new file mode 100644 index 000000000..6e40f36a6 --- /dev/null +++ b/modules/vulnerabilities/unix/http/lucee_rce/manifests/service.pp @@ -0,0 +1,15 @@ +# Class: lucee_rce::service +# Service behaviour +# +class lucee_rce::service { + file { '/etc/systemd/system/lucee.service': + source => 'puppet:///modules/lucee_rce/lucee.service', + owner => 'root', + mode => '0777', + } + + service { 'lucee': + ensure => 'running', + enable => 'true', + } +} diff --git a/modules/vulnerabilities/unix/http/lucee_rce/secgen_metadata.xml b/modules/vulnerabilities/unix/http/lucee_rce/secgen_metadata.xml new file mode 100644 index 000000000..a352faf89 --- /dev/null +++ b/modules/vulnerabilities/unix/http/lucee_rce/secgen_metadata.xml @@ -0,0 +1,65 @@ + + + + Lucee Administrator imgProcess.cfm Arbitrary File Write + James Davis + MIT + + This module exploits an arbitrary file write in Lucee Administrator's + imgProcess.cfm file to execute commands as the Tomcat user. + + + http + in_the_wild + user_rwx + remote + linux + low + + port + strings_to_leak + leaked_filenames + + + 8888 + + + + + + + + + + + + + CVE-2021-21307 + 9.8 + + CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H + Lucee Server + + Apache/LGPL + + https://github.com/httpvoid/writeups/blob/main/Apple-RCE.md + + https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/linux/http/lucee_admin_imgprocess_file_write.rb + + + visit + ip:8888 + + + services/unix/**check modules** + + + + services/unix/**add service file** + + + \ No newline at end of file