Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
signal-server-dropwizard-admin — Signal-Server v20261007.0.0 - 高 - リモート - 権限残存 - 未認証 Dropwizard admin :8081 | Kitploit
ツール/GitHubGitHub/abraxas/signal-server-dropwizard-admin
防御ツール偵察脆弱性分析構成監査情報収集ウェブセキュリティペネトレーションテスト設定ミス

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
GitHub
abraxas/signal-server-dropwizard-admin

signal-server-dropwizard-admin

Signal-Server v20261007.0.0 - 高 - リモート - 権限残存 - 未認証 Dropwizard admin :8081

リポジトリを見る
7249日前未レビュー

Abraxas Labs - signal-server-dropwizard-admin

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

解説記事: https://abraxaslabs.tech/research/signal-server-dropwizard-admin

signal-server-dropwizard-admin

分類: 権限の残存 到達範囲: リモート

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

Dropwizard 5.0.2 の DefaultServerFactory は、bindHost が未設定(全インターフェース)かつ管理者認証なしで、ポート 8081 に HTTP 管理コネクタを同梱しています。Signal-Server はそれを上書きしません。service/config/sample.yml には server: ブロックがありません。TLS の applicationConnectors のみを列挙した YAML でも、0.0.0.0 上の平文 8081 を継承します。server と 3 つの ServerCommand ワーカーがそれを起動します。ExternalRequestFilter はアプリケーションコンテキストにのみ適用されます。

:8081 への未認証 HTTP が運用上の管理プレーンです。 RCE ではありません。アカウント乗っ取りではありません。封印メッセージの読み取りではありません。

IDCVE 未割当
分類権限の残存(未認証の Dropwizard 管理)
到達範囲リモート(全インターフェース :8081、認証なし)
CWECWE-306, CWE-1188
CVSSHigh: 7.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
製品Signal-Server
影響対象v20261007.0.0(a15d5cd)Dropwizard 5.0.2。リポジトリ内のサンプル / adminConnectors の省略。
認証管理コネクタ上ではなし
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

攻撃者ができること

管理ポート(デフォルト 0.0.0.0:8081、追加設定なし、Authorization ヘッダーなし)に TCP 接続できる者なら誰でも、標準の Dropwizard 5 管理サーブレットすべてに加え、Signal 独自のタスクを利用できます。これが権限の全集合です。このリストの中に RCE、ATO、封印メッセージ本文の読み取りはありません。

偵察とプロセスデータ(GET、未認証)

メソッドパス権限
GET/ping管理リスナーが稼働していることを確認。ボディは pong。
GET/metricsCodahale レジストリ全体を JSON で読み取り: JVM ヒープと非ヒープ、GC 回数、スレッド数、Jetty コネクタメーター、4xx/5xx ゲージ、タイマー。プロセスのフィンガープリント、負荷の推定、後続タスクの効果の監視に使用。
GET/threadsJVM スレッドダンプ全体: すべてのスレッド名、ID、状態、スタックフレーム。ラボでは dw-admin-* と java.base の nio フレームが表示された。稼働中の Signal ノードでは、同じダンプにクラス名、ロガー名、スタック上にたまたま存在する文字列(ファイルパス、ホスト名、処理中の引数の toString)が含まれ得る。ヒープダンプではなく、メッセージキューダンプでもない。
GET/healthcheck登録済みヘルスチェックを実行。このツリーは追加のチェックを登録しないため、ボディはデフォルトのデッドロックチェック(deadlocks.healthy)。200 か 500 かで、JVM が自身をデッドロック状態と見なしているかがわかる。
GET/tasks管理タスクを一覧表示。このピンでは: gc、log-level、set-request-logging-enabled。

ログと GC の完全性(POST、未認証)

