Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
signal-server-dropwizard-admin — Signal-Server v20261007.0.0 - Alta - Remoto - Privilégio remanescente - admin Dropwizard não autenticado :8081 | Kitploit
Ferramentas/GitHubGitHub/abraxas/signal-server-dropwizard-admin
Ferramentas DefensivasReconhecimentoAnálise de VulnerabilidadesAuditoria de ConfiguraçãoColeta de InformaçõesSegurança WebTestes de PenetraçãoConfiguração Incorreta

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
GitHubabraxas/signal-server-dropwizard-admin

signal-server-dropwizard-admin

Signal-Server v20261007.0.0 - Alta - Remoto - Privilégio remanescente - admin Dropwizard não autenticado :8081

Ver Repositório
410há 4 diasAinda não revisado
Compartilhar

Abraxas Labs - signal-server-dropwizard-admin

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  signal-server-dropwizard-admin

signal-server-dropwizard-admin

Classe: Privilégio remanescente Alcance: Remoto

Signal-Server v20261007.0.0 (a15d5cd) - Signal Messenger, LLC

O DefaultServerFactory do Dropwizard 5.0.2 disponibiliza um conector HTTP de administração na porta 8081 com bindHost não definido (todas as interfaces) e sem autenticação de administração. O Signal-Server nunca substitui isso. O service/config/sample.yml não tem bloco server:. Um YAML que apenas lista applicationConnectors TLS ainda herda o 8081 em texto simples em 0.0.0.0. O server mais os três workers ServerCommand iniciam-no. O ExternalRequestFilter está apenas no contexto da aplicação.

HTTP não autenticado para :8081 é o plano de administração operacional. Não é RCE. Não é tomada de conta. Não é leitura de mensagens seladas.

IDainda sem CVE
ClassePrivilégio remanescente (administração Dropwizard não autenticada)
AlcanceRemoto (todas as interfaces :8081, sem autenticação)
CWECWE-306, CWE-1188
CVSSAlto: 7.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
ProdutoSignal-Server
Afetadov20261007.0.0 (a15d5cd) Dropwizard 5.0.2. Amostra no repositório / adminConnectors omitido.
Autenticaçãonenhuma no conector de administração
LicençaGNU Affero GPL v3.0
Laboratórioapenas 127.0.0.1

O que um atacante pode fazer

Qualquer pessoa que consiga abrir TCP para a porta de administração (padrão 0.0.0.0:8081, sem configuração extra, sem cabeçalho Authorization) obtém todos os servlets de administração padrão do Dropwizard 5, mais a tarefa extra do Signal. Esse é o conjunto completo de privilégios. Nada nesta lista é RCE, ATO ou leitura de corpos de mensagens seladas.

Reconhecimento e dados do processo (GET, não autenticado)

MétodoCaminhoPrivilégio
GET/pingConfirma que o listener de administração está ativo. O corpo é pong.
GET/metricsLê o registo Codahale completo como JSON: heap e non-heap da JVM, contagens de GC, contagens de threads, medidores do conector Jetty, medidores 4xx/5xx, temporizadores. Use isto para identificar o processo, estimar a carga e observar o efeito de tarefas posteriores.
GET/threadsDespejo completo de threads da JVM: nome de cada thread, id, estado e frames de pilha. No laboratório isto mostrou dw-admin-* mais frames nio de java.base. Num nó Signal em produção, o mesmo despejo pode incluir nomes de classes, nomes de loggers e qualquer string que esteja numa pilha (caminhos de ficheiros, hostnames, toString de argumentos em curso). Não é um heap dump e não é um despejo da fila de mensagens.
GET/healthcheckExecuta as verificações de saúde registadas. Esta árvore nunca regista extras, por isso o corpo é a verificação de deadlock padrão (deadlocks.healthy). Um 200 vs 500 diz-lhe se a JVM pensa que está em deadlock.
GET/tasksLista as tarefas de administração. Neste pin: gc, log-level, set-request-logging-enabled.

Integridade do logging e do GC (POST, não autenticado)

