Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
THM-Steel_Mountain-CVE-2014-6287 — كتابة عن صندوق Steel Mountain من TryHackMe.com واستغلال لـ CVE-2014-6287 | Kitploit
أدوات/GitHubGitHub/wizardy0ga/thm-steel_mountain-cve-2014-6287
تصعيد الامتيازاتتوليد الحمولةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبما بعد الاستغلالCTFاختبار الاختراقالتعلم والتعليم

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
مختبرات وتدريب عملي
Archived
GitHubwizardy0ga/thm-steel_mountain-cve-2014-6287

THM-Steel_Mountain-CVE-2014-6287

كتابة عن صندوق Steel Mountain من TryHackMe.com واستغلال لـ CVE-2014-6287

عرض المستودع
6منذ 4 سنواتلم تتم المراجعة بعد

THM-Steel_Mountain-CVE-2014-6287

شرح حول جهاز Steel Mountain من TryHackMe.com واستغلال لـ CVE-2014-6287

الإشادات

لا أحمل أي فضل للاكتشاف الأصلي واستغلال هذه الثغرة. شكراً للأشخاص التاليين!

الاكتشاف:
Daniele Linguaglossa

مؤلف وحدة Metasploit:
Muhamad Fadzil Ramli

غرفة TryHackMe والمؤلف:
https://tryhackme.com/room/steelmountain
https://tryhackme.com/p/tryhackme

المراجع:
https://nvd.nist.gov/vuln/detail/CVE-2014-6287
https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/http/rejetto_hfs_exec.rb
https://subscription.packtpub.com/book/networking_and_servers/9781786463166/1/ch01lvl1sec20/vulnerability-analysis-of-hfs-2-3
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6287
https://www.tutorialspoint.com/pascal/pascal_functions.htm

إذا رأيت شيئاً، قل شيئاً!

أنا لست بأي حال من الأحوال محترفاً متمرساً في الأمن. هذا يعني أنني قد أقدم بعض المعلومات غير الصحيحة. إذا كنت محترفاً متمرساً/باحثاً ذا خبرة ورأيت شيئاً غير صحيح، فأرجو إبلاغي حتى أتمكن من العودة، ودراسة ما أخطأت فيه وتقديم المعلومات الصحيحة. هذا مفيد لي وللباحثين المبتدئين الآخرين الذين قد يصادفون هذا الشرح. إذا وجدت معلومات خاطئة كتبتها، يرجى الاتصال بي على [email protected] حتى أتمكن من إصلاحها. شكراً لك!

الثغرة

خادم ملفات Rejetto (المعروف أيضاً بـ HFS) هو برنامج لمشاركة الملفات يُستخدم لنشر ومشاركة الملفات عبر الشبكة. في الإصدار 2.3، كانت هناك ثغرة سمحت للمهاجم بتنفيذ أوامر النظام عن طريق إدخال بايت فارغ (null byte) في معلمة البحث كما هو موصوف في CVE-2014-6287. لا يقوم الكود بمعالجة البايت الفارغ بشكل صحيح مع إعدادات التعبير المنتظم (Regular Expression) وبالتالي يؤدي إلى ثغرة تنفيذ أوامر عن بعد.

يمكن العثور على الثغرة في دالة findMacroMarker التي تأتي من ملف parserLib.pas. .pas هو امتداد الملف للغة البرمجة Pascal. وقت كتابة هذا النص، لم أقم ببرمجة أي شيء بلغة Pascal. دعنا نلقي نظرة على مقتطف الكود ونحلل ما يفعله!

function findMacroMarker(s:string; ofs:integer=1):integer;
begin result:=reMatch(s, '{[.:]|[.:]}||', 'm!', ofs) end;

السطر الأول من الكود هو إعلان لدالة تسمى findMacroMarker تأخذ معاملين. في لغة Pascal، يجب الإعلان عن نوع بيانات المعاملات، وبالتالي s:string يعني أن المتغير s هو string، وكذلك الأمر بالنسبة للمتغير ofs بنوع بيانات integer. إلى يمين المعاملات، نرى علامة نقطتين متبوعة بـ integer. يُعرف هذا بنوع الدالة. تشير الفاصلة المنقوطة إلى نهاية هذا السطر من الكود. الكلمة الأولى في السطر التالي من الكود هي begin. يخبر هذا المترجم أين تبدأ الدالة. ننتقل لنرى متغيراً يسمى result متبوعاً بعامل الإسناد :=. يُسنَد المتغير result إلى دالة reMatch. لم أتمكن من العثور على أي شيء عن reMatch على الإنترنت، لذا أفترض أنها دالة مخصصة مكتوبة في مكان آخر داخل HFS. لحسن الحظ، الدالة واضحة بذاتها. هي بوضوح اختصار لـ "regular expression match" (مطابقة التعبير المنتظم) متبوعة بنمط التعبير المنتظم الذي تبحث عنه، والذي يتم توضيحه في معاملات دالة بالإضافة إلى معاملات المتغيرات الأولية المحددة في السطر الأول من الكود. في نهاية السطر الثاني، تُستخدم كلمة لتعريف نهاية الدالة للمترجم.

