diff --git a/modules/vulnerabilities/unix/access_control_misconfigurations/writable_groups/secgen_metadata.xml b/modules/vulnerabilities/unix/access_control_misconfigurations/writable_groups/secgen_metadata.xml index 0c81dd024..72d2b5805 100644 --- a/modules/vulnerabilities/unix/access_control_misconfigurations/writable_groups/secgen_metadata.xml +++ b/modules/vulnerabilities/unix/access_control_misconfigurations/writable_groups/secgen_metadata.xml @@ -9,7 +9,7 @@ Changes permissions on /etc/group file to 0777, local users can escalate to root by adding account to sudo. - access_controls + access_control_misconfiguration root_rw local linux diff --git a/modules/vulnerabilities/unix/access_control_misconfigurations/writable_passwd/manifests/config.pp b/modules/vulnerabilities/unix/access_control_misconfigurations/writable_passwd/manifests/config.pp new file mode 100644 index 000000000..e86706e33 --- /dev/null +++ b/modules/vulnerabilities/unix/access_control_misconfigurations/writable_passwd/manifests/config.pp @@ -0,0 +1,6 @@ +class writable_passwd::config { + file { '/etc/passwd': + ensure => present, + mode => '0777', + } +} diff --git a/modules/vulnerabilities/unix/access_control_misconfigurations/writable_passwd/secgen_metadata.xml b/modules/vulnerabilities/unix/access_control_misconfigurations/writable_passwd/secgen_metadata.xml new file mode 100644 index 000000000..041151a16 --- /dev/null +++ b/modules/vulnerabilities/unix/access_control_misconfigurations/writable_passwd/secgen_metadata.xml @@ -0,0 +1,24 @@ + + + + Writable Passwd File + Thomas Shaw + MIT + Changes permissions on passwd file to 777, open to account tampering to local users. + This is not a common misconfiguration, and not particularly subtle. + + access_control_misconfiguration + root_rw + local + linux + + + medium + 6.6 + AV:L/AC:M/Au:S/C:C/I:C/A:C + + + + \ No newline at end of file diff --git a/modules/vulnerabilities/unix/access_control_misconfigurations/writable_passwd/writable_passwd.pp b/modules/vulnerabilities/unix/access_control_misconfigurations/writable_passwd/writable_passwd.pp new file mode 100644 index 000000000..2d222b7b5 --- /dev/null +++ b/modules/vulnerabilities/unix/access_control_misconfigurations/writable_passwd/writable_passwd.pp @@ -0,0 +1 @@ +include writable_passwd::config \ No newline at end of file diff --git a/modules/vulnerabilities/unix/system/parameterised_accounts/manifests/account.pp b/modules/vulnerabilities/unix/system/parameterised_accounts/manifests/account.pp index 6138df569..81a52fc74 100644 --- a/modules/vulnerabilities/unix/system/parameterised_accounts/manifests/account.pp +++ b/modules/vulnerabilities/unix/system/parameterised_accounts/manifests/account.pp @@ -1,20 +1,28 @@ define parameterised_accounts::account($username, $password, $super_user, $strings_to_leak, $leaked_filenames) { - - # condition because ::accounts::user changes permissions on /etc/group so needs to run before vulns/writable_groups - if defined('writable_groups::config'){ + # ::accounts::user changes permissions on group, passwd, shadow etc. so needs to run before + if defined('writable_groups::config') { include ::writable_groups::config - ::accounts::user { $username: - shell => '/bin/bash', - password => pw_hash($password, 'SHA-512', 'mysalt'), - managehome => true, - before => File['/etc/group'] - } - } else { - ::accounts::user { $username: - shell => '/bin/bash', - password => pw_hash($password, 'SHA-512', 'mysalt'), - managehome => true, - } + $writable_groups = [File['/etc/group']] + } else { $writable_groups = [] } + + if defined('writable_passwd::config') { + include ::writable_passwd::config + $writable_passwd = [File['/etc/passwd']] + } else { $writable_passwd = [] } + + if defined('writable_shadow::config') { + include ::writable_shadow::config + $writable_shadow = [File['/etc/shadow']] + } else { $writable_shadow = [] } + + $misconfigurations = concat($writable_groups, $writable_passwd, $writable_shadow) + + # Add user account + ::accounts::user { $username: + shell => '/bin/bash', + password => pw_hash($password, 'SHA-512', 'mysalt'), + managehome => true, + before => $misconfigurations, } # sort groups if sudo add to conf diff --git a/scenarios/examples/vulnerability_examples/access_control_misconfiguration_examples/writable_passwd.xml b/scenarios/examples/vulnerability_examples/access_control_misconfiguration_examples/writable_passwd.xml new file mode 100644 index 000000000..69815ff16 --- /dev/null +++ b/scenarios/examples/vulnerability_examples/access_control_misconfiguration_examples/writable_passwd.xml @@ -0,0 +1,29 @@ + + + + + + server + + + + + + + + + test + + + test + + + + + + + + +