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

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

Abraxas Labs - signal-server-dropwizard-admin

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

signal-server-dropwizard-admin

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

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

Dropwizard 5.0.2 の DefaultServerFactory は、bindHost が未設定(全インターフェース)で管理認証もない HTTP 管理コネクタをポート 8081 で提供します。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。
  • 管理経由での封印されたエンベロープ、prekey、SVR シークレット、Dynamo/FDB 行の読み取りなし。
  • アカウントの作成/削除、デバイスリンク、登録ロックのスキップなし。
  • sample.yml やバインドアドレスの変更なし。
  • リクエストログの有効化は、それ自体では認証情報の窃取ではない。窃取には、それらのログファイルの後続の読み取り(ディスク、ログシッパー、TRACE ロガー)が必要。

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

発見の経緯

signalapp/Signal-Server v20261007.0.0 をピン留めした。18 回のソース探索。チャット、キー、メッセージ、バックアップ、寄付、通話、MFA、gRPC オムニバス、アウトバウンド 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

修正

管理を 127.0.0.1 にバインドするか、adminConnectors: [] を設定するか、管理コンテキストに認証 / mTLS を導入する。アプリケーションコネクタのみを列挙した YAML を出荷し、8081 がオフのままだと仮定しないこと。

連絡先

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

ツールをダウンロード