Skip to content

Privilege escalator in Rust primarily for Docker containers.

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

naftulikay/escalator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

escalator Build Status

A simple root privilege escalation and execution tool.

Normally sudo and su both use fork(2) before execve(2), which yields a child process under the supervising sudo process. This is usually fine, but when executing certain binaries which expect to be PID 1 (c.f. systemd), certain assumptions are not met and systemd and/or its child services don't deal with a non-PID-1 parent.

Usage

For this binary to do Heaven's work, set ownership on the binary to root, and then enable the setuid bit in the file permissions. This will mean that any process that executes this binary will assume the UID of the file itself, which we have just set to root. escalator will then start as root, will subsequently setuid(2) and setgid(2) to become real root:root, and then will execute the binary with the given arguments.

Once all of these criteria are met, execute the binary as an unprivileged user like so:

escalator /lib/systemd/systemd -- --system --unit=multi-user.target

This will set the UID and GID to 0 and then replace itself with the first argument, called with the remaining arguments as program arguments. Note the --, this serves as a delimiter between the target binary and the arguments to be passed to it.

License

Licensed at your discretion under either:

About

Privilege escalator in Rust primarily for Docker containers.

Topics

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published