توجد الثغرة في نمط التعبير المنتظم كما هو موصوف أعلاه في دالة reMatch. يفشل التعبير المنتظم في التعامل بشكل صحيح مع البايت الفارغ %00. عندما نمرر أمر نظام مع بايت فارغ مسبق، ستواجه الدالة الخلل وتنفذ الأمر على الحاسوب المضيف. لاستغلال هذه الثغرة، كل ما علينا فعله هو تمرير البايت الفارغ في معلمة البحث لطلب GET متبوعاً بـ {.exec|code.} (حيث code هو الأمر الذي تريد تنفيذه) عبر الرابط بهذا الشكل:
http://(IP-Address/DomainName)/?search=%00{.exec|CommandGoesHere.}.

الشرح

لنبدأ بمسح المنافذ باستخدام rustscan. أفضل استخدام rustscan للحصول على نظرة سريعة على سطح الهجوم.

image

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

image

لدينا خدمة تسمى Microsoft windows RPC تعمل على المنافذ العليا. RPC تعني "استدعاء إجراء عن بعد" (Remote Procedure Call). وهذا يسمح لعمليات ويندوز بالتواصل عبر الشبكة أو داخلياً داخل الحاسوب نفسه. بالمضي قدماً، لدينا عدة خوادم ويب مختلفة تعمل على المنفذين 80 و 8080. على المنفذين 5985 و 47001، يوجد Microsoft Httpapi Httpd الذي يسمح للتطبيقات بالتواصل عبر HTTP دون الحاجة إلى Microsoft IIS (خادم معلومات الإنترنت). يكتشف nmap وجود خادم ويب ربما على المنفذ 3389، لكنني لم أتمكن من الاتصال عبر HTTP أو SSL. لنتصل بخادم الويب على المنفذ 80 لأنه المنفذ القياسي لبروتوكول HTTP.

image

على المنفذ 80، نرى صفحة ويب تعرض شعار شركة Steel Mountain وصورة معنونة "موظف الشهر". إذا فتحنا أدوات مطور الويب، يمكننا رؤية أن الصورة مسماة BillHarper.png مما يعطينا إجابة السؤال الأول. لنتصل بالخدمات الأخرى المستمعة ونرى ما يمكننا إيجاده.

image

عند الاتصال بالخدمة على المنفذ 5985، نحصل على رمز خطأ HTTP 404. رمز الخطأ 404 يعني أن الخادم لا يمكنه العثور على المورد المطلوب. لا يوجد شيء مثير للاهتمام هنا. لننتقل إلى التالي.

image

نعم! هذا يبدو مثيراً للاهتمام. على المنفذ 8080، لدينا نوع من خدمة مشاركة الملفات. لنتجول ونرى إذا كان بإمكاننا العثور على مزيد من المعلومات حول هذه الخدمة. إذا نظرنا إلى الزاوية السفلى اليسرى، يمكننا رؤية اسم وما يبدو كرقم إصدار مثل هذا: HttpFileServer 2.3. لنتعمق أكثر.

image

إذا نقرنا على الرابط المسمى HttpFileServer 2.3، ننتقل إلى صفحة ويب لاسم البرنامج الذي يعمل على المنفذ 8080. في هذه الحالة، لدينا Rejetto HFS HTTP File Server. لنتحقق من المنفذ الآخر على 47001 لنغطي جميع القواعد. إذا لم نجد شيئاً مفيداً، يمكننا العودة إلى Rejetto والبدء في البحث عن ثغرات معروفة (CVE).

image

يبدو أن لدينا خطأ 404 آخر على المنفذ 47001. لنبدأ البحث عن ثغرات معروفة لـ Rejetto HFS 2.3.

image

يكشف بحث سريع عن وجود إدراج CVE معروف لـ HFS 2.3. سننحرف عن دليل THM ونبتعد عن Metasploit الجاهز. لقد كتبت استغلالاً سيمنحنا شل (shell). لاستخدامه، يجب عليك الذهاب إلى revshells.com، وإدخال معلومات الشبكة الصحيحة واختيار PowerShell #3 (Base 64). عندما تحصل على الحمولة، انسخها والصقها في متغير payload في السطر 13 وقم بتشغيل الاستغلال. سيتم فتح مستمع تلقائياً ويجب أن تحصل على الوصول إلى النظام. ملاحظة: قد تحتاج إلى تشغيل الاستغلال عدة مرات لاصطياد الشل.

