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

कानूनी और नैतिक सूचना
यह टूलकिट केवल शैक्षिक, प्रशिक्षण और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान की गई है।
किसी भी सिस्टम के विरुद्ध स्पष्ट लिखित अनुमति के बिना अनधिकृत उपयोग अवैध है और कंप्यूटर अपराध कानूनों का उल्लंघन करता है।
लेखक दुरुपयोग या क्षति के लिए शून्य दायित्व स्वीकार करता है।
आप अपने कार्यों के लिए पूर्ण रूप से जिम्मेदार हैं।
CVE-2026-57821 Apache Fineract के office listing API endpoint में पाई गई एक SQL इंजेक्शन भेद्यता है।
| विशेषता | विवरण |
|---|---|
| Endpoint | /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 Team) |
| सार्वजनिक प्रकटीकरण तिथि | 14 जुलाई, 2026 |
| पैच किया गया संस्करण | Apache Fineract 1.15.0 |
| आधिकारिक घोषणा | Apache Mailing List |
| GitHub फिक्स | PR #6048 |
यह टूलकिट 11 विभिन्न डेटाबेस बैकएंड्स के लिए शोषण तकनीकों का स्वचालित रूप से पता लगाती है और उन्हें अनुकूलित करती है:
| डेटाबेस | पहचान विधि | शोषण तकनीक |
|---|---|---|
| PostgreSQL | समय-आधारित (pg_sleep) | समय-आधारित ब्लाइंड |
| MySQL | समय-आधारित (SLEEP) | समय-आधारित ब्लाइंड |
| MariaDB | समय-आधारित + @@version_comment | समय-आधारित ब्लाइंड |
| MSSQL | त्रुटि-आधारित (CONVERT विफलता) | त्रुटि-आधारित |
| Oracle | समय-आधारित (DBMS_LOCK.SLEEP) | समय-आधारित ब्लाइंड |
| SQLite | भारी क्वेरी (कार्टेशियन जॉइन) | समय-आधारित (भारी) |
| Firebird | भारी क्वेरी (कार्टेशियन जॉइन) | समय-आधारित (भारी) |
| DB2 | भारी क्वेरी (कार्टेशियन जॉइन) | समय-आधारित (भारी) |
| Informix | भारी क्वेरी (कार्टेशियन जॉइन) | समय-आधारित (भारी) |
| H2 | भारी क्वेरी (कार्टेशियन जॉइन) | समय-आधारित (भारी) |
| अज्ञात (जेनेरिक) | PostgreSQL पर फ़ॉलबैक | समय-आधारित |
यह प्रोजेक्ट विभिन्न सुरक्षा मूल्यांकन परिदृश्यों के लिए दो 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 |
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 निष्पादन संभव हो जाता है।