Capabilities abuse

Understanding Linux Capabilities

What Makes Capabilities Dangerous

Linux capabilities provide fine-grained control over privileged operations, allowing specific elevated permissions without full root access. However, certain capabilities can be abused to gain complete root privileges, making them attractive targets for privilege escalation.

The Attack Principle: Exploit capabilities that:

  • Allow privilege escalation through file operations (CAP_CHOWN, CAP_FOWNER)

  • Enable arbitrary code execution with elevated privileges (CAP_SETUID, CAP_SETGID)

  • Permit bypassing file system restrictions (CAP_DAC_OVERRIDE, CAP_DAC_READ_SEARCH)

  • Allow system administration functions (CAP_SYS_ADMIN, CAP_SYS_PTRACE)

Why This Works: Capabilities run with specific elevated privileges. If you can control a binary with dangerous capabilities, you can perform privileged operations that lead to full root access.

Capabilities Discovery and Enumeration

Finding Capabilities on Files

Basic Capability Discovery:

# Find all files with capabilities set
getcap -r / 2>/dev/null

# Find capabilities in common directories
getcap -r /usr/bin /usr/sbin /bin /sbin 2>/dev/null

# Find capabilities in user directories
getcap -r /home /tmp /var/tmp 2>/dev/null

# Check specific binary for capabilities
getcap /path/to/binary

Process Capability Analysis:

Dangerous Capabilities to Look For:

High-Value Capability Exploits

CAP_SETUID - Direct Root Access

Why CAP_SETUID is Critical: Allows changing user ID to any user, including root (UID 0).

Python with CAP_SETUID:

Custom Binary with CAP_SETUID:

CAP_SETGID - Group-Based Escalation

Exploiting CAP_SETGID:

CAP_DAC_OVERRIDE - File System Bypass

Why CAP_DAC_OVERRIDE is Powerful: Bypasses all file read, write, and execute permission checks.

File System Exploitation:

CAP_FOWNER - File Ownership Manipulation

Exploiting CAP_FOWNER:

CAP_CHOWN - Ownership Changes

Taking Control of System Files:

CAP_SYS_ADMIN - System Administration Access

Why CAP_SYS_ADMIN is Dangerous: Provides numerous system administration capabilities including mount operations.

Mount-Based Escalation:

Interpreter-Specific Exploits

Python Capabilities

Common Python Capability Exploits:

Node.js Capabilities

Node.js Capability Exploitation:

Perl Capabilities

Perl Capability Exploitation:

Binary-Specific Capability Abuse

tar with Capabilities

tar + CAP_DAC_OVERRIDE:

gdb with CAP_SYS_PTRACE

Process Debugging Escalation:

Capability-Based File Operations

Reading Sensitive Files

High-Value Target Files:

Writing Critical System Files

System File Modification:

Container Escape via Capabilities

Container Capability Abuse

CAP_SYS_ADMIN Container Escape:

CAP_SYS_PTRACE Container Escape:

Capability Exploitation Strategies

Prioritizing Capability Targets

High-Priority Capabilities (Immediate Root):

  1. CAP_SETUID - Direct root access

  2. CAP_SYS_ADMIN - System-level control

  3. CAP_DAC_OVERRIDE - Bypass all file permissions

Medium-Priority Capabilities (File-Based Escalation): 4. CAP_FOWNER - Change file ownership 5. CAP_CHOWN - Change file ownership 6. CAP_SETGID - Group-based escalation

Exploitation Strategy:

Key Operational Considerations

Success Indicators

  • Capability presence confirmed on exploitable binaries

  • Code execution achieved with elevated capabilities

  • File system access to previously restricted files

  • Process privilege escalation confirmed with id

Common Failure Points

  • No dangerous capabilities found on accessible binaries

  • Capabilities present but binary doesn't accept arbitrary input

  • Modern protections (seccomp, AppArmor) prevent capability abuse

  • Container restrictions limit capability effectiveness

Exploitation Notes

  • Interpreters are gold - Python, Node.js, Perl with capabilities are easily exploitable

  • CAP_SETUID is king - Direct path to root if found

  • Container environments often have relaxed capability restrictions

  • Custom binaries may have capabilities but limited exploitation options

Capability abuse represents a powerful but often overlooked privilege escalation vector, particularly valuable in containerized environments where traditional SUID binaries may be restricted but capabilities are still present.

Last updated

Was this helpful?