image

بوم! نحن داخل النظام، وكإضافة، لدينا شل PowerShell. وهذا يعني أنه سيكون لدينا إمكانية الوصول إلى أدوات .NET cmdlets. يمكننا أن نكون أكثر خطورة بهذا من شل موجه الأوامر القياسي. لننتقل إلى رفع الامتيازات. يقدم لنا دليل THM أداة مفيدة تسمى PowerSploot والتي تحتوي على أداة لاستكشاف الجهاز بحثاً عن ناقلات رفع الامتيازات المحتملة. سنقوم بتنزيل PowerUp.ps1 على الجهاز واستخدامه لمساعدتنا في السيطرة على الجهاز.

image

أولاً، نبدأ خادم HTTP بسيط في الدليل الذي يحتوي على ملف PowerUp.ps1 على نظامنا. بعد ذلك، على نظامنا الهدف، نستخدم cmdlet Invoke-Webrequest لسحب الملف من خادمنا إلى الجهاز الهدف. سنقوم الآن بتثبيت وتشغيل أحد cmdlets التي تأتي مع PowerUp.

image

لتثبيت PowerUp.ps1، قم بتشغيل هذا الأمر: . .\PowerUp.ps1. بعد ذلك، سنحتاج إلى استخدام cmdlet الجديد Invoke-AllChecks. بعد تشغيله، نرى الكثير من المخرجات. لقد قمت بتقليصها إلى الجزء المهم الذي نريده. يمكننا أن نرى أن PowerUp أخبرنا أن لدينا أذونات لتعديل الملف. لنتحقق من الخدمات قيد التشغيل حتى نتمكن من إيقافها إذا كانت تعمل. نحتاج إلى فعل هذا لأننا لا نستطيع فعل أي شيء مع الملف إذا كان يُستخدم بواسطة خدمة.

image

باستخدام cmdlet Get-Service، نرى قائمة بالخدمات الموجودة على الجهاز. نظراً لأن الخدمة المستهدفة قيد التشغيل، سنحتاج إلى إيقافها حتى نتمكن من تعديل واستبدال الملف الثنائي.

image

لإيقاف الخدمة، نستخدم cmdlet Stop-Service متبوعاً باسم الخدمة. الآن نحتاج إلى التحقق مرة أخرى من أن الخدمة متوقفة باستخدام cmdlet Get-Service. كما هو موضح أعلاه، يمكننا التأكد من أن الخدمة قد توقفت بالفعل. لننتقل إلى الدليل الذي يحتوي على الملف الثنائي المستهدف. الدليل هو C:\Program Files (x86)\IObit\Advanced SystemCare.

image

لاحظ حجم الملف الثنائي الموجود على يسار اسم الملف الثنائي في العمود الأيمن الأقصى.

image

أنشئ حمولة meterpreter واستضفها باستخدام وحدة خادم الويب Python كما فعلنا من قبل.

image

شغّل مستمع meterpreter باستخدام نفس معلومات الشبكة التي استخدمتها لإنشاء الحمولة.

image

استخدم cmdlet Invoke-Webrequest لسحب حمولة meterpreter الخاصة بنا إلى النظام الهدف من جهازنا. تأكد من تسميتها ASCService.exe حتى نتمكن من استغلال أذونات الملف الضعيفة واستبدال الملف الثنائي العادي بملفنا الخبيث.

image

تأكد من استبدال الملف الثنائي عن طريق سرد الدليل والتحقق مما إذا كان حجم الملف قد تغير. في هذه الحالة، تغير من رقم مكون من 6 أرقام إلى رقم مكون من 5 أرقام مما يؤكد أننا نجحنا في رفع ملفنا الخبيث!

image

عندما يحل الملف الخبيث محل الملف العادي، كل ما علينا فعله هو إعادة تشغيل الخدمة باستخدام cmdlet Start-Service. عندما نفعل ذلك، سيقوم الجهاز بتنفيذ حمولتنا ويمنحنا شل meterpreter! يمكننا تشغيل getuid في meterpreter للتحقق مما إذا كان لدينا NT AUTHORITY/SYSTEM. عندما نشغل getuid، يمكننا بالفعل أن نرى أننا تملكنا هذا الجهاز! أتمنى لك يوماً رائعاً!

تنزيل الأداة
reMatch
reMatch
end