أواصل نشر الحلول المرسلة للمعالجة الإضافية من موقع HackTheBox . آمل أن يساعد ذلك شخصًا على الأقل على التطور في مجال أمن المعلومات. في هذه المقالة ، نستغل الثغرة الأمنية في Json.Net ونرى كيفية زيادة امتيازاتنا إلى SYSTEM إذا كان لدينا امتياز SeImpersonatePrivilege.يتم الاتصال بالمختبر عبر VPN. من المستحسن عدم الاتصال من جهاز كمبيوتر العمل أو من مضيف حيث تتوفر البيانات المهمة لك ، نظرًا لأنك تدخل في شبكة خاصة مع أشخاص يعرفون شيئًا في مجال أمن المعلومات :)المعلومات التنظيمية, - , :
- PWN;
- (Crypto);
- c (Network);
- (Reverse Engineering);
- (Stegano);
- WEB-.
, , , .
, ,
Telegram . , ,
.
. , - , .
خدمة ذكية
يحتوي هذا الجهاز على عنوان IP 10.10.10.158 ، والذي أضيفه إلى / etc / hosts.10.10.10.158 json.htb
أولاً ، نقوم بمسح المنافذ المفتوحة. نظرًا لأنه يستغرق وقتًا طويلاً لفحص جميع المنافذ باستخدام nmap ، سأفعل ذلك أولاً مع ماسكان. نقوم بمسح جميع منافذ TCP و UDP من واجهة tun0 بسرعة 500 حزمة في الثانية.masscan -e tun0 -p1-65535,U:1-65535 10.10.10.158 --rate=500
بعد ذلك ، تحتاج إلى جمع المزيد من المعلومات حول المنافذ المعروفة. للقيام بذلك ، استخدم nmap مع الخيار -A.nmap json.htb -p49156,49154,49152,47001,80,137,49153,139,49155,135,445,49158,5985,6666,21
الآن ، لمزيد من المعلومات التفصيلية حول الخدمات التي تعمل على المنافذ ، سنقوم بإجراء مسح ضوئي باستخدام الخيار -A.nmap -A json.htb -p80,139,135,445,5985,6666,21
دعنا نذهب لنرى ما على الويب. ونتيجة لذلك ، يتم تحميل الصفحة ، وعندها فقط يتم توجيهنا إلى صفحة التفويض.
يمكننا تجاوز هذا ، ولكن admin: admin يسمح لنا بتسجيل الدخول.
لا يوجد شيء مثير للاهتمام على الموقع نفسه ، وفي محاولات العثور على شيء ما على الأقل ، نتشبث بملفات تعريف الارتباط.
فك Base64.echo "eyJJZCI6MSwiVXNlck5hbWUiOiJhZG1pbiIsIlBhc3N3b3JkIjoiMjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzMiLCJOYW1lIjoiVXNlciBBZG1pbiBIVEIiLCJSb2wiOiJBZG1pbmlzdHJhdG9yIn0=" | base64 -d ; echo
أي أن قيمة كلمة المرور هي MD5 من كلمة مرور المسؤول.
علاوة على ذلك ، لا يوجد شيء مثير للاهتمام. من خلال فتح التجشؤ واعتراض الطلب ، يمكنك العثور على رأس HTTP مثير للاهتمام.
وفي هذه المرحلة ، علقت حتى قيل لي "كسر المعنى". من الواضح ، في مثل هذه الحالات ، تحتاج إلى ارتكاب الأخطاء ومشاهدة رد فعل واجهة برمجة التطبيقات في ثلاث حالات: صواب ، خطأ ، خطأ. ولكن لسبب ما فاتني.نقطة الدخول
ثم تم اكتشاف أنه إذا تم إرسال البيانات المعطلة في عنوان HTTP غريب (حذف بعض الأحرف) ، فإن الخادم يعطي أخطاء. فيما يلي البيانات التي يرجعها الخادم بقيمة رأس عادية مع حذف واحد إلى أربعة أحرف.
نحصل على خطأ مثير للاهتمام في الحالة الأخيرة. نظرًا لأن كائن JSON يتم إيقاف تشغيله ، يمكننا استغلال ذلك باستخدام ysoserial . سنستخدم أداة ObjectDataProvider لـ Json.Net وننفذ أمر ping للتحقق من افتراض الثغرة الأمنية.
الآن قم بتمكين tcpdump باستخدام مرشح بروتوكول ICMP لالتقاط ping.
عند اعتراض طلب ، نغير الرأس.
ونحصل على الأمر ping الذي تم طلبه.
المستعمل
الآن عليك أن تفعل الشيء نفسه مع عداد الحمل. أولاً ، نقوم بإنشاء تحميل وفتح مستمع.
الآن افتح خادم SMB المحلي الذي سيبدأ التحميل منه.
الآن مرة أخرى نقوم بتسلسل البيانات الضرورية ، كأمر نطلق حملنا من خادمنا.
نرى اتصالاً ناجحًا بخادم SMB وجلسة Meterpreter محملة بنجاح.
وقراءة ملف المستخدم.جذر
بادئ ذي بدء ، نحن ننظر إلى المعلومات حول المستخدم الذي نعمل ضمنه.
تم تمكين امتياز SeImpersonatePrivilege للمستخدم (حق "انتحال صفة العميل بعد المصادقة"). كما تقول Microsoft :يسمح تعيين "حق انتحال شخصية عميل بعد المصادقة" للبرامج التي يتم إطلاقها نيابة عن هذا المستخدم بانتحال هوية عميل. يمنع استخدام هذه المعلمة الخوادم غير المصرح لها من انتحال هوية العملاء الذين يتصلون بهذه الخوادم باستخدام إجراءات RPC أو الأنابيب المسماة.
الحقيقة هي أنه يمكننا رفع حقوقنا في النظام. يمكن العثور على دراسة كاملة هنا . تتأثر الامتيازات التالية بهذه الثغرة الأمنية:- SeImpersonatePrivilege
- SeAssignPrimaryPrivilege
- Setcbprivilege
- SeBackupPrivilege
- SeRestorePrivilege
- SeCreateTokenPrivilege
- SeLoadDriverPrivilege
- SeTakeOwnershipPrivilege
- SeDebugPrivilege
دعنا نولد حمولة أخرى ونشغل مستمعًا لها.
للتشغيل سنستخدم Juicy Potato . ولكن كمعلمة تحتاج إلى تحديد CLSID الخاص بالحساب للنظام المستهدف ، سنأخذها أيضًا من المستودع . لكن أولاً ، دعنا نرى أي نوع من النظام.
والآن ننظر إلى CLSID.
قم بتحميل الملفات إلى المضيف الهدف.
الآن قم بتشغيل Juicy Potato ووضح لها ما سيتم إنشاء العملية (CreateProcessWithTokenW أو CreateProcessAsUser ، المعلمة -t) ، ملف العملية (-p) ، منفذ الاستماع (-l) ، و CLSID (-c).
تم إنشاء العملية بنجاح ، ونرى جلسة metterpreter التي تم إنشاؤها.
ونحصل على حساب SYSTEM.يمكنك الانضمام إلينا على Telegram. دعونا نجمع مجتمعًا سيكون فيه أناس على دراية في العديد من مجالات تكنولوجيا المعلومات ، ثم يمكننا دائمًا مساعدة بعضنا البعض في أي قضايا تتعلق بتكنولوجيا المعلومات وأمن المعلومات.