メソッドパス権限
POST/tasks/log-level?logger=<name>&level=<LEVEL>任意のLogbackロガーをTRACE、DEBUG、INFO、WARN、ERROR、またはOFFに設定する。TRACEはアプリケーションロガーがより多く出力するようにできる(開発者がログに記録した値を含む)。セキュリティロガーやアクセスロガーに対するOFFはログを暗転させる。攻撃者はこのHTTP経由でログストリームを受け取ることはない。攻撃者はプロセスがディスクやstdoutに書き込む内容を変更する。ラボのオラクル: ロガー名SIGNAL-SERVER-DROPWIZARD-ADMIN-WITNESSをTRACEに設定。
POST/tasks/gcSystem.gc()を呼び出す。レスポンスはRunning GC... / Done!。これはstop-the-worldの促しであり、プロセスの終了ではない。
POST/tasks/set-request-logging-enabled?enabled=trueWhisperServerService.runに登録されたSignal専用タスク。リクエストアクセスログフィルタ(RequestLogManager)を有効にする。その後、アプリケーションコネクタへのHTTPは、メソッド、URI、ヘッダー(Authorization Basicを含む)をディスク上のアクセスログに書き込むことができる。管理クライアントはそれらの行を受け取らない。message-persister-service / APN / idle-jobワーカーでは、アプリケーションポートにSignal Jerseyリソースがないため、このタスクはserver上で意味を持つ。enabled=falseで再び無効になる。

この残存物が与えないもの

  • シェルなし、ProcessBuilderなし、Runtime.execなし。
  • ヒープダンプサーブレットなし。GET /heapdumpは404。
  • 管理経由でのsealed envelope、prekey、SVRシークレット、Dynamo/FDB行の読み取りなし。
  • アカウントの作成/削除、デバイスリンク、登録ロックのスキップなし。
  • sample.ymlやバインドアドレスの変更なし。
  • リクエストログの有効化は、それ自体では認証情報の窃取ではない。窃取には、それらのログファイルの後日の読み取り(ディスク、ログシッパー、TRACEロガー)が必要である。

同じDockerネットワーク上の兄弟コンテナはhttp://vuln:8081/ping(200 pong)に到達でき、bindHostが127.0.0.1の場合http://patched:8081/pingには到達できなかった。これがRemoteの半分である。

発見の経緯

signalapp/Signal-Server v20261007.0.0を固定した。18回のソース探索。チャット、キー、メッセージ、バックアップ、寄付、通話、MFA、gRPC omnibus、アウトバウンドHTTPはCritical/Highでは何も見つからなかった。ワーカー/管理の探索は違った。Dropwizard 5.0.2のHttpConnectorFactory.admin()は依然としてポート8081とnullバインドホストを使用している。SignalはadminConnectorsを決して設定しない。Caddyのデフォルト管理はlocalhostである。これはそうではない。

誤った方向: 完全なSignal-Serverを起動しようとすること。sample.ymlはcheckを通過し、runにはFoundationDB、Dynamo、Redis、シークレットバンドルが依然として必要である。残存物は、それらのいずれよりも前にServerCommandが起動するフレームワークコネクタである。ラボはDropwizard 5.0.2で、同じ空のserver: YAMLとSignalの追加タスク名を持つ。

ラボ

cd lab
./run.sh

ループバック 127.0.0.1:19010。Compose プロジェクト signal-server-dropwizard-admin。ウィットネス SIGNAL-SERVER-DROPWIZARD-ADMIN-WITNESS。ガジェット YAML には server: ブロックがない。ネガティブ YAML は bindHost: 127.0.0.1 を設定する。最終行:

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

修正

admin を 127.0.0.1 にバインドするか、adminConnectors: [] を設定するか、admin コンテキストに認証 / mTLS を導入してください。アプリケーションコネクタのみを列挙した YAML を出荷し、8081 が無効のままであると想定しないでください。

連絡先

Abraxas Labs - abraxaslabs.tech - github.com/abraxas - @abraxas_null - [email protected]

ツールをダウンロード