Shocker
Difficulty: Easy | OS: Linux

Walkthrough - Youtube Habemus Shell
Em breve.
HackTheBox Machine
Scanning
Services and Versions

Exploration
Port 80 -http
Ao acessarmos o servidor web no browser, vemos apenas uma imagem e um texto.

Fuzzing
Para encontrarmos diretórios e arquivos interessantes

Verificando a execução desse script pelo browser, podemos afirmar que ele está executando o comando de linux
uptimesempre que fazemos um refresh na página, pois há mudança dos segundos.

Sabemos que é um servidor Apache que tem a pasta CGI-BIN, que é onde é armazenado os scripts CGI. (CGI = Common Gateway Inteface)
Há vulnerabilidades conhecidas em relação ao CGI, uma delas é a ShellShock (CVE-2014-6271), que afeta o Bash, ocorre devido a uma falha na forma como o bash processa as variáveis de ambiente, permitindo a execução de comandos arbitrários injetados através dessas variáveis.
Servidores Web que utilizam scripts CGI ficam vulneráveis pois utilizam o bash.

Dividindo o Payload:
():Isso define uma função no Bash. No caso de Shellshock, a parte
()é usada para criar uma função fictícia que será passada como uma variável de ambiente.
{ :; }:{}contém o corpo da função. O:é um comando nulo no Bash (não faz nada), e o;encerra o comando dentro da função.
;(após o fechamento da função):Aqui está o ponto crítico da exploração: o Bash continua interpretando comandos depois do fechamento da função, permitindo a execução de comandos arbitrários.
echo; echo:Esses comandos são usados como um "preenchimento" ou para testar se o sistema é vulnerável. Não têm impacto direto na exploração.
/bin/bash -c 'cat /etc/passwd':Este é o comando malicioso que será executado se o Bash for invocado. Ele irá ler o conteúdo do arquivo
/etc/passwddo linux, onde ficam armazenados os usuários do sistema.
Um pouco mais de explicação
Cabeçalhos HTTP e variáveis de ambiente:
Servidores web que usam scripts CGI (Common Gateway Interface) convertem cabeçalhos HTTP em variáveis de ambiente para processamento.
Por exemplo, o cabeçalho
User-Agentenviado na requisição HTTP pode ser transformado em uma variável de ambiente$HTTP_USER_AGENT.
A lógica de exploração:
Se o script do servidor utiliza o Bash para processar variáveis de ambiente, o payload inserido no
User-Agentpode ser executado quando o Bash processar a variável$HTTP_USER_AGENT.
Muitos scripts CGI (especialmente mais antigos) usam o Bash como interpretador para processar variáveis de ambiente ou executar comandos.
Se o script
user.shCGI invocar o Bash, ele inadvertidamente processará o payload injetado nas variáveis de ambiente.
O exploit público disponível na internet para exploração dessa vulnerabilidade, está muito desatualizado, em python2 e com diversas coisas desnecessárias.
Então eu criei o meu próprio script para exploração dessa vulnerabilidade, dando a possibilidade de utilizar comandos ou receber diretamente uma shell.
Initial Access
Assim conseguimos ler a nossa primeira flag.

Privilege Escalation
Uma das primeiras coisas que costumo enumerar para escalação de privilégio em Linux, é verificar as permissões que o usuário tem.

Nesse caso o usuário tem a permissão de executar o binário
perlcom o contexto de root, e sem precisar de uma senha.Podemos usar o Gtfobins para nos ajudar a explorar esse binário para obtermos um shell.

Porém, lembre-se que tem que chamar exatamente como está no
sudoersou seja, com o caminho absoluto/usr/bin/perl-e: serve no perl para executar comandos one-liner.exec: serve para executar um programa especificado na linha de comando e substitui o processo atual por esse programa.


E conseguimos obter a nossa última flag.
Last updated