MétodoCaminhoPrivilégio
POST/tasks/log-level?logger=<name>&level=<LEVEL>Define qualquer logger Logback para TRACE, DEBUG, INFO, WARN, ERROR ou OFF. TRACE pode fazer os loggers da aplicação imprimir mais (incluindo valores que um programador registou). OFF num logger de segurança ou de acesso apaga-o. O atacante não recebe o fluxo de logs por este HTTP. Ele altera o que o processo escreve para disco ou stdout. Oráculo do laboratório: nome do logger SIGNAL-SERVER-DROPWIZARD-ADMIN-WITNESS para TRACE.
POST/tasks/gcChama System.gc(). A resposta é Running GC... / Done!. É um empurrão stop-the-world, não a morte do processo.
POST/tasks/set-request-logging-enabled?enabled=trueTarefa exclusiva do Signal registada em WhisperServerService.run. Ativa o filtro de log de acesso a pedidos (RequestLogManager). Depois disso, o HTTP para o conector da aplicação pode escrever método, URI e cabeçalhos (incluindo Authorization Basic) no log de acesso em disco. O cliente de administração não recebe essas linhas de volta. Nos workers message-persister-service / APN / idle-job, a porta da aplicação não tem recursos Signal Jersey, por isso esta tarefa é relevante no server. enabled=false volta a desativá-la.

O que este remanescente não concede

  • Sem shell, sem ProcessBuilder, sem Runtime.exec.
  • Sem servlet de heap dump. GET /heapdump é 404.
  • Sem leitura de envelopes selados, prekeys, segredos SVR ou linhas Dynamo/FDB através da administração.
  • Sem criação/eliminação de conta, associação de dispositivo ou salto do bloqueio de registo.
  • Sem alteração ao sample.yml ou aos endereços de bind.
  • Ativar o logging de pedidos não é, por si só, roubo de credenciais. O roubo exige uma leitura posterior desses ficheiros de log (disco, log shipper, logger TRACE).

Um contentor irmão na mesma rede Docker alcançou http://vuln:8081/ping (200 pong) e não conseguiu alcançar http://patched:8081/ping quando bindHost era 127.0.0.1. Essa é a metade Remota.

Como o encontrei

Fixe o signalapp/Signal-Server v20261007.0.0. Dezoito buscas no código-fonte. Chat, chaves, mensagens, backups, donativos, chamadas, MFA, omnibus gRPC e HTTP de saída voltaram vazios em Crítico/Alto. A busca de workers/administração não. O HttpConnectorFactory.admin() do Dropwizard 5.0.2 ainda usa a porta 8081 e um bind host nulo. O Signal nunca define adminConnectors. A administração padrão do Caddy é localhost. Esta não é.

Caminho errado: tentar arrancar o Signal-Server completo. O sample.yml passa o check e ainda precisa de FoundationDB, Dynamo, Redis e um pacote de segredos para run. O remanescente é o conector da framework que o ServerCommand inicia antes de tudo isso. O laboratório é Dropwizard 5.0.2 com o mesmo YAML server: vazio e o nome da tarefa extra do Signal.

Laboratório

cd lab
./run.sh

Loopback 127.0.0.1:19010. Projeto Compose signal-server-dropwizard-admin. Witness SIGNAL-SERVER-DROPWIZARD-ADMIN-WITNESS. O YAML do gadget não tem bloco server:. O YAML negativo define bindHost: 127.0.0.1. Última linha:

SUCCESS signal-server-dropwizard-admin how=unauth-admin-8081 ping=200 metrics=200 threads=200 healthcheck=200 tasks=200 log-level=TRACE gc=200 set-log=enabled bind=* remote-vuln=200 remote-patched=fail SIGNAL-SERVER-DROPWIZARD-ADMIN-WITNESS

Correção

Faça bind da administração a 127.0.0.1, defina adminConnectors: [] ou coloque autenticação / mTLS no contexto de administração. Não distribua um YAML que apenas lista conectores de aplicação e assuma que o 8081 ficou desligado.

Contacto

Baixar ferramenta