LibrarySUID/SGID Binaries

SUID/SGID Binaries

Learn about SUID/SGID Binaries as part of OSCP Certification - Offensive Security Certified Professional

Understanding SUID and SGID Binaries for Privilege Escalation

In the realm of cybersecurity and penetration testing, particularly for certifications like OSCP, understanding how to escalate privileges on a target system is paramount. One powerful technique involves leveraging SUID (Set User ID) and SGID (Set Group ID) binaries. These special file permissions allow a program to run with the effective user or group ID of its owner, rather than the user who executed it. This can be a critical vulnerability if exploited.

What are SUID and SGID?

Normally, when a user executes a program, the program runs with the permissions of that user. However, SUID and SGID permissions alter this behavior. When a file has the SUID bit set, it will execute with the permissions of the file's owner (typically root). When the SGID bit is set, it will execute with the permissions of the file's group.

These permissions are represented by a special character in the file permissions listing. For SUID, it's an 's' in the owner's execute position (instead of 'x'). For SGID, it's an 's' in the group's execute position.

Identifying SUID/SGID Binaries

The first step in exploiting these is to find them. On Linux systems, you can use the find command to locate files with these permissions. Common commands include:

find / -perm -u=s -type f 2>/dev/null (for SUID binaries) find / -perm -g=s -type f 2>/dev/null (for SGID binaries)

The 2>/dev/null part is crucial for suppressing permission denied errors, making the output cleaner.

How SUID/SGID Can Lead to Privilege Escalation

The vulnerability arises when a binary that is SUID root can be manipulated to perform actions that the executing user normally wouldn't have permission to do. This often involves binaries that allow users to input commands or arguments that are then executed by the program with elevated privileges.

For example, if a custom SUID binary is designed to execute a specific command, and it doesn't properly sanitize user input, an attacker might be able to inject shell commands into that input, effectively gaining a root shell.

Common SUID/SGID Exploitation Vectors

Several standard Linux utilities are often found with SUID bits set. If these utilities have known vulnerabilities or can be abused through their command-line arguments, they become prime targets for privilege escalation. Examples include:

BinarySUID/SGID StatusPotential Exploitation
findOften SUID rootCan execute arbitrary commands via -exec or -execdir
nmapOften SUID rootCan execute commands with --interactive or --script
vimOften SUID rootCan execute shell commands via :!command or :shell
bashRarely SUID root (highly discouraged)Can execute arbitrary commands

The GTFOBins Resource

A critical resource for anyone studying privilege escalation is GTFOBins. This website is a curated list of Unix binaries that can be exploited to bypass local security restrictions, including privilege escalation. It details how to use various binaries, including those with SUID/SGID bits, to achieve shell access or execute commands as a different user.

The find command, when executed with SUID root permissions, can be used to execute arbitrary commands. By leveraging the -exec option, an attacker can instruct find to run a command with root privileges. For instance, find . -exec /bin/bash \; would attempt to spawn a bash shell as root if find is SUID root and the user can execute it. This bypasses the need for direct root access by using a trusted SUID binary as an intermediary.

📚

Text-based content

Library pages focus on text content

Key Takeaways for OSCP Preparation

For your OSCP journey, mastering SUID/SGID exploitation is essential. Focus on:

  • Identification: Knowing how to quickly find SUID/SGID binaries on a target system.
  • Understanding Permissions: Grasping the implications of the 's' bit.
  • Exploitation Techniques: Learning how to leverage common binaries (like find, vim, nmap) for privilege escalation.
  • Resource Utilization: Familiarizing yourself with resources like GTFOBins.

Active Recall

What does the 's' in the owner's execute permission position signify for a file?

It signifies the SUID (Set User ID) bit, meaning the file will execute with the permissions of its owner.

What is the primary purpose of SUID/SGID binaries in the context of privilege escalation?

They allow a program to run with elevated privileges (owner's or group's), which can be exploited if the program has vulnerabilities or can be manipulated to execute arbitrary commands.

Name one common Linux utility often found with SUID root permissions that can be used for privilege escalation.

find (or vim, nmap, etc.)

Learning Resources

GTFOBins(documentation)

A curated list of Unix binaries that can be exploited to bypass local security restrictions, including privilege escalation via SUID/SGID binaries.

Linux SUID and SGID Permissions Explained(blog)

A clear explanation of SUID and SGID permissions, how they work, and their implications for system security.

Privilege Escalation: SUID Binaries(documentation)

Detailed information on identifying and exploiting SUID binaries for privilege escalation on Linux systems.

OSCP - Privilege Escalation - SUID(documentation)

Official documentation from Offensive Security that covers privilege escalation techniques, including SUID binaries, relevant to the OSCP exam.

Exploiting SUID Binaries for Privilege Escalation(blog)

A practical guide demonstrating how to find and exploit SUID binaries to gain higher privileges on a Linux system.

Linux Privilege Escalation: SUID/SGID(video)

A video tutorial explaining the concepts of SUID and SGID permissions and how they can be used for privilege escalation.

The Linux find Command: A Comprehensive Guide(documentation)

A detailed guide to the `find` command, including its powerful `-exec` option, which is often leveraged in SUID exploitation.

Understanding File Permissions in Linux(tutorial)

A foundational tutorial on Linux file permissions, including SUID and SGID, to solidify understanding of the underlying concepts.

Privilege Escalation on Linux(blog)

A comprehensive resource on Linux privilege escalation techniques, with a dedicated section on SUID/SGID binaries.

Linux Security - SUID and SGID(blog)

An explanation of SUID and SGID bits in Linux, their purpose, and how they can be a security concern.