Linux privilege escalation with 'sudo'
Published on
The sudo command allows users to run commands with root privileges, without being root.
In some cases, non-root users are given the ability to run certain commands with administrative privileges. For example, a website user might be configured on a server to run all commands necessary for hosting and managing a website. Some of these commands might have been given permission to run using sudo.
To find out which sudo commands the current user has access to, run the following:
sudo -l
If we are lucky, we might get output similar to the following:
User website may run the following commands on website-hosting-server:
(ALL) NOPASSWD: /usr/bin/ruby
In this example, ruby has been configured to run using sudo for the website user. Now that we have this information, we can find a way to exploit it. GTFOBins is a great resource for finding such exploits.
Searching GTFOBins for ruby, and filtering by sudo, gives us the following command:
ruby -e 'exec "/bin/sh"'
Running this command as our example website user will start a new bash shell with root privileges! 🎉
Of course, sudo -l could return a plethora of different commands which run using sudo, so you will need research each individual command to find a working sudo exploit.
Closing thoughts
It's not guaranteed that all systems will have the same configuration described in this post, but it's worth checking sudo -l and GTFOBins, as it might enable privilege escalation.
This post was tagged: