🔐 CVE-2026-57821 - Apache Fineract SQL इंजेक्शन टूलकिट 📚 अधिकृत सुरक्षा परीक्षण के लिए दो Python स्क्रिप्ट: verifier.py (सुरक्षित पहचान, कोई निष्कर्षण नहीं) और exploit.py (गहन विश्लेषण)। 11 DB प्रकारों का समर्थन करता है। SQL इंजेक्शन भेद्यताओं को समझने के लिए एकदम सही। केवल कानूनी परीक्षण ⚠️ केवल शैक्षिक और शोध उद्देश्यों के लिए।

⚠️ कानूनी और नैतिक सूचना
यह टूलकिट केवल शैक्षिक, प्रशिक्षण और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान किया गया है।
स्पष्ट लिखित अनुमति के बिना किसी भी सिस्टम के विरुद्ध अनधिकृत उपयोग अवैध है और कंप्यूटर अपराध कानूनों का उल्लंघन करता है।
लेखक दुरुपयोग या क्षति के लिए शून्य देयता मानता है।
आप अपने कार्यों के लिए पूरी तरह जिम्मेदार हैं।
CVE-2026-57821 एक SQL इंजेक्शन भेद्यता है जो Apache Fineract के कार्यालय सूची API एंडपॉइंट में खोजी गई थी।
| गुण | विवरण |
|---|
| एंडपॉइंट | /api/v1/offices |
| पैरामीटर | orderBy |
| विधि | GET |
| प्रमाणीकरण आवश्यक | हाँ (केवल प्रमाणित उपयोगकर्ता) |
| प्रभावित संस्करण | Apache Fineract ≤ 1.14.0 |
| पैच संस्करण | Apache Fineract 1.15.0 |
यह भेद्यता इसलिए मौजूद है क्योंकि orderBy पैरामीटर को उचित स्वच्छता के बिना सीधे SQL क्वेरी में एम्बेड किया जाता है। एक हमलावर वैध क्रेडेंशियल्स के साथ कोष्ठक () में लिपटे उप-क्वेरी को orderBy पैरामीटर में इंजेक्ट कर सकता है।
यह पिछले फिक्स को क्यों बायपास करता है:
ORDER BY खंडों को स्वच्छ करने के लिए एक ColumnValidator पेश कियाORDER BY संदर्भ में मनमाना SQL निष्पादन की अनुमति देता हैउदाहरण हमला वेक्टर:
GET /api/v1/offices?orderBy=(SELECT CASE WHEN (1=1) THEN pg_sleep(5) ELSE pg_sleep(0) END)&limit=1
| प्रभाव | विवरण |
|---|---|
| डेटा निष्कासन | समय-आधारित ब्लाइंड SQL इंजेक्शन संवेदनशील डेटाबेस सामग्री निकाल सकता है |
| सेवा से इनकार | भारी क्वेरी कनेक्शन पूल संसाधनों को समाप्त कर सकती हैं |
| सूचना प्रकटीकरण | त्रुटि-आधारित तकनीकें डेटाबेस संरचना और डेटा प्रकट कर सकती हैं |
| गुण | विवरण |
|---|---|
| खोजकर्ता / रिपोर्टर | Terence Monteiro (Apache Fineract टीम) |
| सार्वजनिक प्रकटीकरण तिथि | 14 जुलाई, 2026 |
| पैच संस्करण | Apache Fineract 1.15.0 |
| आधिकारिक घोषणा | Apache मेलिंग सूची |
| GitHub फिक्स | PR #6048 |
यह टूलकिट 11 विभिन्न डेटाबेस बैकएंड के लिए स्वचालित रूप से शोषण तकनीकों का पता लगाता और अनुकूलित करता है:
| डेटाबेस | पता लगाने की विधि | शोषण तकनीक |
|---|---|---|
| PostgreSQL | Time‑based (pg_sleep) | Time‑based Blind |
| MySQL | Time‑based (SLEEP) | Time‑based Blind |
| MariaDB | Time‑based + @@version_comment | Time‑based Blind |
| MSSQL | Error‑based (CONVERT failure) | Error‑based |
| Oracle | Time‑based (DBMS_LOCK.SLEEP) | Time‑based Blind |
| SQLite | Heavy Query (Cartesian Join) | Time‑based (Heavy) |
| Firebird | Heavy Query (Cartesian Join) | Time‑based (Heavy) |
| DB2 | Heavy Query (Cartesian Join) | Time‑based (Heavy) |
| Informix | Heavy Query (Cartesian Join) | Time‑based (Heavy) |
| H2 | Heavy Query (Cartesian Join) | Time‑based (Heavy) |
| Unknown (Generic) | Fallback to PostgreSQL | Time‑based |
यह परियोजना विभिन्न सुरक्षा मूल्यांकन परिदृश्यों के लिए दो Python स्क्रिप्ट प्रदान करती है:
verifier.py – सुरक्षित और न्यूनतम सत्यापन उपकरणउद्देश्य: डेटा निकाले बिना तुरंत भेद्यता के अस्तित्व को साबित करना।
यह क्या करता है:
VULNERABLE या NOT VULNERABLE रिपोर्ट करता है✅ लाभ:
📋 उपयोग मामला: यह निर्धारित करने के लिए पहला मूल्यांकन कि लक्ष्य असुरक्षित है या नहीं।
exploit.py – व्यापक सुरक्षा विश्लेषकउद्देश्य: डेटाबेस जानकारी निकालने के लिए भेद्यता का पूरी तरह से उपयोग करना।
यह क्या करता है:
✅ लाभ:
📋 उपयोग मामला: भेद्यता की पुष्टि के बाद गहन सुरक्षा विश्लेषण।
🔍 मुख्य अंतर:
verifierPoC.pyआपको बताता है कि यह असुरक्षित है;exploit.pyआपको दिखाता है क्या निकाला जा सकता है। दोनों सुरक्षा मूल्यांकन वर्कफ़्लो में अलग-अलग लेकिन पूरक भूमिकाएँ निभाते हैं।
requests लाइब्रेरीpip install requests
दोनों स्क्रिप्ट के शीर्ष पर निम्नलिखित वेरिएबल्स को संपादित करें:
| वेरिएबल | विवरण | डिफ़ॉल्ट |
|---|---|---|
TARGET | Fineract API URL | http://localhost:8080/fineract-provider/api/v1/offices |
USERNAME | API प्रमाणीकरण उपयोगकर्ता नाम | mifos |
PASSWORD | API प्रमाणीकरण पासवर्ड | password |
TENANT_ID | टेनेंट पहचानकर्ता | default |
BASE_SLEEP | समय-आधारित परीक्षणों के लिए नींद अवधि (exploit.py) | 6 |
SLEEP_SECONDS | समय-आधारित परीक्षणों के लिए नींद अवधि (verifier.py) | 5 |
TIMEOUT | HTTP अनुरोध टाइमआउट | 25 (exploit) / 15 (verifier) |
MAX_RETRIES | असफल अनुरोधों के लिए पुनः प्रयास संख्या | 2 |
1️⃣ exploit.py - गहन स्कैन
python3 exploit.py
अपेक्षित आउटपुट:
CVE-2026-57821 - Apache Fineract Vulnerability Verifier
══════════════════════════════════════════════════════════════════════════════════════
@tc4dy is here :) Good Luck!
CONNECTION SUCCESS
BASELINE: 0.234s
STARTING VULNERABILITY VERIFICATION
VERIFICATION RESULTS
PostgreSQL: VULNERABLE
MySQL: NOT VULNERABLE
MariaDB: NOT VULNERABLE
Oracle: NOT VULNERABLE
MSSQL: NOT VULNERABLE
CONCLUSION: TARGET IS VULNERABLE (CVE-2026-57821 CONFIRMED)
Interpretation: If VULNERABLE appears for any database type, the target is affected.
CVSS स्कोर मीट्रिक मान CVSS v3.1 आधार स्कोर 8.1 (उच्च) वेक्टर CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H हमला वेक्टर नेटवर्क आवश्यक विशेषाधिकार निम्न उपयोगकर्ता इंटरैक्शन कोई नहीं EPSS स्कोर
0.29% (30 दिनों के भीतर शोषण की संभावना)
CWE मैपिंग
CWE‑89: SQL कमांड में विशेष तत्वों का अनुचित तटस्थीकरण ('SQL इंजेक्शन')
पेलोड क्यों काम करता है
Apache Fineract 1.14.0 में असुरक्षित कोड:
// Simplified vulnerable logic
String orderBy = request.getParameter("orderBy");
if (ColumnValidator.isValid(orderBy)) {
// VALIDATOR FAILS FOR: "(SELECT ...)"
// Only checks against simple column names
String sql = "SELECT * FROM offices ORDER BY " + orderBy;
// Executes query with user input directly
}
हमलावर पेलोड उदाहरण:
GET /api/v1/offices?orderBy=(SELECT CASE WHEN (1=1) THEN pg_sleep(5) ELSE pg_sleep(0) END)&limit=1
परिणामी SQL:
SELECT * FROM offices ORDER BY (SELECT CASE WHEN (1=1) THEN pg_sleep(5) ELSE pg_sleep(0) END)
ColumnValidator कॉलम नामों की जाँच करता है लेकिन नेस्टेड उप-क्वेरी को छोड़ देता है, जिससे मनमाना SQL निष्पादन संभव होता है।
| कार्रवाई | प्राथमिकता |
|---|---|
| Apache Fineract 1.15.0+ में अपग्रेड करें | 🔴 गंभीर |
| PR #6048 पैच लागू करें | 🔴 गंभीर |
WAF नियम: orderBy को ब्लॉक करें जिसमें (SELECT, SLEEP(, pg_sleep(, WAITFOR हो | 🟠 उच्च |
लॉग मॉनिटर करें कोष्ठक या उप-क्वेरी कीवर्ड वाले orderBy के लिए | 🟠 उच्च |
| डेटाबेस कनेक्शन पूल मॉनिटरिंग संसाधन थकावट का पता लगाने के लिए | 🟡 मध्यम |