Ew_Skuzzy - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

nmap
nikto
gobuster
wfuzz
dirb
msfconsole
fdisk
iscsiadm
strings
openssl
curl

Inhaltsverzeichnis

Reconnaissance

In diesem Abschnitt führen wir die ersten Schritte der Aufklärung durch, um Informationen über das Zielsystem zu sammeln. Dies ist entscheidend, um potenzielle Angriffsvektoren zu identifizieren.

┌──(root㉿CCat)-[~]
└─# ARP-Scan
192.168.2.121 08:00:27:60:88:83 PCS Systemtechnik GmbH

Der ARP-Scan zeigt die IP-Adresse und die MAC-Adresse des Zielsystems. Die Angabe "PCS Systemtechnik GmbH" deutet auf den Hersteller der Netzwerkkarte hin.

┌──(root㉿CCat)-[~]
└─# /etc/hosts
192.168.2.121 skuzzy.vln

Die /etc/hosts-Datei ordnet die IP-Adresse dem Hostnamen "skuzzy.vln" zu. Dies ermöglicht die Verwendung des Hostnamens anstelle der IP-Adresse.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-11 15:28 CET Nmap scan report for skuzzy.vln (192.168.2.121) Host is up (0.00013s latency). Not shown: 65532 closed tcp ports (reset) Bug in iscsi-info: no string output. PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 89:c2:ae:12:d6:c5:19:4e:68:4a:28:e9:06:bd:9c:19 (RSA) | 256 f0:0c:ae:37:10:d3:6d:a2:85:3a:77:04:06:94:f8:0a (ECDSA) |_ 256 85:5b:49:17:05:a0:b8:4e:76:ce:b2:63:c6:21:36:e9 (ED25519) 80/tcp open http nginx |_http-title: Welcome! 3260/tcp open iscsi? MAC Address: 08:00:27:60:88:83 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.13 ms skuzzy.vln (192.168.2.121) 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 108.82 seconds

Nmap führt einen umfassenden Scan des Zielsystems durch.

  • -sS: TCP-SYN-Scan (Stealth Scan)
  • -sC: Führt Standard-Skripte zur Erkennung von Diensten aus.
  • -sV: Erkennt die Version der laufenden Dienste.
  • -A: Aktiviert aggressive Scan-Optionen (OS-Erkennung, Versionserkennung, Skriptausführung, Traceroute).
  • -p-: Scannt alle 65535 Ports.
  • $IP: Variable für die Ziel-IP-Adresse.
  • -Pn: Verhindert Ping-Anfragen, behandelt alle Hosts als "up".
  • --min-rate 5000: Sendet Pakete mit einer minimalen Rate von 5000 pro Sekunde.
Die Ergebnisse zeigen, dass die Ports 22 (SSH), 80 (HTTP) und 3260 (iSCSI) offen sind. Nmap hat auch das Betriebssystem (Linux) und die Versionen der Dienste erkannt.

┌──(root㉿CCat)-[~]
└─# Nikto v2.5.0
+ Target IP: 192.168.2.121 + Target Hostname: 192.168.2.121 + Target Port: 80 + Start Time: 2024-11-11 15:30:27 (GMT1) + Server: nginx + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: 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. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + No CGI Directories found (use '-C all' to force check all possible dirs) + /#wp-config.php#: #wp-config.php# file found. This file contains the database credentials. + 8102 requests: 0 error(s) and 3 item(s) reported on remote host + End Time: 2024-11-11 15:31:31 (GMT1) (64 seconds) + 1 host(s) tested

Nikto ist ein Webserver-Scanner, der auf Schwachstellen und Konfigurationsfehler prüft.

  • Es wurden fehlende HTTP-Header (X-Frame-Options, X-Content-Type-Options) festgestellt, die potenzielle Sicherheitsrisiken darstellen.
  • Die Datei /#wp-config.php# wurde gefunden, die möglicherweise Datenbank-Zugangsdaten enthält. Dies ist ein kritischer Fund.

Web Enumeration

In diesem Abschnitt untersuchen wir die Webanwendung genauer, um versteckte Dateien, Verzeichnisse und potenzielle Schwachstellen aufzudecken.

