
phpMyAdmin में CVE-2020-5504 के लिए अधिकृत SQL इंजेक्शन शोषण फ्रेमवर्क, जिसमें स्वचालित डेटाबेस एन्यूमरेशन, ब्लाइंड इंजेक्शन, प्रॉक्सी समर्थन, और पेनेट्रेशन टेस्टिंग तथा सुरक्षा अनुसंधान के लिए संरचित रिपोर्टिंग शामिल है।
phpMyAdmin परिनियोजनों में CVE-2020-5504 की पहचान और सत्यापन हेतु अधिकृत सुरक्षा परीक्षण एवं अनुसंधान ढाँचा
अवलोकन · विशेषताएँ · स्थापना · उपयोग · रिपोर्टें · आर्किटेक्चर · योगदान
जिम्मेदार उपयोग सूचना: यह परियोजना केवल उन प्रणालियों के लिए है जिनके आप स्वामी हैं या जिनका आकलन करने के लिए आप स्पष्ट रूप से अधिकृत हैं। लिखित अनुमति और एक परिभाषित परीक्षण दायरे के बिना इसे सार्वजनिक, तृतीय-पक्ष या उत्पादन प्रणालियों के विरुद्ध उपयोग न करें।
| CLI आउटपुट | उपयोग |
|---|---|
![]() | ![]() |
CVE-2020-5504 एक SQL इंजेक्शन भेद्यता है जो phpMyAdmin के उपयोगकर्ता खाता पृष्ठ को प्रभावित करती है। आधिकारिक phpMyAdmin सलाहकार के अनुसार, 4.9.4 से पहले के phpMyAdmin 4.x संस्करण और phpMyAdmin 5.0.0 प्रभावित हैं; सलाह 4.x श्रृंखला के लिए 4.9.4 या उससे नए संस्करण और 5.x श्रृंखला के लिए 5.0.1 या उससे नए संस्करण में अपग्रेड करने की अनुशंसा करती है।[1] National Vulnerability Database के अनुसार, शोषण के लिए सर्वर तक पहुँचने हेतु एक मान्य MySQL खाते की आवश्यकता होती है।[2]
यह परियोजना अधिकृत पैठ परीक्षण, नियंत्रित सत्यापन और सुरक्षा अनुसंधान के लिए एक संरचित कार्यप्रवाह प्रदान करती है। इसे मूल्यांकनकर्ताओं को किसी लक्ष्य का फ़िंगरप्रिंट लेने, यह सत्यापित करने में सहायता करने के लिए डिज़ाइन किया गया है कि लक्ष्य प्रभावित प्रतीत होता है या नहीं, साक्ष्य का दस्तावेज़ीकरण करने और सुधार ट्रैकिंग के लिए संरचित रिपोर्ट तैयार करने में मदद करता है।
यह ढाँचा चार लक्ष्यों के आसपास व्यवस्थित है:
पहचानें phpMyAdmin स्थापनाएँ और संस्करण-संबंधित संकेतक एकत्र करें।
सत्यापित करें संदिग्ध जोखिम को, जहाँ संभव हो, नियंत्रित, गैर-विनाशकारी जाँचों का उपयोग करके।
आकलन करें अधिकृत लक्ष्यों का, कॉन्फ़िगर करने योग्य सीमाओं, पुनःप्रयास व्यवहार और वैकल्पिक प्रॉक्सी का उपयोग करके।
रिपोर्ट करें निष्कर्षों को ऐसे प्रारूपों में जिनकी समीक्षा करना, संग्रह करना और कार्यप्रवाहों में एकीकृत करना आसान हो।
यह परियोजना पैचिंग, विक्रेता मार्गदर्शन, सुरक्षित कॉन्फ़िगरेशन या औपचारिक पैठ-परीक्षण प्राधिकरण प्रक्रिया का विकल्प नहीं है। यह प्रत्येक परिनियोजन, कॉन्फ़िगरेशन, संस्करण या नेटवर्क स्थिति का पता लगाने की गारंटी नहीं देती। सभी परिणामों की मैन्युअल रूप से समीक्षा की जानी चाहिए और उन्हें स्वचालित सुरक्षा निर्णय के बजाय आकलन साक्ष्य के रूप में माना जाना चाहिए।
इस उपकरण को किसी संपत्ति के विरुद्ध तभी चलाएँ जब आपके पास संपत्ति स्वामी से स्पष्ट प्राधिकरण हो। प्राधिकरण में लक्ष्य, अनुमत परीक्षण अवधि, अनुमत तकनीकें, स्रोत IP, डेटा-प्रबंधन आवश्यकताएँ, एस्केलेशन संपर्क और रोक शर्तें परिभाषित होनी चाहिए।
केवल इसलिए इंटरनेट-मुखी प्रणालियों का परीक्षण कभी न करें क्योंकि वे सुलभ हैं। सुलभता अनुमति नहीं है।
आकलन मोड डेटाबेस, तालिकाओं, कॉलमों या अभिलेखों के बारे में जानकारी उत्पन्न कर सकते हैं। सभी आउटपुट को संभावित रूप से संवेदनशील मानें। रिपोर्टों को उचित अभिगम नियंत्रणों के साथ संग्रहीत करें, शेल इतिहास में गोपनीय जानकारी रखने से बचें, अपने कार्य (engagement) नियमों द्वारा आवश्यक होने पर रिपोर्टों को एन्क्रिप्ट करें, और कार्य समाप्त होने के बाद अस्थायी डेटा को सुरक्षित रूप से हटा दें।
आकलन शुरू करने से पहले, पुष्टि करें कि आपके पास एक ज्ञात-अच्छी बैकअप या पुनर्प्राप्ति प्रक्रिया, सिस्टम स्वामी के साथ संचार चैनल, और एक दस्तावेज़ित रोलबैक या रोक योजना है। जब भी उपलब्ध हो, एक पृथक परीक्षण वातावरण को प्राथमिकता दें। उस कम से कम हस्तक्षेपकारी मोड का उपयोग करें जो आकलन के प्रश्न का उत्तर देता है।
अनुशंसित कार्यप्रवाह जानबूझकर चरणबद्ध है ताकि मूल्यांकनकर्ता सबसे कम प्रभाव वाली गतिविधि से शुरुआत कर सकें और केवल अधिकृत होने पर ही दायरा बढ़ा सकें।``` ┌──────────────────┐ │ Define scope │ Confirm written authorization and test boundaries └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Detect │ Identify phpMyAdmin and collect version indicators └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Verify │ Perform controlled vulnerability checks └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Assess, if │ Continue only when explicitly authorized │ approved │ └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Report │ Preserve evidence, limits, timestamps, and conclusions └──────────────────┘
सकारात्मक परिणाम की समीक्षा लक्ष्य संस्करण, प्रमाणीकरण संदर्भ, अनुरोध साक्ष्य और कार्यक्षेत्र के संदर्भ में की जानी चाहिए। नकारात्मक परिणाम यह साबित नहीं करता कि परिनियोजन सुरक्षित है; यह संस्करण अंतर, अभिगम नियंत्रण, रूटिंग, अनुप्रयोग अनुकूलन, दर सीमा, या अपर्याप्त दृश्यता को दर्शा सकता है।
---
## आवश्यकताएँ
### रनटाइम आवश्यकताएँ
| आवश्यकता | समर्थित आधार |
| --- | --- |
| ऑपरेटिंग सिस्टम | Linux, macOS, या Windows |
| Python | 3.6 या नया, निर्भरता अनुकूलता के अधीन |
| पैकेज प्रबंधक | `pip` |
| संस्करण नियंत्रण | Git, रिपॉजिटरी से स्थापित करते समय |
| नेटवर्क पहुंच | स्पष्ट रूप से अधिकृत मूल्यांकन लक्ष्य से कनेक्टिविटी |
### Python निर्भरताएँ
परियोजना वर्तमान में निम्नलिखित पैकेजों की अपेक्षा करती है:```
requests>=2.31.0
rich>=13.7.0
colorama>=0.4.6
dataclasses>=0.6; python_version < "3.7"
पुनरुत्पादनीय स्थापनाओं के लिए, पैकेजों को अलग-अलग स्थापित करने के बजाय रिपॉजिटरी की requirements.txt फ़ाइल को प्राथमिकता दें।
git clone https://github.com/CerberusMrXi/phpMyAdmin-CVE-2020-5504-Exploit cd phpMyAdmin-CVE-2020-5504-Exploit
python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -r requirements.txt
chmod +x start.sh quick.sh exploit.py
गाइडेड इंटरफ़ेस को इसके साथ प्रारंभ करें:```bash
./start.sh
git clone https://github.com/CerberusMrXi/phpMyAdmin-CVE-2020-5504-Exploit Set-Location phpMyAdmin-CVE-2020-5504-Exploit
py -m venv .venv ..venv\Scripts\Activate.ps1 python -m pip install --upgrade pip python -m pip install -r requirements.txt
.\start.bat
यदि PowerShell निष्पादन नीति लॉन्चर को चलने से रोकती है, तो किसी अधिकृत वातावरण में रिपॉज़िटरी के प्रलेखित PowerShell प्रवेश बिंदु का उपयोग करें:```
powershell -ExecutionPolicy Bypass -File .\start.ps1
इसका उपयोग केवल तभी करें जब requirements.txt उपलब्ध न हो या जब आप जानबूझकर निर्भरताओं को स्वयं प्रबंधित कर रहे हों:```bash
python -m pip install "requests>=2.31.0" "rich>=13.7.0" "colorama>=0.4.6"
---
## उपयोग
नीचे दिए गए उदाहरण `https://authorized.example/phpmyadmin` को प्लेसहोल्डर के रूप में उपयोग करते हैं। इसे केवल उसी लक्ष्य से बदलें जो स्पष्ट रूप से आपके अनुमोदित दायरे के भीतर हो।
### डिटेक्शन मोड
डिटेक्शन मोड अनुशंसित प्रारंभिक बिंदु है। इसका उद्देश्य एप्लिकेशन को फ़िंगरप्रिंट करना और शोषण का प्रयास किए बिना संस्करण संकेतक एकत्र करना है।```bash
python exploit.py \
--url https://authorized.example/phpmyadmin \
--mode detect
मूल इंटरफ़ेस के शॉर्ट-फ़ॉर्म फ़्लैग भी जहाँ लागू हो वहाँ समर्थित हैं:```bash python exploit.py -u https://authorized.example/phpmyadmin -m detect
### सत्यापन मोड
सत्यापन मोड नियंत्रित भेद्यता परीक्षण के लिए अभिप्रेत है। इसका उपयोग केवल तभी करें जब एंगेजमेंट स्पष्ट रूप से सत्यापन गतिविधि की अनुमति देता है और आवश्यक क्रेडेंशियल्स एक स्वीकृत विधि के माध्यम से प्रदान किए गए हों।```bash
python exploit.py \
--url https://authorized.example/phpmyadmin \
--mode verify \
--username "$PMADB_USERNAME" \
--password "$PMADB_PASSWORD"
वास्तविक पासवर्ड को सीधे कमांड में न रखें, क्योंकि कमांड लाइनें शेल हिस्ट्री में संग्रहीत हो सकती हैं या स्थानीय प्रक्रिया निरीक्षण के संपर्क में आ सकती हैं।
अनुसंधान मोड व्यापक अधिकृत मूल्यांकन गतिविधि और डेटा एन्यूमरेशन कर सकता है। इसे समर्पित परीक्षण वातावरण या अनुरोधित दायरे के लिए स्पष्ट लिखित अनुमोदन वाले कार्यों तक सीमित रखा जाना चाहिए।```bash
python exploit.py
--url https://authorized.example/phpmyadmin
--mode research
--username "$PMADB_USERNAME"
--password "$PMADB_PASSWORD"
--max-databases 20
--max-tables 50
### ड्राई-रन मोड
ड्राई-रन मोड कमांड निर्माण को मान्य करने, वर्कफ़्लो व्यवहार की समीक्षा करने और बिना कोई हस्तक्षेपकारी कार्रवाई किए कॉन्फ़िगरेशन का परीक्षण करने के लिए उपयोगी है।```bash
python exploit.py \
--url https://authorized.example/phpmyadmin \
--dry-run
जब आपको परीक्षण के दौरान अनुरोधों और प्रतिक्रियाओं का निरीक्षण करने की आवश्यकता हो, तो ट्रैफ़िक को एक अधिकृत इंटरसेप्शन प्रॉक्सी के माध्यम से रूट करें:```bash
python exploit.py
--url https://authorized.example/phpmyadmin
--mode verify
--proxy http://127.0.0.1:8080
प्रॉक्सी का उपयोग केवल तभी करें जब यह एंगेजमेंट नियमों द्वारा अनुमत हो और इसे अनावश्यक संवेदनशील डेटा एकत्र करने या बनाए रखने से बचने के लिए कॉन्फ़िगर किया गया हो।
### लक्षित डेटाबेस मूल्यांकन
जब स्कोप दस्तावेज़ किसी विशिष्ट डेटाबेस की पहचान करता है, तो मूल्यांकन को उसी डेटाबेस तक सीमित रखें जहाँ कार्यान्वयन इसका समर्थन करता है:```bash
python exploit.py \
--url https://authorized.example/phpmyadmin \
--mode research \
--database target_database \
--max-tables 25
किसी विफल कनेक्शन, अप्रत्याशित प्रतिक्रिया, या कॉन्फ़िगरेशन समस्या की जांच करते समय वर्बोज़ आउटपुट सक्षम करें:```bash
python exploit.py
--url https://authorized.example/phpmyadmin
--mode verify
--verbose
### इंटरैक्टिव इंटरफ़ेस
इंटरैक्टिव लॉन्चर पहली बार उपयोग करने वाले उपयोगकर्ताओं के लिए अनुशंसित है क्योंकि यह निर्देशित संकेत, मोड चयन, प्रगति संकेतक और रंग-कोडित स्थिति आउटपुट प्रदान करता है।```bash
# Linux/macOS
./start.sh
# Windows
start.bat
मोड नाम इच्छित कार्यप्रवाह का वर्णन करते हैं, न कि हर कॉन्फ़िगरेशन के तहत व्यवहार की गारंटी। किसी लाइव सिस्टम के विरुद्ध किसी भी मोड का उपयोग करने से पहले कार्यान्वयन और सहभागिता नियमों की समीक्षा करें।
निम्नलिखित विकल्प वर्तमान प्रोजेक्ट इंटरफ़ेस द्वारा दर्शाए गए हैं। अपने चेकआउट में उपलब्ध सटीक विकल्प नामों की पुष्टि करने के लिए python exploit.py --help चलाएँ।
महत्वपूर्ण: TLS प्रमाणपत्र सत्यापन अक्षम करने से परिवहन सुरक्षा कमजोर होती है और इसे केवल नियंत्रित परीक्षण स्थितियों तक सीमित रखा जाना चाहिए। इसे कभी भी उत्पादन समाधान के रूप में न मानें।
जब ट्रैफ़िक को स्वीकृत प्रॉक्सी के माध्यम से रूट किया जाना हो, तो टूल मानक प्रॉक्सी चरों का उपयोग कर सकता है:```bash export HTTP_PROXY=http://127.0.0.1:8080 export HTTPS_PROXY=http://127.0.0.1:8080
प्रतिबद्ध `.env` फ़ाइल में क्रेडेंशियल्स न रखें। यदि परीक्षण क्रेडेंशियल्स के लिए पर्यावरण चर का उपयोग किया जाता है, तो शेल सत्र को सुरक्षित रखें और अभियान के बाद उन्हें साफ़ कर दें:```bash
export PMADB_USERNAME='authorized-test-user'
export PMADB_PASSWORD='use-an-approved-secret-source'
# Remove them when finished
unset PMADB_USERNAME PMADB_PASSWORD
स्थायी, गैर-गोपनीय मूल्यांकन सेटिंग्स के लिए config.yaml बनाएँ:```yaml
scan:
timeout: 10
retries: 3
max_databases: 50
max_tables: 100
max_columns: 50
max_rows: 100
delay_between_requests: 0.5
report: format: json output: report.json include_sensitive: false
क्रेडेंशियल को इस फ़ाइल से बाहर रखें, जब तक कि फ़ाइल आपके संगठन की स्वीकृत गोपनीय-प्रबंधन प्रक्रिया द्वारा सुरक्षित न हो। संवेदनशील मानों वाली स्थानीय कॉन्फ़िगरेशन फ़ाइलों को `.gitignore` में जोड़ें।
---
## रिपोर्ट्स
फ्रेमवर्क JSON, HTML और TXT आउटपुट का समर्थन करता है। ऐसा प्रारूप चुनें जो सहभागिता के दर्शकों और प्रतिधारण आवश्यकताओं से मेल खाता हो।
### JSON रिपोर्ट
JSON स्वचालन, संग्रहण और मूल्यांकन पाइपलाइनों में आयात के लिए उपयुक्त है। नीचे एक प्रतिनिधि रिपोर्ट संरचना दिखाई गई है; सटीक फ़ील्ड संस्करण और मोड के अनुसार भिन्न हो सकती हैं।```json
{
"scan_info": {
"target": "https://authorized.example/phpmyadmin",
"timestamp": "2024-01-15T10:30:00Z",
"mode": "verify",
"scanner": "CVE-2020-5504 Security Assessment Tool v1.2",
"author": "Sudeepa Wanigarathna"
},
"fingerprint": {
"is_phpmyadmin": true,
"version": "5.0.0",
"confidence": "CONFIRMED"
},
"verification": {
"vulnerable": true,
"confidence": "CONFIRMED",
"status": "VULNERABLE_CONFIRMED"
},
"authentication": {
"authenticated": true,
"user": "authorized-test-user",
"score": 8
},
"extracted_data": {
"databases": ["information_schema", "mysql", "test"]
}
}
HTML आउटपुट मानवीय समीक्षा के लिए होता है। इसमें स्टाइल किए गए अनुभाग, स्थिति संकेतक, साक्ष्य सारांश, मेटाडेटा और प्रिंट करने योग्य लेआउट शामिल हो सकते हैं। जनरेट की गई रिपोर्ट को एक्सेस-नियंत्रित स्थान पर संग्रहीत करें।
TXT आउटपुट टर्मिनल समीक्षा, लॉग संग्रह, टिकट अनुलग्नक और उन वातावरणों के लिए उपयोगी है जहां समृद्ध फ़ॉर्मेटिंग वांछनीय नहीं है।
रिपोर्ट साझा करने से पहले, पुष्टि करें कि इसमें केवल वही जानकारी है जो एंगेजमेंट द्वारा अनुमत है। URLs, उपयोगकर्ता नाम, डेटाबेस नाम, रिकॉर्ड मान, कुकीज़, टोकन, अनुरोध हेडर और डीबग आउटपुट की समीक्षा करें ताकि उनमें कोई रहस्य या व्यक्तिगत डेटा न हो। जब संवेदनशील सामग्री निष्कर्ष का समर्थन करने के लिए आवश्यक न हो, तो उसे रिडैक्ट करें या हटा दें।
परियोजना एक चरणबद्ध मूल्यांकन पाइपलाइन के रूप में व्यवस्थित है:``` Target │ ├── Fingerprinting │ ├── Version detection │ └── Path discovery │ ├── Vulnerability checks │ ├── Controlled verification │ └── Confidence analysis │ ├── Authentication │ ├── CSRF token extraction │ ├── Multi-signal validation │ └── Session management │ ├── Authorized assessment │ ├── Database enumeration │ ├── Table extraction │ └── Scoped data requests │ └── Reporting ├── JSON ├── HTML └── TXT
### प्रतिक्रिया विश्लेषण परत
प्रतिक्रिया विश्लेषण परत HTTP प्रतिक्रियाओं और अनुप्रयोग व्यवहार की व्याख्या को केंद्रीकृत करती है। निम्नलिखित अवधारणात्मक इंटरफ़ेस इच्छित जिम्मेदारियों को दर्शाता है:```
ResponseAnalyzer
├── status_code( )
├── content_type()
├── authenticated()
├── error_detected()
├── verification_result()
└── extract_metadata()
इन जाँचों को केंद्रीकृत करने से फ़िंगरप्रिंटिंग, प्रमाणीकरण, सत्यापन और रिपोर्टिंग चरणों में स्थिरता बनाए रखने में मदद मिलती है।
Login request │ ▼ CSRF token extraction │ ▼ Login submission │ ▼ Cookie and session validation │ ▼ Authenticated-page access test │ ▼ Expected-content verification │ ▼ Authenticated result
---
## समस्या निवारण
### SSL प्रमाणपत्र त्रुटियाँ
यदि कोई नियंत्रित परीक्षण वातावरण आंतरिक या स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग करता है, तो प्रोजेक्ट के TLS विकल्प का उपयोग केवल तभी करें जब जोखिम समझा गया हो और अभियान इसकी अनुमति देता है:```bash
python exploit.py \
--url https://authorized.example/phpmyadmin \
--mode detect \
--no-verify-ssl
पसंदीदा समाधान प्रमाणपत्र श्रृंखला या ट्रस्ट कॉन्फ़िगरेशन को सही करना है, न कि सत्यापन को अक्षम करना।
रूटिंग, DNS, प्रॉक्सी कॉन्फ़िगरेशन और टार्गेट उपलब्धता की जाँच करने के बाद ही टाइमआउट बढ़ाएँ:```bash
python exploit.py
--url https://authorized.example/phpmyadmin
--mode detect
--timeout 30
लक्ष्य पर अनावश्यक भार डालने से बचने के लिए संयमित अनुरोध दर और विलंब का उपयोग करें।
### प्रमाणीकरण विफलताएँ
पुष्टि करें कि परीक्षण खाता मान्य है, कि खाते को लक्ष्य तक पहुँचने की अनुमति है, और यह कि प्रदान किया गया URL सही phpMyAdmin इंस्टॉलेशन की ओर इशारा करता है। क्रेडेंशियल या सत्र मान साझा किए बिना CSRF, cookie, redirect, और content-type संकेतकों के लिए वर्बोज़ आउटपुट की समीक्षा करें।
### `rich` पैकेज गायब है
सक्रिय वर्चुअल वातावरण के अंदर प्रोजेक्ट की निर्भरताएँ स्थापित करें:```bash
python -m pip install -r requirements.txt
यदि वर्तमान संस्करण द्वारा समर्थित हो, तो न्यूनतम टर्मिनल अनुभव के लिए समृद्ध फ़ॉर्मेटिंग अक्षम करें:```bash
python exploit.py
--url https://authorized.example/phpmyadmin
--mode detect
--no-rich
### Linux या macOS पर अनुमति अस्वीकृत
लॉन्चर को निष्पादन योग्य बनाएं:```bash
chmod +x start.sh exploit.py
अप्रत्याशित परिणामों को रुककर जांच करने के कारण के रूप में लें। लक्ष्य संस्करण, रिवर्स-प्रॉक्सी व्यवहार, प्रमाणीकरण स्थिति, अनुरोध/प्रतिक्रिया साक्ष्य, कॉन्फ़िगर की गई सीमाएं, पुनः प्रयास व्यवहार, और यह कि क्या किसी अन्य सुरक्षा नियंत्रण ने प्रतिक्रिया को बदल दिया है, की जांच करें। केवल पसंदीदा परिणाम प्राप्त करने के लिए किसी उच्च-प्रभाव मोड को बार-बार न चलाएं।
आधिकारिक phpMyAdmin सलाह प्रभावित इंस्टॉलेशनों को निम्नानुसार अपग्रेड करने की अनुशंसा करती है:[1]
| प्रभावित लाइन | प्रभावित संस्करण | अनुशंसित कार्रवाई |
|---|---|---|
| phpMyAdmin 4.x | 4.9.4 से पहले | 4.9.4 या नए में अपग्रेड करें। |
| phpMyAdmin 5.x | 5.0.0 | 5.0.1 या नए में अपग्रेड करें। |
संगठनों को MySQL खाता विशेषाधिकारों की समीक्षा करनी चाहिए, प्रशासनिक इंटरफेस को प्रतिबंधित करना चाहिए, मजबूत प्रमाणीकरण लागू करना चाहिए, नेटवर्क एक्सपोज़र को सीमित करना चाहिए, प्रशासनिक गतिविधि की निगरानी करनी चाहिए, और विक्रेता के वर्तमान रिलीज़ और सुरक्षा मार्गदर्शन का पालन करना चाहिए। ये उपाय पैचिंग के पूरक हैं; वे इसे प्रतिस्थापित नहीं करते हैं।
सुधार के बाद, अनुमोदित वातावरण में पुनः सत्यापन करें और स्थापित संस्करण, परिनियोजन पथ, परीक्षण तिथि, और परिणाम दर्शाने वाला साक्ष्य बनाए रखें। जब तक प्राधिकरण में स्पष्ट रूप से सुधार-पश्चात सत्यापन शामिल न हो, उत्पादन प्रणालियों का परीक्षण करने से बचें।
git clone https://github.com/CerberusMrXi/phpMyAdmin-CVE-2020-5504-Exploit cd phpMyAdmin-CVE-2020-5504-Exploit
python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -r requirements-dev.txt
Windows पर, environment को निम्न प्रकार से सक्रिय करें:```
.\.venv\Scripts\Activate.ps1
python -m pytest tests/
### Code-quality expectations
योगदानों को PEP 8 का पालन करना चाहिए, जहाँ व्यावहारिक हो वहाँ type hints का उपयोग करना चाहिए, वर्णनात्मक docstrings शामिल करनी चाहिए, स्पष्ट error handling बनाए रखनी चाहिए, और credentials, cookies, tokens या अनावश्यक निकाले गए डेटा को लॉग करने से बचना चाहिए। Assessment scope, request behavior, authentication या reporting को प्रभावित करने वाले परिवर्तनों में tests और documentation updates शामिल होने चाहिए।
### Suggested repository layout```
.
├── exploit.py
├── requirements.txt
├── requirements-dev.txt
├── config.yaml.example
├── start.sh
├── start.bat
├── start.ps1
├── tests/
├── docs/
│ └── images/
└── reports/
Do not commit generated reports, credentials, session artifacts, or target-specific data. Add them to .gitignore where appropriate.
Contributions are welcome when they improve reliability, documentation, test coverage, accessibility, or safe assessment workflows.
रिपॉजिटरी को फोर्क करें।
एक केंद्रित शाखा बनाएं, जैसे feature/improved-fingerprint-parser।
समस्या को हल करने वाला सबसे छोटा सुसंगत परिवर्तन करें।
टेस्ट और दस्तावेज़ीकरण जोड़ें या अपडेट करें।
टेस्ट सूट को स्थानीय रूप से चलाएँ।
स्पष्ट संदेश के साथ कमिट करें।
शाखा को पुश करें और एक पुल रिक्वेस्ट खोलें जिसमें परिवर्तन, किए गए परीक्षण, और किसी भी सुरक्षा या संगतता निहितार्थों का वर्णन हो।```bash git checkout -b feature/improved-fingerprint-parser git add . git commit -m "Improve fingerprint result handling" git push origin feature/improved-fingerprint-parser
कृपया ऐसे बदलाव सबमिट न करें जो अनधिकृत लक्ष्य जोड़ते हैं, सुरक्षा उपायों को कमज़ोर करते हैं, वास्तविक क्रेडेंशियल उजागर करते हैं, लाइव सिस्टम डेटा शामिल करते हैं, या दस्तावेजित दायरे के बाहर परीक्षण को प्रोत्साहित करते हैं।
---
## परिवर्तन सूची
### संस्करण 1.2
- `FingerprintResult` की डिटेल्स-एट्रिब्यूट त्रुटि ठीक की गई।
- जब रिच टर्मिनल फ़ॉर्मेटिंग अनुपलब्ध हो, तो फ़ॉलबैक पथ जोड़ा गया।
- संस्करण-पहचान पैटर्न में सुधार किया गया।
- पूरे वर्कफ़्लो में त्रुटि प्रबंधन को मजबूत किया गया।
- नियंत्रित परीक्षण के लिए TLS सत्यापन नियंत्रण जोड़ा गया।
- क्रॉस-प्लेटफ़ॉर्म संगतता में सुधार किया गया।
### संस्करण 1.1
- एक समर्पित फ़िंगरप्रिंटिंग मॉड्यूल जोड़ा गया।
- सुरक्षित सत्यापन मोड लागू किया गया।
- मल्टी-सिग्नल प्रमाणीकरण सत्यापन जोड़ा गया।
- व्यापक रिपोर्ट निर्माण जोड़ा गया।
- रिच टर्मिनल इंटरफ़ेस को एकीकृत किया गया।
### संस्करण 1.0
- प्रारंभिक रिलीज़।
- आधारभूत SQL इंजेक्शन मूल्यांकन कार्यक्षमता जोड़ी गई।
- डेटाबेस एन्यूमरेशन जोड़ा गया।
- JSON आउटपुट जोड़ा गया।
---
## लाइसेंस
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंसित है। संपूर्ण पाठ के लिए [LICENSE](https://github.com/cerberusmrxi/phpmyadmin-cve-2020-5504-exploit/blob/HEAD/LICENSE) फ़ाइल देखें।```
MIT License
Copyright (c) 2024 Sudeepa Wanigarathna
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
सॉफ़्टवेयर बिना किसी वारंटी के प्रदान किया जाता है। प्रोजेक्ट को पुनर्वितरित करने से पहले पूरी LICENSE फ़ाइल की समीक्षा करें।
यह प्रोजेक्ट phpMyAdmin टीम को उसकी सुरक्षा सलाह (security advisory) और पैच के लिए, उस कमज़ोरी की रिपोर्ट करने वाले शोधकर्ताओं को, तथा फ्रेमवर्क द्वारा उपयोग की जाने वाली लाइब्रेरियों के पीछे के ओपन-सोर्स अनुरक्षकों (maintainers) को स्वीकार करता है।
| चैनल | लिंक |
|---|---|
| लेखक | सुदीपा वानिगरत्ना |
| GitHub प्रोफ़ाइल | @sudeepawanigarathna |
इस प्रोजेक्ट से संबंधित कमज़ोरी रिपोर्ट के लिए, संवेदनशील विवरण सार्वजनिक रूप से पोस्ट करने से बचें। एक निजी सुरक्षा संपर्क या रिपॉज़िटरी के प्रलेखित सुरक्षा-रिपोर्टिंग प्रक्रिया का उपयोग करें, एक बार वह कॉन्फ़िगर हो जाए।
https://www.phpmyadmin.net/security/PMASA-2020-1/ "phpMyAdmin PMASA-2020-1 सुरक्षा सलाह"
https://nvd.nist.gov/vuln/detail/CVE-2020-5504 "NIST राष्ट्रीय कमज़ोरी डेटाबेस: CVE-2020-5504"
सुरक्षा जिम्मेदार प्रकटीकरण (responsible disclosure) के माध्यम से।
| क्षेत्र | क्षमता | विवरण |
|---|
| खोज | स्वचालित फ़िंगरप्रिंटिंग | संभावित phpMyAdmin परिनियोजनों की पहचान करता है और संस्करण-संबंधित संकेतक एकत्र करता है। |
| सत्यापन | भेद्यता सत्यापन | आत्मविश्वास-उन्मुख परिणाम प्रबंधन के साथ नियंत्रित जाँचें करता है। |
| कार्यप्रवाह | कई संचालन मोड | पहचान, सत्यापन, अनुसंधान और ड्राई-रन कार्यप्रवाहों का समर्थन करता है। |
| सत्र प्रबंधन | CSRF टोकन प्रबंधन | एप्लिकेशन प्रवाह के लिए आवश्यक CSRF-संबंधित मानों को निकालता और प्रबंधित करता है। |
| प्रमाणीकरण | बहु-संकेत सत्यापन | गलत प्रमाणीकरण परिणामों को कम करने के लिए कई संकेतकों का उपयोग करता है। |
| आकलन | डेटाबेस गणना | डेटाबेस, तालिकाओं, कॉलमों और चयनित डेटा की अधिकृत गणना का समर्थन करता है। |
| इंजेक्शन अनुसंधान | ब्लाइंड तकनीकें | जहाँ कार्यान्वयन द्वारा सक्षम किया गया हो, बूलियन-आधारित और समय-आधारित अनुसंधान कार्यप्रवाहों का समर्थन करता है। |
| रिपोर्टिंग | JSON, HTML और TXT | विभिन्न दर्शकों के लिए संरचित, स्टाइल किया हुआ और सादा-पाठ आउटपुट तैयार करता है। |
| विश्वसनीयता | पुनःप्रयास और बैकऑफ़ | कॉन्फ़िगर करने योग्य व्यवहार के साथ क्षणिक अनुरोधों को पुनः प्रयास करता है। |
| एकीकरण | प्रॉक्सी समर्थन | Burp Suite या किसी अन्य HTTP इंटरसेप्शन प्रॉक्सी के साथ उपयोग किया जा सकता है। |
| उपयोगिता | समृद्ध टर्मिनल इंटरफ़ेस | रंग-कोडित आउटपुट, प्रगति संकेतक और पठनीय स्थिति संदेश प्रदान करता है। |
| डायग्नोस्टिक्स | विस्तृत लॉगिंग | अधिकृत समस्या निवारण के लिए अतिरिक्त नैदानिक जानकारी उजागर करता है। |
| मोड | उद्देश्य | अपेक्षित प्रभाव | अनुशंसित उपयोग |
|---|
detect | एप्लिकेशन की पहचान करें और संस्करण संकेतकों को पहचानें। | कोई नहीं या न्यूनतम | स्वीकृत दायरे में प्रारंभिक टोही। |
verify | नियंत्रित जाँचों के माध्यम से जाँचें कि लक्ष्य संवेदनशील दिखता है या नहीं। | कम | अधिकृत मूल्यांकन के दौरान पुष्टिकरण। |
research | व्यापक मूल्यांकन और अधिकृत एन्यूमरेशन करें। | उच्च | समर्पित प्रयोगशालाएँ या स्पष्ट अनुमोदन वाले अभियान। |
dry-run | आक्रामक कार्यों को किए बिना कार्यप्रवाह व्यवहार का अनुकरण करें। | कोई नहीं | कॉन्फ़िगरेशन और कमांड सत्यापन। |
| विकल्प | विवरण | उदाहरण |
|---|
-u, --url | अधिकृत phpMyAdmin आधार URL। | --url https://authorized.example/phpmyadmin |
-m, --mode | detect, verify, या research का चयन करता है। | --mode verify |
--dry-run | आक्रामक कार्यों के बिना कार्यप्रवाह का अनुकरण करता है। | --dry-run |
--username | स्वीकृत परीक्षण खाते के लिए उपयोगकर्ता नाम। | --username "$PMADB_USERNAME" |
--password | स्वीकृत परीक्षण खाते के लिए पासवर्ड। | --password "$PMADB_PASSWORD" |
-p, --proxy | HTTP प्रॉक्सी URL। | --proxy http://127.0.0.1:8080 |
-f, --format | रिपोर्ट प्रारूप जैसे json, html, या txt। | --format html |
-o, --output | आउटपुट फ़ाइल पथ। | --output report.html |
-d, --database | जहाँ समर्थित हो, गतिविधि को नामित डेटाबेस तक सीमित करता है। | --database target_database |
-t, --timeout | अनुरोध टाइमआउट सेकंडों में। | --timeout 30 |
--max-databases | एन्यूमरेट करने के लिए अधिकतम डेटाबेस। | --max-databases 20 |
--max-tables | एन्यूमरेट करने के लिए अधिकतम तालिकाएँ। | --max-tables 50 |
--max-columns | एन्यूमरेट करने के लिए अधिकतम कॉलम। | --max-columns 50 |
--max-rows | जहाँ समर्थित हो, अनुरोध करने के लिए अधिकतम पंक्तियाँ। | --max-rows 100 |
-v, --verbose | डायग्नोस्टिक आउटपुट सक्षम करता है। | --verbose |
--no-verify-ssl | केवल नियंत्रित परीक्षण के लिए TLS प्रमाणपत्र सत्यापन अक्षम करता है। | --no-verify-ssl |
--no-rich | रिच टर्मिनल फ़ॉर्मेटिंग अक्षम करता है। | --no-rich |
| इश्यू ट्रैकर | रिपॉज़िटरी इश्यू |
| ईमेल | [email protected] |