Cyborg - Easy
Writeup da máquina Cyborg, da Hacking Club by Crowsec Edtech

Essa é uma máquina de dificuldade fácil, feita pelo Vert16x.
RECON
Iniciando com um portscan na máquina, encontramos apenas duas portas abertas: 22 - ssh e a 80 - http.

Podemos então, a partir disso, dar uma olhada na aplicação Web rodando na porta 80:

Olhando de cara a aplicação, podemos ver que ele usa o parâmetro ?page= para navegar entre as páginas. Isso é muito importante, é uma característica de aplicações vulneráveis a LFI (Local File Inclusion). Então a primeira coisa que podemos testar é justamente isso.

Confirmado, temos aqui uma aplicação vulnerável a LFI.
EXPLORAÇÃO
Depois de muito tentar encontrar arquivos úteis dentro da aplicação, encontrei nada útil. Então depois de alguns minutos de pesquisa, encontrei um artigo relativamente novo sobre como obter um RCE via php wrappers em aplicações vulneráveis a LFI:
Neste artigo o loknop explica como ele conseguiu RCE através dos filtros do PHP. Com isso então podemos copiar o script que ele criou, e adaptar para a aplicação que estamos testando. Vamos aos detalhes então:
O script utiliza uma url que precisamos alterar para a que estamos testando, está utilizando o /etc/passwd como arquivo padrão para gerar a payload final, e precisamos também alterar o comando. Outra coisa importante, no final do script, ele usa o parâmetro ?file, e a aplicação que estamos testando usa o ?page, então precisamos alterar o script aqui também. Depois de feitas as correções, temos o seguinte resultado:
Depois de executar o script, temos nossa shell reversa:

Então fazemos o upgrade da nossa shell, e partimos para pegar a primeira flag.

Encontramos nossa primeira flag na raiz do sistema, nomeada de fl4G.txt (talvez para não ser possível encontrar ela via LFI, ne Vert? 😂).
PÓS-EXPLORAÇÃO
Ao tentar escalar privilégios para root, podemos começar a enumerar a máquina. O que sempre faço primeiro é ver se nosso usuário, nesse caso o www-data, tem permissão para rodar algo como sudo. Então rodamos o comando sudo -l e obtemos o seguinte resultado:

Podemos rodar o hping3 --icmp como sudo. Pesquisando sobre encontramos esse artigo https://www.codebelay.com/blog/2008/10/09/sending-files-with-hping3/. Ele nos ensina como enviar arquivos. No https://gtfobins.github.io/gtfobins/hping3/#sudo podemos também encontrar uma forma de usar o hping3 para ler arquivos. Meu pull request foi aceito para adicionar essa possibilidade ao hping3. Você pode ver meu commit aqui.
Então vamos usar nesse caso o artigo para fazer essa pós-exploração. Para isso, precisamos pegar uma segunda shell no servidor. E então executar os seguintes comandos.
No primeiro terminal:
No segundo terminal:
Após isso, temos finalmente nossa flag de root:


Last updated