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, exploramos uma vulnerabilidade no Json.Net e vemos como aumentar nossos privilégios para SYSTEM se tivermos o privilégio SeImpersonatePrivilege.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, - , :
- PWN;
- (Crypto);
- c (Network);
- (Reverse Engineering);
- (Stegano);
- WEB-.
, , , .
, ,
Telegram . , ,
.
. , - , .
Serviço de inteligência
Esta máquina possui um endereço IP 10.10.10.158, que eu adiciono ao / etc / hosts.10.10.10.158 json.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.158 --rate=500
Em seguida, você precisa coletar mais informações sobre portas conhecidas. Para fazer isso, use o nmap com a opção -A.nmap json.htb -p49156,49154,49152,47001,80,137,49153,139,49155,135,445,49158,5985,6666,21
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 json.htb -p80,139,135,445,5985,6666,21
Vamos ver o que na web. Como resultado, a página é carregada e, somente então, ela nos lança na página de autorização.
Poderíamos contornar isso, mas admin: admin nos permite fazer login.
Não há nada interessante no próprio site e, na tentativa de encontrar pelo menos alguma coisa, nos apegamos aos cookies.
Decodifique Base64.echo "eyJJZCI6MSwiVXNlck5hbWUiOiJhZG1pbiIsIlBhc3N3b3JkIjoiMjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzMiLCJOYW1lIjoiVXNlciBBZG1pbiBIVEIiLCJSb2wiOiJBZG1pbmlzdHJhdG9yIn0=" | base64 -d ; echo
Ou seja, o valor da senha é MD5 da senha do administrador.
Além disso, nada de interessante. Abrindo Burp e interceptando a solicitação, você pode encontrar um cabeçalho HTTP interessante.
E, nesta fase, fiquei pendurado até me dizerem para "quebrar o significado". Obviamente, nesses casos, você precisa cometer erros e observar a reação da API em três estados: verdadeiro, falso e erro. Mas por alguma razão eu perdi.Ponto de entrada
E foi descoberto que, se os dados quebrados forem transmitidos em um cabeçalho HTTP estranho (exclua alguns dos caracteres), o servidor apresentará erros. Abaixo estão os dados que o servidor retorna com um valor de cabeçalho normal e com um a quatro caracteres excluídos.
Temos um erro interessante no último caso. Como o objeto JSON está desativando , podemos explorar isso usando ysoserial . Usaremos o gadget ObjectDataProvider para Json.Net e executaremos o comando ping para verificar a suposição de vulnerabilidade.
Agora habilite o tcpdump com um filtro de protocolo ICMP para capturar ping.
Ao interceptar uma solicitação, alteramos o cabeçalho.
E recebemos o ping que foi solicitado.
DO UTILIZADOR
Agora você precisa fazer o mesmo com o medidor de carga. Primeiro, geramos uma carga e abrimos um ouvinte.
Agora abra o servidor SMB local a partir do qual o carregamento será iniciado.
Agora, novamente, serializamos os dados necessários, como um comando, lançamos nossa carga do nosso servidor.
Vemos uma conexão bem-sucedida ao servidor SMB e uma sessão Meterpreter carregada com sucesso.
E leia o arquivo do usuário.RAIZ
Primeiro de tudo, analisamos as informações sobre o usuário sob quem trabalhamos.
O usuário tem o privilégio SeImpersonatePrivilege ativado (o direito "Representar o cliente após autenticação"). Como a Microsoft diz :Atribuir a um usuário o direito de "Representar um cliente após autenticação" permite que programas iniciados em nome desse usuário representem um cliente. O uso desse parâmetro impede que servidores não autorizados representem clientes que se conectam a esses servidores usando procedimentos RPC ou pipes nomeados.
O fato é que podemos aumentar nossos direitos ao SYSTEM. Um estudo completo pode ser encontrado aqui . Os seguintes privilégios são afetados por esta vulnerabilidade:- SeImpersonatePrivilege
- SeAssignPrimaryPrivilege
- Setcbprivilege
- SeBackupPrivilege
- SeRestorePrivilege
- SeCreateTokenPrivilege
- SeLoadDriverPrivilege
- SeTakeOwnershipPrivilege
- SeDebugPrivilege
Vamos gerar outra carga e executar um ouvinte para ela.
Para operação, usaremos Juicy Potato . Mas, como parâmetro, você precisa especificar o CLSID da conta para o sistema de destino, também o usaremos no repositório . Mas primeiro, vamos ver que tipo de sistema.
E agora olhamos para o CLSID.
Faça o upload dos arquivos para o host de destino.
Agora execute o Juicy Potato e diga como o processo será criado (CreateProcessWithTokenW ou CreateProcessAsUser, parâmetro -t), arquivo do processo (-p), porta de atendimento (-l) e CLSID (-c).
O processo foi criado com sucesso e vemos a sessão metterpreter criada.
E temos a conta do sistema.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 ajudar uns aos outros em qualquer problema de segurança da TI e da informação.