Skip to content

Creating a root capable exploit with change password helper #8007

Open
@iliajie

Description

@iliajie

Hello,

I am on the team of developers of Virtualmin and would like to inform you, that such suggestion:

#define CMD "/usr/sbin/virtualmin"
/* INSTALLING:
gcc -o chgvirtualminpasswd chgvirtualminpasswd.c
chown root.apache chgvirtualminpasswd
strip chgvirtualminpasswd
chmod 4550 chgvirtualminpasswd
*/

.. in combination with virtualmin.php:

exec("$curdir/chgvirtualminpasswd modify-user --domain $domain --user $username --pass $newpass", $output, $returnvalue);

.. is equivalent to creating root capable exploit, because virtualmin command is meant to be run by root user only.

For example a regular user could modify virtualmin.php file and/or run as un-privileged user:

doms=`./chgvirtualminpasswd list-domains`
for dom in $doms; do
  ./chgvirtualminpasswd delete-domain --domain $dom
done

I suggest to hardcode the command chgvirtualminpasswd modify-user --domain $domain --user $username --pass $newpass from PHP script into C script and later let binary receive a domain, a username and a password as parameters from PHP script, like:

exec("$curdir/chgvirtualminpasswd $domain $username $newpass", $output, $returnvalue);

By the way main() {} on chgvirtualminpasswd.c should be int main() {}, otherwise recent versions of compilers will fail.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions