Crowsec Vitae Write-up
4
0

Crowsec Vitae Write-up

Write-up da maquina Vitae da Crowsec

Roberto Francisco
4 min
4
0

A máquina Vitae é disponibilizada no laboratório da Crowsec, ou seja, para ter acesso a essa máquina é preciso ser aluno do Webhacking-na-pratica 2.0.

A máquina está classificada como nível Médio e seu sistema operacional é Linux.

Email image

                                                        Reconhecimento

O primeiro passo é descobrir quais os serviços que estão sendo executados na máquina, para esse propósito  utilizei o Nmap com os seguintes parâmetros:

Nmap -sV -vvv <IP-da-Maquina>

e obtive o seguinte resultado:

Email image

Iniciei a análise do serviço http na porta 80.

Email image

Iniciei um reconhecimento da aplicação, e encontrei um recurso de enviar curriculum

Email image

Ao clicar na opção "Send Your Resume", fui redirecionado para essa pagina

Email image

Uma aplicação open source para recrutamento de funcionários.

Cliquei na opção “Apply to Position”

Email image

Então foi disponibilizado um formulário de cadastro

Email image

No campo de “Enter your e-mail address” inserir exemplo@email.com e pressionei “Continue to Application”, então foi disponibilizado outro formulário com mais campos. O campo que mais destacou-se foi “Import Resume"

Email image

Porque permitia enviar um arquivo para o servidor, então interagir com a aplicação, mas sem sucesso. Então iniciei uma  pesquisa por vulnerabilidades usando fontes publicas.

Email image

e descobrir que a versão do Opencats estava vulnerável a XXE.

                                          EXPLORANDO O XXE

Encontrei um artigo escrito por Reginald Dodd que demostrava a exploração do Opencats. então seguir os passos descritos no artigo. https://doddsecurity.com/312/xml-external-entity-injection-xxe-in-opencats-applicant-tracking-system/

Iniciei o LibreOffice Writer, inserir uma palavra de minha preferência e salvei como resume.docx

Email image

Depois utilizei o utilitário unzip para descomprimir o arquivo .docx.

Email image

Abri o arquivo word/document.xml, e inserir “ <!DOCTYPE test [<!ENTITY test SYSTEM ‘php://filter/convert.base64-encode/resource=/etc/passwd’>]>que utiliza o php wrapper para encoda o conteúdo do arquivo /etc/passwd em base64 e salva na entity test.

Email image

Em seguida, procurei na 2º linha do arquivo pela palavra aleatória que inserir no .docx e alterei para o nome da entity: &test; .

Email image

Salvei o arquivo e em seguida comprimir o arquivo: zip resume.docx word/document.xml

Email image

retornei para aplicação, selecionei o arquivo resume.docx e pressionei upload

Email image

E obtive o seguinte resultado:

Email image

Possivelmente o conteúdo do /etc/passwd em base64. Para confirmar copiei todo o output e colei no site base64decode.org

Eeee

Email image

O conteúdo do  passwd :D

Email image

                                       Obtendo credencias via XXE

Procurei pelo repositório público no github do opencats para procurar por arquivos sensíveis para ler no servidor e encontrei o config.php. https://github.com/opencats/OpenCATS

Email image

Utilizei a vulnerabilidade do XXE para ler o config.php. eee

Email image

encontrei uma chave privada RSA do SSH.

Salvei a chave em um arquivo

Email image

Utilizei o script “ssh2john.py” disponibilizado pela ferramenta “John the ripper”,

Para transformar a chave privada em um hash para o John “quebrar”.

Comando: python2 /usr/share/John/ss2john.py <arquivo com a chave>.

Email image

Utilizei o John para quebrar o hash, com o comando: john –wordlist=rockyou.txt <arquivo com o hash>

Email image

                                           Obtendo acesso ao servidor

 De posse da senha, precisei identificar o usuário que corresponde a essa senha.

analisando o conteúdo do  passwd que extrair , identifiquei dois usuários: ‘sysadmin’ , ‘ubuntu’.

Com o comando ssh usuario@ip, identifiquei que era preciso utilizar a chave para conecta-se ao ssh.

Email image

Utilizei a chave que salvei para conectar.(OBS:configure as permissões para 600 para ter sucesso na conexão ssh)

O comando que utilizei: ssh -i key usuario@<IP>

Depois de testar os usuários, obtive sucesso com o usuário sysadmin

Email image

Acesso ao servidor :D

Email image

                                          Escalação de privilegio

Executei sudo -l e obtive o seguinte resultado:

Email image

O  binário exiftool estava com permissão de sudo para o usuário sysadmin.

Pesquisei métodos para escalar privilegio com esse binário e encontrei uma CVE e um excelente artigo pra auxiliar. CVE-2021-22204, https://blog.convisoappsec.com/um-caso-de-estudo-sobre-a-cve-2021-22204-exiftool-rce/

Criei a payload para executar o comando como root

Email image

Utilizando o utilitário bzz para comprimir a payload

Email image

Executei o djumake com os seguintes parâmetros e adicionando a payload comprimida ao arquivo

Email image

Gerou um arquivo chamado exploit.djvu

Email image

Executei o comando sudo exiftool exploit.djvu

Email image

Eeeeeeeeee root :D

Email image

                                                            Flags

Encontrei a flag de usuário: /user.txt

Email image

Encontrei a flag de root: /root/root.txt

Email image