21 - Pentesting FTP
Try Hard Security Group
मौलिक जानकारी
फ़ाइल ट्रांसफ़र प्रोटोकॉल (FTP) एक मानक प्रोटोकॉल के रूप में काम करता है जो एक सर्वर और एक क्लाइंट के बीच कंप्यूटर नेटवर्क के बीच फ़ाइल ट्रांसफ़र के लिए सेवा प्रदान करता है।
यह एक सादा-पाठ प्रोटोकॉल है जो न्यू लाइन चरित्र 0x0d 0x0a
का उपयोग करता है, इसलिए कभी-कभी आपको telnet
या nc -C
का उपयोग करके कनेक्ट करने की आवश्यकता हो सकती है।
डिफ़ॉल्ट पोर्ट: 21
कनेक्शन्स सक्रिय और निषेधात्मक
एक्टिव FTP में FTP क्लाइंट पहले अपने पोर्ट N से FTP सर्वर कमांड पोर्ट - पोर्ट 21 तक नियंत्रण कनेक्शन की आरंभिकीकरण करता है। फिर क्लाइंट पोर्ट N+1 पर सुनता है और पोर्ट N+1 को FTP सर्वर को भेजता है। FTP सर्वर फिर FTP क्लाइंट के पोर्ट N+1 से अपने पोर्ट M से डेटा कनेक्शन की आरंभिकीकरण करता है।
लेकिन, अगर FTP क्लाइंट के पास एक फ़ायरवॉल सेटअप है जो बाहर से आने वाली डेटा कनेक्शन को नियंत्रित करता है, तो एक्टिव FTP में समस्या हो सकती है। और, उसके लिए एक संभावित समाधान पैसिव FTP है।
पैसिव FTP में, क्लाइंट FTP सर्वर के पोर्ट 21 तक अपने पोर्ट N से नियंत्रण कनेक्शन की आरंभिकीकरण करता है। इसके बाद, क्लाइंट एक passv कमांड जारी करता है। सर्वर फिर क्लाइंट को अपना कोई एक पोर्ट नंबर M भेजता है। और क्लाइंट FTP सर्वर के पोर्ट M पर अपने पोर्ट P से डेटा कनेक्शन की आरंभिकीकरण करता है।
स्रोत: https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/
कनेक्शन डीबगिंग
FTP कमांड debug
और trace
का उपयोग करके देखा जा सकता है कि संचार कैसे हो रहा है।
गणना
बैनर ग्रबिंग
FTP कनेक्ट करें उपयोग करके starttls
अनधिकृत इनमुम
nmap के साथ
आप HELP
और FEAT
कमांड का उपयोग करके FTP सर्वर की कुछ जानकारी प्राप्त कर सकते हैं:
अनामता लॉगिन
anonymous : anonymous anonymous : ftp : ftp
यहाँ आपको डिफ़ॉल्ट एफटीपी (FTP) क्रेडेंशियल्स की एक अच्छी सूची मिलेगी: https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt
स्वचालित
एनमैप द्वारा डिफ़ॉल्ट रूप से एनॉन लॉगिन और बाउंस FTP चेक किए जाते हैं जिसे -sC विकल्प के साथ या किया जा सकता है:
ब्राउज़र कनेक्शन
आप एक URL का उपयोग करके एक FTP सर्वर से ब्राउज़र (जैसे Firefox) से कनेक्ट कर सकते हैं:
ध्यान दें कि यदि एक वेब एप्लिकेशन एक उपयोगकर्ता द्वारा नियंत्रित डेटा को सीधे एक FTP सर्वर पर भेज रही है तो आप डबल URL एन्कोड %0d%0a
(डबल URL एन्कोड में यह %250d%250a
होता है) बाइट भेज सकते हैं और FTP सर्वर को अनियमित क्रियाएँ करने के लिए बना सकते हैं। इन अनियमित क्रियाओं में से एक है उपयोगकर्ता द्वारा नियंत्रित सर्वर से सामग्री डाउनलोड करना, पोर्ट स्कैनिंग करना या अन्य सादा-पाठ के आधारित सेवाओं (जैसे http) से बातचीत करने का प्रयास करना।
FTP से सभी फ़ाइलें डाउनलोड करें
यदि आपके उपयोगकर्ता/पासवर्ड में विशेष वर्ण हैं, तो निम्नलिखित कमांड का उपयोग किया जा सकता है:
कुछ FTP कमांड
USER उपयोगकर्ता नाम
PASS पासवर्ड
HELP
सर्वर इसका संदेश देता है कि कौन से कमांड समर्थित हैं**
PORT 127,0,0,1,0,80
** यह FTP सर्वर को आईपी 127.0.0.1 पर पोर्ट 80 के साथ कनेक्शन स्थापित करने के लिए संकेत देगा (आपको 5 वां वर्ण "0" और 6 वां को दशमलव में पोर्ट का उपयोग करना होगा या पोर्ट को हेक्स में व्यक्त करने के लिए 5 वां और 6 वां का उपयोग करें).**
EPRT |2|127.0.0.1|80|
** यह FTP सर्वर को आईपी 127.0.0.1 पर पोर्ट 80 के साथ एक TCP कनेक्शन ("2" द्वारा सूचित) स्थापित करने के लिए संकेत देगा। यह कमांड IPv6 का समर्थन करता है।LIST
यह मौजूदा फ़ोल्डर में फ़ाइलों की सूची भेजेगाLIST -R
रिकर्सिव रूप से सूची देगा (अगर सर्वर द्वारा अनुमति है)APPE /पथ/कुछ.टेक्स्ट
यह FTP को सूचित करेगा कि उसे एक फ़ाइल में संग्रहित डेटा पासिव कनेक्शन से या पोर्ट/EPRT कनेक्शन से स्वीकार करना है। यदि फ़ाइल का नाम मौजूद है, तो यह डेटा जोड़ देगा।STOR /पथ/कुछ.टेक्स्ट
APPE
की तरह है लेकिन यह फ़ाइलों को अधिलेखित कर देगाSTOU /पथ/कुछ.टेक्स्ट
APPE
की तरह है, लेकिन अगर मौजूद है तो यह कुछ नहीं करेगा।RETR /पथ/से/फ़ाइल
एक पासिव या पोर्ट कनेक्शन स्थापित करना होगा। फिर, FTP सर्वर उस कनेक्शन के माध्यम से सूचित फ़ाइल को भेजेगाREST 6
यह सर्वर को सूचित करेगा कि अगली बार जब वहRETR
का उपयोग करके कुछ भेजेगा तो यह 6 वें बाइट से शुरू करना चाहिए।TYPE i
स्थानांतरण को बाइनरी पर सेट करेंPASV
यह एक पासिव कनेक्शन खोलेगा और उपयोगकर्ता को सूचित करेगा कि वह कहाँ कनेक्ट कर सकता हैPUT /tmp/फ़ाइल.टेक्स्ट
निर्दिष्ट फ़ाइल को FTP पर अपलोड करें
FTPBounce हमला
कुछ FTP सर्वर PORT कमांड की अनुमति देते हैं। इस कमांड का उपयोग सर्वर को सूचित करने के लिए किया जा सकता है कि आप किसी अन्य FTP सर्वर से किसी पोर्ट पर कनेक्ट होना चाहते हैं। फिर, आप इसका उपयोग करके होस्ट के कौन से पोर्ट खुले हैं उन्हें FTP सर्वर के माध्यम से स्कैन कर सकते हैं।
यहाँ सीखें कि कैसे FTP सर्वर का दुरुपयोग करके पोर्ट स्कैन किया जा सकता है।
आप इस व्यवहार का दुरुपयोग करके एक FTP सर्वर को अन्य प्रोटोकॉलों के साथ बातचीत करने के लिए भी कर सकते हैं। आप एक HTTP अनुरोध वाली फ़ाइल अपलोड कर सकते हैं और किसी भी विकल्पशील FTP सर्वर को इसे किसी अन्य HTTP सर्वर पर भेजने के लिए कह सकते हैं (शायद एक नए व्यवस्थापक उपयोगकर्ता जोड़ने के लिए?) या फिर एक FTP अनुरोध अपलोड कर सकते हैं और विकल्पशील FTP सर्वर से एक फ़ाइल डाउनलोड करने के लिए कह सकते हैं। सिद्धांत आसान है:
अनुरोध (एक पाठ फ़ाइल के भीतर) को विकल्पशील सर्वर पर अपलोड करें। ध्यान दें कि यदि आप किसी अन्य HTTP या FTP सर्वर से बातचीत करना चाहते हैं तो आपको
0x0d 0x0a
के साथ पंक्तियों को बदलना होगाउन वर्णों को भेजने से बचने के लिए
REST X
का उपयोग करें (शायद अनुरोध को फ़ाइल के भीतर भेजने के लिए आपको शुरू में कुछ छवि हेडर डालने की आवश्यकता हो सकती है)अनिश्चित सर्वर और सेवा से कनेक्ट होने के लिए
PORT
का उपयोग करेंसहेजे गए अनुरोध को सर्वर को भेजने के लिए
RETR
का उपयोग करें।
यह बहुत संभावना है कि यह एक त्रुटि फेंकेगा जैसे सॉकेट लिखने योग्य नहीं क्योंकि कनेक्शन RETR
के साथ डेटा भेजने के लिए पर्याप्त समय नहीं रहता है। इससे बचने के लिए कुछ सुझाव हैं:
यदि आप एक HTTP अनुरोध भेज रहे हैं, उसी अनुरोध को एक के बाद एक डालें जब तक ~0.5MB तक नहीं हो जाता। इस तरह से:
प्रोटोकॉल के संबंध में "जंक" डेटा से अनुरोध भरें (FTP से बात करते समय शायद केवल जंक कमांड या
RETR
निर्देश को दोहराना)बस अनुरोध को बहुत सारे शून्य वर्णों या अन्य वर्णों से भरें (पंक्तियों पर या नहीं)
वैसे, यहाँ आपके पास एक पुराना उदाहरण है कि इसे दुरुपयोग करने के लिए कैसे एक FTP सर्वर से एक अलग FTP सर्वर से एक फ़ाइल डाउनलोड करने के लिए कैसे दुरुपयोग करें।
Filezilla सर्वर कमजोरी
FileZilla आम तौर पर स्थानीय FileZilla-सर्वर (पोर्ट 14147) के लिए एक प्रशासनिक सेवा से बाँधता है। यदि आप इस पोर्ट तक पहुंचने के लिए अपनी मशीन से एक सुरंग बना सकते हैं, तो आप इसे एक खाली पासवर्ड का उपयोग करके कनेक्ट कर सकते हैं और FTP सेवा के लिए एक नया उपयोगकर्ता बना सकते हैं।
कॉन्फ़िग फ़ाइलें
Post-Exploitation
डिफ़ॉल्ट vsFTPd कॉन्फ़िगरेशन /etc/vsftpd.conf
में मिल सकता है। यहाँ, आप कुछ खतरनाक सेटिंग्स पा सकते हैं:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_root=/home/username/ftp
- अनामकृत के लिए निर्देशिका।chown_uploads=YES
- अनामकृत तरीके से अपलोड की गई फ़ाइलों की स्वामित्व परिवर्तित करेंchown_username=username
- उपयोगकर्ता जिसे अनामकृत तरीके से अपलोड की गई फ़ाइलों का स्वामित्व दिया गया हैlocal_enable=YES
- स्थानीय उपयोगकर्ताओं को लॉगिन करने की अनुमतिno_anon_password=YES
- अनामकृत से पासवर्ड न मांगेंwrite_enable=YES
- कमांडों की अनुमति दें: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, और SITE
Shodan
ftp
port:21
Try Hard Security Group
HackTricks Automatic Commands
Last updated