┌──(root㉿CCat)-[~]
└─# gobuster dir -u "http://$IP" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -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,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
http://192.168.2.121/index.html (Status: 200) [Size: 1297]

Gobuster ist ein Tool zum Auffinden von versteckten Verzeichnissen und Dateien auf einem Webserver.

  • -u: Die URL des Zielsystems.
  • -w: Die Wordlist, die für das Brute-Forcing verwendet wird.
  • -x: Dateiendungen, nach denen gesucht wird.
  • -b: HTTP-Statuscodes, die als Fehler behandelt werden sollen.
  • -e: Gibt die vollständige URL im Ergebnis aus.
  • --no-error: Unterdrückt Fehlermeldungen.
  • -k: Ignoriert SSL-Zertifikatsprobleme.
Gobuster hat die Datei /index.html gefunden.

http://192.168.2.121/index.html
    ______            _____ __                         __
   / ____/      __   / ___// /____  __________  __  __/ /
  / __/ | | /| / /   \__ \/ //_/ / / /_  /_  / / / / / / 
 / /___ | |/ |/ /   ___/ / ,< / /_/ / / /_/ /_/ /_/ /_/  
/_____/ |__/|__/   /____/_/|_|\__,_/ /___/___/\__, (_)   
                                             /____/      

Welcome to 'Ew Skuzzy!' - my first CTF VM.
Level: Intermediate.

Forgive the name... I heard a kid say it in a shopping centre; or, perhaps it's a hint? or am I trolling? ¯\_(ツ)_/¯

You'll just have to fireup dirbuster and find out!

Flags will be found along the way, if you're on the right path. Most flag data is not of any signifigance to the challenge.

Hints available at /dev/null, or ping me on Twitter @vortexau (UTC+9.5 timezone, I'm probably sleeping while you're awake!).

Please let me know what you think of the challenge once you're done, and submit your walkthroughs to VulnHub, I'm really looking forward to reading them!
                

Die index.html-Seite enthält eine Willkommensnachricht und Hinweise zum CTF. Der Hinweis "fireup dirbuster" deutet auf die Verwendung von Dirbuster zur weiteren Enumeration hin.

Initial Access

In diesem Abschnitt versuchen wir, uns initialen Zugriff auf das System zu verschaffen. Dies kann durch Ausnutzung von Schwachstellen oder durch das Finden von Anmeldeinformationen erfolgen.

┌──(root㉿CCat)-[~]
└─# msfconsole -q -x "search ssh_enum"
Matching Modules


   #  Name                                     Disclosure Date  Rank    Check  Description
   -  -                                       -    --  --
   0  auxiliary/scanner/ssh/ssh_enumusers      .                normal  No     SSH Username Enumeration
   1    \_ action: Malformed Packet            .                .       .      Use a malformed packet
   2    \_ action: Timing Attack               .                .      
               

Wir verwenden Metasploit, um nach Modulen zur SSH-Benutzerenumeration zu suchen.

  • msfconsole -q: Startet Metasploit im Quiet-Modus (ohne Banner).
  • -x "search ssh_enum": Führt den Befehl "search ssh_enum" aus und beendet Metasploit danach.

msf6 > use 0
msf6 auxiliary(scanner/ssh/ssh_enumusers) > set THREADS 100
THREADS => 100
msf6 auxiliary(scanner/ssh/ssh_enumusers) > set THRESHLD 10
THRESHLD => 10
msf6 auxiliary(scanner/ssh/ssh_enumusers) > set USER_FILE /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
USER_FILE => /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
msf6 auxiliary(scanner/ssh/ssh_enumusers) > set rport 22
rport => 22
msf6 auxiliary(scanner/ssh/ssh_enumusers) > set rhosts 192.168.2.121
rhosts => 192.168.2.121
msf6 auxiliary(scanner/ssh/ssh_enumusers) > run

                
[*] 192.168.2.121:22 - SSH - Using malformed packet technique [*] 192.168.2.121:22 - SSH - Checking for false positives [*] 192.168.2.121:22 - SSH - Starting scan [+] 192.168.2.121:22 - SSH - User 'skuzzy' found [+] 192.168.2.121:22 - SSH - User 'mail' found [+] 192.168.2.121:22 - SSH - User 'root' found [+] 192.168.2.121:22 - SSH - User 'news' found

