• Home
  • About
    • Tulio Cruvinel Gomes | 0xNymerio photo

      Tulio Cruvinel Gomes | 0xNymerio

      Do you have Brio?

    • Learn More
    • Email
    • Twitter
    • LinkedIn
    • Github
    • CV
  • Posts
    • All Posts
    • All Tags
  • Projects

[CTF]-[TRYHACKME]-[PRATICE]-[EASY] - Pickle Rick

19 Mar 2022

Reading time ~5 minutes

Link

Link do Pickle Rick.

Enunciado

This Rick and Morty themed challenge requires you to exploit a webserver to find 3 ingredients that will help Rick make his potion to transform himself back into a human from a pickle.

Execução

Eu não curto máquina temática, fica muito guessing ou o desafio consiste em juntar as pistas e automaticamente vc segue um único fluxo e “owna a máquina” (muitas aspas). No nossa caso, é a segunda opção, então vamos coletar e mapear as evidências e naturalmente o desafio vai nos fornecendo users/senhas/artificios para avançarmos.

Como sempre, começamos por pela etapa de Information Gathering/Scanning.

Ultimamente estou na velocidade da luz pra scanning, zero stealth + –min-rate 200 pra ctfs, então bora agilizar! Executo o nmap em todas as portas mas há apenas as seguintes portas abertas: 22 e 80. Já aproveitei e levantei os serviços e versões, o apache chama atenção, mas como é um ctf easy vou continuar enumerando.

nmap

Meu primeiro alvo é o ssh. Tenho creds? Não, mas quero saber se o serviço está aceitando password, chave ou ambos. Nesse ssh apenas é válido login via chave, portanto não tem o que perder tempo com bruteforce caso eu encontre algum username pela aplicação.

ssh

Nossa ultima opção é encontrar alguma pista/vulnerabilidade no site. De inicio aparenta ser um site estático em php, mas é necessário coletar mais informações sobre o alvo.

index

Ao lermos o código fonte da página, podemos encontrar uma informação relevante: O username é R1ckRul3s. O ssh não é uma opção, portanto devemos explorar os diretórios pela força bruta.

source code

Utilizei o gobuster para enumerar os diretórios utilizando uma wordlist curta. Assim caso eu ache algo, vou trabalhando nos vetores encontrados e depois deixo rodando em uma lista maior. No nosso caso, conseguimos encontrar o diretório /assets bem como os arquivos robots.txt, portal.php, login.php e denied.php. Observando os redirecionamentos de denied.php e portal.php para o login.php, podemos presumir que é necessário estar autenticado para acessar essas páginas.

gobuster

Acessando o robots.txt conseguimos a string Wubbalubbadubdub. Ao acessarmos o login.php encontramos um formulário de autenticação. Testei credenciais padrões como admin, administrator, root, rick, picklerickle e R1ckRul3s para entender o comportamento da aplicação, mas sem diferença de resposta.

login

Esses ctfs temáticos são complicados: Ou é 100% guessing ou são umas coisas bem toscas, mas paciência. Imaginando o cenário de guessing, já abri o burpsuite, fiz uma requisição de login e enviei para o intruder, utilizei o sniper para carregar uma lista pequena de passwords para realizar o bruteforce e inseri o username como R1ckRul3s. E sim, dei o play e fui analisar outros vetores, mas zero resultados com o bruteforce.

burpsuite

Ao acessar o diretório /assets não encontrei nada relevante pro desafio, então é aquele momento de: Putz, o ctf é temático né. Não teve jeito, inseri o username R1ckRul3s e a senha Wubbalubbadubdub e foi batata, realizou a autenticação com sucesso.

creds

Tendo agora acesso ao portal.php, ele apresenta uma box que podemos enviar comandos. Testei pwd e retornou /var/www/html, ai virou festa! Testei fazer uma bind shell para minha máquina, afim de agilizar o processo de pós exploração, mas sem sucesso.

nc

Decidi enumerar o alvo pela própria aplicação, portanto meu primeiro passo é ler o /etc/passwd para encontrar outros usuários, porém foi identificado que a aplicação possui uma restrição ao executar os comandos cat, head ou semelhantes. Eu nem tinha me atentado, mas tentei ler o /etc/passwd sem ao menos saber qual o meu usuário! Executei o comando id e retornou uid=33(www-data) gid=33(www-data) groups=33(www-data).

no cat

No diretório /home há dois usuários, rick e ubuntu, então vou enumerar as permissões do meu usuário atual. Utilizei o find para procurar binários com o suid ativo, mas sem sucesso, então mandei o CLÁSSICO sudo -l e tcharam, nosso user consegue executar com permissões root ao utilizar o sudo. Agora é só encontrar as flags dentro da máquina!

sudo

Flags

Primeira coisa é olhar a pasta do site para encontrar outros diretórios e arquivos que não encontramos com o gobuster. Há o arquivo Sup3rS3cretPickl3Ingred.txt e nele há a primeira flag! Só acessar pela raiz da aplicação o arquivo.

flag-1

Como já tinha enumerado o diretório /home, dentro do /home/rick há o arquivo second ingredients, como não temos head/cat, movi o arquivo para a pasta do site, assim poderia acessar o arquivo de texto sem problemas. Não esqueça de realizar o escape do espaço ao realizar o comando, no meu caso, utilizei sudo mv /home/rick/second\ ingredients /var/www/html/.

flag-2

Já há flag no site e flag no /home, só falta a flag no /root! Encontrei o arquivo 3rd.txt e movi para a raiz da aplicação, sucesso!

flag-3

Mitigação

Para gerar valor ao nosso exercicio, quais são as mitigações que podem ser aplicadas? Qual o valor que podemos agregar ao cliente/usuário/write-up?

  • Retirar a exposição do usuário R1ckRul3s no código fonte do index.
  • Alterar a senha do usuário R1ckRul3s, desvinculando se seu bordão óbvio e criando uma senha forte e complexa.
  • Avaliar a necessidade da aplicação possuir a feature de enviar comandos para a máquina server. Caso necessário, criar recursos para executar apenas comandos espefícios e assumindo o risco que é uma feature vulneravel por natureza.
  • Remover permissões totais de super usuário do usuário www-data.

CTF temático, meio guessing, mas divertido pra lembrar que: Por mais que se conheça n ferramentas e técnicas, é necessário estar atento as evidências, vetores e informações apresentadas no seu alvo. Podem parecer irrelevantes, mas no decorrer da exploração talvez elas sejam a diferença!

Espero que tenha gostado!



ctftryhackmethmpraticeeasytematico Share Tweet +1