
vsftpd 3.0.5 - उच्च - रिमोट - विशेषाधिकार शेष - cmds_denied में RFC उपनाम (XRMD) छूट गए
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · vsftpd-cmds-denied-alias
राइट-अप: https://abraxaslabs.tech/research/vsftpd-cmds-denied-alias
वर्ग: विशेषाधिकार अवशेष पहुँच: रिमोट
vsftpd 3.0.5 - Chris Evans
मैंने आधिकारिक tarball को पिन किया, किसी GitHub मिरर या distro फोर्क को नहीं। SHA-256 26b602ae454b0ba6d99ef44a09b6b9e0dfa7f67228106736df1f278c70bc91d3। vsftpver.h VSF_VERSION "3.0.5"।
cmds_denied process_post_login (postlogin.c:140-184) में एक सटीक अपरकेस टोकन मिलान है। इसके बाद डिस्पैच समान हैंडलरों पर RFC 775 उपनामों को OR करता है: RMD||XRMD (:263-264), साथ ही CWD||XCWD, MKD||XMKD, PASV||P@SW, और अलग EPSV / STOU / APPE। जो ऑपरेटर RMD को डिनाइलिस्ट करता है (सामान्य DELE,RMD नुस्खा) वह अभी भी XRMD को rmdir करने देता है।
यह अवशेष एक डिनाइलिस्ट के अंतर्गत प्रमाणित FTP अखंडता है जिसे ऑपरेटर ने बंद समझा था। यह unauth नहीं है, root नहीं है, chroot एस्केप नहीं है, और RCE नहीं है।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | विशेषाधिकार अवशेष (cmds_denied सटीक टोकन) |
| पहुँच | रिमोट (प्रमाणित FTP) |
| CWE | CWE-863 |
| CVSS | उच्च: 7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N |
| उत्पाद | vsftpd (Chris Evans) |
| प्रभावित | vsftpd 3.0.5 आधिकारिक tarball |
| प्रमाणीकरण | FTP USER/PASS (लैब: अनाम ftp) |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1:18720 |
कौन: एक प्रमाणित FTP उपयोगकर्ता (अनाम या स्थानीय) उस डेमॉन पर जहाँ ऑपरेटर ने cmds_denied सेट किया है। डिफ़ॉल्ट अनसेट है। मैन पेज में उल्लिखित वर्चुअल-उपयोगकर्ता नुस्खे एक ही guest uid साझा करते हैं, इसलिए Unix DAC उन्हें अलग नहीं कर सकता। सत्र पहले से ही सामान्य chroot के भीतर मैप किया गया uid है। cmds_denied वह अतिरिक्त नियंत्रण था जो क्रिया को हटाने वाला था।
| विधि + सिंक | विशेषाधिकार |
|---|---|
cmds_denied=RMD के बाद XRMD labdir | handle_rmd -> सत्र uid द्वारा Unix-rmdir किए जा सकने वाली निर्देशिका का str_rmdir। लैब: RMD labdir 550, XRMD labdir 250, CWD labdir 550 (निर्देशिका चली गई)। दूसरा MKD labctrl अभी भी RMD पर 550। |
| विधि + सिंक | विशेषाधिकार |
|---|---|
cmds_denied=MKD के बाद XMKD dir | handle_mkd -> सत्र uid के रूप में mkdir |
cmds_denied=CWD के बाद XCWD path | handle_cwd -> chdir। फिर RETR यदि download_enable |
cmds_denied=STOR के बाद STOU / APPE | handle_upload_common बनाएँ / जोड़ें। write_enable आवश्यक |
cmds_denied=PASV के बाद EPSV / P@SW | handle_pasv एक डेटा लिसनर खोलता है जिसे डिनाइलिस्ट रोकने वाला था |
लैब ने केवल RMD के बाद XRMD सिद्ध किया। अन्य उपनाम वही str_equal गेट और डिस्पैच में वही OR साझा करते हैं। मैंने उन्हें नहीं आज़माया।
प्रथम-श्रेणी के अवशेष के रूप में कोई नहीं। cmds_denied कोई छिपाव नहीं है। XRMD नाम सूचीबद्ध नहीं करता।
बार में नहीं। निर्देशिका हटाना एक अखंडता हिट है। उस नाम का बाद में CWD / RETR 550 हो जाता है एक दुष्प्रभाव के रूप में।
cmds_denied (प्री-लॉगिन इसे अनदेखा करता है; USER/PASS/QUIT प्री-लॉगिन तालिका में ही रहते हैं)allow_writeable_chroot डिफ़ॉल्ट रूप से बंद; लैब केवल /incoming के अंतर्गत लिखता है इसलिए डिनाय अभी भी लागू रहता है)cmds_allowed फेल-क्लोज़्ड: सूचीबद्ध न किए गए वर्ब्स, जिनमें XRMD भी शामिल है, 550 पर ही रहते हैंwrite_enable=NO अभी भी राइट परिवार (STOR/MKD/RMD/DELE/RNFR/RNTO/SITE/APPE/STOU) को ब्लॉक करता हैSITE बनाम site केस बायपास (ftpcmdio.c str_upper)cmds_denied=CHMOD कभी मेल नहीं खाता; chmod को chmod_enable=NO या cmds_denied=SITE से बंद करेंमैंने आधिकारिक 3.0.5 पर hide/deny/cmds_denied की खोज की। गेट कॉमा टोकन की एक वॉक और अपरकेस किए गए वर्ब के विरुद्ध str_equal है। handle_rmd के अंदर कोई दूसरा चेक नहीं है। RFC 775 अभी भी XRMD को RMD के रूप में ही भेजता है। आम सलाह है cmds_denied=DELE,RMD। वह स्ट्रिंग कभी XRMD का नाम नहीं लेती।
गलत मोड़: SITE बनाम site को बायपास मानना। वर्ब्स अपरकेस किए जाते हैं। cmds_allowed के साथ भी वही व्यवहार: वह सूची फेल-क्लोज़्ड है, इसलिए जो उपनाम सूचीबद्ध नहीं हैं वे डिनाय ही रहते हैं।
cd lab
./run.sh
Loopback 127.0.0.1:18720. Compose प्रोजेक्ट vsftpd-cmds-denied-alias. lab/ में आधिकारिक 3.0.5 tarball (ऊपर SHA-256). cmds_denied=RMD, write_enable=YES, anonymous, लेखन केवल /incoming के अंतर्गत. साक्षी VSFTPD-CMDS-DENIED-ALIAS-WITNESS. अंतिम पंक्ति:
SUCCESS vsftpd-cmds-denied-alias rmd=550 xrmd=250 dir-gone=yes VSFTPD-CMDS-DENIED-ALIAS-WITNESS
आधुनिक क्रिया को अस्वीकार करते समय RFC उपनामों को अस्वीकार करें, या cmds_denied (XCWD / XMKD / XRMD / XPWD / XCUP / P@SW / EPSV / STOU / APPE) में उपनामों का मिलान करें। cmds_allowed (अनुमति-सूची) को प्राथमिकता दें।
विक्रेता प्राप्ति [email protected] (vsftpd) है। अवैतनिक। किसी भी vsftpd मिरर पर सार्वजनिक GitHub इश्यू न खोलें।
Abraxas Labs - abraxaslabs.tech - github.com/abraxas - @abraxas_null - [email protected]