Salve salve hackers, beleza? Eu sou o MrEmpy e sejam bem-vindos a este writeup da máquina Infinitus do Guia Anônima CTF, onde eu ocupei a 2ª colocação.

Reconhecimento e Exploração
Após a máquina do CTF ser inicializada, comecei escaneando as portas da máquina.

As portas encontradas foram a 22 e 80, onde a 22 era um OpenSSH e a 80 era um Apache.

Ao pesquisar o endereço IP da máquina, foi encontrado uma página onde dizia ao usuário para se cadastrar no site.

Há uma formulário de login. A primeira ideia que veio na minha mente foi tentar explorar SQL Injection para burlar a autenticação. Usei o seguinte payload nos dois campos:
'||1=1#


Funcionou perfeitamente! A primeira vista, observei que havia uma mensagem dizendo que a ferramenta Exiftool estava disponível.

Cliquei no hiperlink e fui redirecionado para uma página que apenas poderia ser acessado pela máquina local. Existe uma vulnerabilidade chamada Host Header Injection que permite manipular conteúdos de um site através da troca do valor do cabeçalho Host.

curl 'http://144.126.208.157/site-map/admin.php' -H 'Cookie: PHPSESSID=<HIDDEN>' -i
Fiz uma requisição para o mesmo lugar que eu estava anteriormente, a resposta da requisição teve um tamanho de 527 bytes. Fiz uma nova requisição com a adição do cabeçalho Host com o valor 127.0.0.1 e enviei a solicitação.

curl 'http://144.126.208.157/site-map/admin.php' -H 'Cookie: PHPSESSID=<HIDDEN>' -i -H 'Host: 127.0.0.1'
Boa! Agora o conteúdo da página é de 807 bytes e não é igual ao anterior. Observando o código fonte front-end, percebi que havia um formulário para enviar algum arquivo. Lembra que algumas páginas atrás tinha uma mensagem que dizia que a ferramenta Exiftool estava disponível? Pois é, eu participei de um CTF onde se explorava um vúlnerabilidade descoberta em 2021 que permitia o invasor a executar código remotamente após uma análise de metadados de uma imagem.
O exploit usado foi este, sobre o CVE-2021–22204. Lendo o código do exploit, o arquivo que seria adicionado o payload se chama “image.jpg”, então copiei uma imagem JPG que eu tinha no meu computador e renomeei.

Executei o exploit e o payload foi injetado com sucesso na imagem, agora era o momento de testar. Usei a ferramenta cURL para enviar o arquivo enquanto em outro terminal eu escutava novas conexões.

curl 'http://144.126.208.157/site-map/upload.php' -H 'Cookie: PHPSESSID=<HIDDEN>' -i -H 'Host: 127.0.0.1' -X POST -F 'arquivo=@image.jpg'
CONSEGUI!!! Estamos com acesso a máquina como usuário www-data.
Escalando Privilégio Horizontalmente
Certo, não podemos ficar com este usuário, precisamos evoluir dentro da máquina. Observei quais portas estavam abertas dentro da máquina.

A porta 5555 residia naquela máquina e não estava acessível publicamente. Usei a ferramenta Netcat que havia dentro da máquina para se conectar.

O único usuário (além do root) que exisitia era Arkham. Quando a conexão foi sucedida com sucesso, percebi que se tratava de várias ferramentas de esteganografia. Selecionei a terceira opção e foi pedido o nome de um arquivo, como se tratava de um binário chamado strings, nada mais correto de tentar ler algum arquivo confidencial da máquina, que justamente estava sobre dominio do usuário Arkham. Dessa forma, consegui obter a a chave privada RSA do SSH. Copiei o conteúdo e enviei para minha máquina e tentei logar usando ela.

Funcionou! Agora o usuário Arkham estava dominado.
Escalando Privilégio Verticalmente
A próxima etapa era se tornar administrador da máquina, então tive que enumerar a máquina mais a fundo.

Um diretório chamado “.mozilla” estava no diretório principal de Arkham, ao ver o que tinha dentro do diretório, havia perfis de usuários do Firefox, que poderia ter credencias armazenadas.



Compactei o arquivo e enviei para minha máquina por SCP.

Extraí o arquivo ZIP e renomeei o diretório. Usei uma ferramenta chamada Firefox Decrypt para obter os dados armazenados. Depois movi o diretório para dentro do diretório dessa ferramenta e executei ela.

Isso!!! Consegui obter a credencial do usuário root. Usei elas para logar como root e…

Funcionou!!! Esta era a senha do usuário root, agora temos privilégio administrativo sobre o servidor, conseguindo comprometer totalmente a máquina.
Espero que tenham gostado do writeup ;)