Wir verwenden das gefundene Metasploit-Modul, um SSH-Benutzer zu enumerieren.

                            
  • use 0: Wählt das erste Modul aus der Suchergebnissen aus.
  • set THREADS 100: Setzt die Anzahl der Threads auf 100.
  • set THRESHLD 10: Setzt den Schwellenwert für Fehlalarme auf 10.
  • set USER_FILE: Gibt die Wordlist mit Benutzernamen an.
  • set rport 22: Setzt den Remote-Port auf 22 (SSH).
  • set rhosts 192.168.2.121: Setzt den Remote-Host auf die Ziel-IP-Adresse.
  • run: Führt das Modul aus.
Das Modul hat die Benutzer "skuzzy", "mail", "root" und "news" gefunden.

┌──(root㉿CCat)-[~]
└─# fdisk -l
Disk /dev/sda: 200,24 GiB, 215007100928 bytes, 419935744 sectors
Disk model: VBX HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfc3a9125

Device     Boot   Start       End   Sectors   Size Id Type
/dev/sda1  *       2048    999423    997376   487M 83 Linux
/dev/sda2       1001470 419934207 418932738 199,8G  f W95 Ext'd (LBA)
/dev/sda5       1001472 419934207 418932736 199,8G 8e Linux LVM


Disk /dev/sdb: 200,24 GiB, 215007100928 bytes, 419935744 sectors
Disk model: VBX HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/CCat--vg-root: 198,8 GiB, 213464907776 bytes, 416923648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/CCat--vg-swap_1: 980 MiB, 1027604480 bytes, 2007040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

fdisk -l listet die Partitionen auf dem System auf. Hier sehen wir zwei Festplatten: /dev/sda und /dev/sdb. /dev/sda verwendet LVM (Logical Volume Management). Dies könnte interessant sein, um versteckte Daten zu finden.

[>-] - 16s 207029/12350632 15m found:3 errors:0 [>-] - 16s 104272/6175316 6692/s http://192.168.2.121/ [>-] - 16s 101024/6175316 6508/s http://192.168.2.121/smblogin/

Dies scheint ein Ausschnitt aus einem laufenden Gobuster-Scan zu sein. Es wurden die URLs http://192.168.2.121/ und http://192.168.2.121/smblogin/ gefunden. Der Pfad /smblogin/ könnte auf eine SMB-Anmeldeseite hindeuten.

┌──(root㉿CCat)-[/mnt]
└─# iscsiadm -m discovery -t st -p 192.168.2.121:3260
192.168.2.121:3260,1 iqn.2017-02.local.skuzzy:storage.sys0

iscsiadm -m discovery sucht nach iSCSI-Zielen. Die Ausgabe zeigt ein iSCSI-Ziel mit dem Namen iqn.2017-02.local.skuzzy:storage.sys0.

┌──(root㉿CCat)-[/mnt]
└─# iscsiadm -m node --targetname "iqn.2017-02.local.skuzzy:storage.sys0" --portal 192.168.2.121 --login
Logging in to [iface: default, target: iqn.2017-02.local.skuzzy:storage.sys0, portal: 192.168.2.121,3260] Login to [iface: default, target: iqn.2017-02.local.skuzzy:storage.sys0, portal: 192.168.2.121,3260] successful.

iscsiadm -m node --login versucht, sich bei dem gefundenen iSCSI-Ziel anzumelden. Die Anmeldung war erfolgreich.

Proof of Concept: iSCSI-Verbindung

Dieser Proof of Concept demonstriert, wie eine erfolgreiche iSCSI-Verbindung genutzt werden kann, um auf das Dateisystem des Zielsystems zuzugreifen.

Nachdem wir eine erfolgreiche iSCSI-Verbindung hergestellt haben, können wir das iSCSI-Volume mounten und auf die darauf befindlichen Dateien zugreifen. Dies ermöglicht uns, potenziell sensible Informationen zu finden.

Privilege Escalation

In diesem Abschnitt untersuchen wir die Möglichkeiten, unsere Privilegien auf dem System zu erhöhen, um Root-Zugriff zu erlangen.

Flags

cat user.txt userflag
cat root.txt rootflag