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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/anxs3c/twomillion-machine-writeup
تصعيد الامتيازاتالاستطلاعالاستغلالالحركة الجانبيةالهندسة العكسيةاستغلال تطبيقات الويبCTFاختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubanxs3c/twomillion-machine-writeup

TwoMillion-Machine-Writeup

5منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

من إزالة تشويش code.js إلى الجذر، CVE-2023-0386

عرض المستودع

حول الجهاز

TwoMillion هو جهاز Linux بمستوى صعوبة سهل تم إصداره للاحتفال ببلوغ مليوني مستخدم على HackTheBox. يتضمن الجهاز نسخة قديمة من منصة HackTheBox تحتوي على رمز الدعوة القديم القابل للاختراق. بعد اختراق رمز الدعوة يمكن إنشاء حساب على المنصة. يمكن استخدام الحساب لاستكشاف نقاط نهاية API متعددة، ويمكن استخدام إحداها لرفع المستخدم إلى مسؤول. بصلاحية المسؤول يمكن للمستخدم تنفيذ حقن أوامر في نقطة نهاية توليد VPN الخاصة بالمسؤول وبالتالي الحصول على شل النظام. يوجد ملف .env يحتوي على بيانات اعتماد قاعدة البيانات، وبسبب إعادة استخدام كلمة المرور يمكن للمهاجمين تسجيل الدخول كمستخدم admin على الجهاز. كما تبين أن نواة النظام قديمة ويمكن استخدام CVE-2023-0386 للحصول على شل بصلاحية الجذر

نتائج الفحص

المنفذالخدمةالتفاصيل
22/tcpsshsyn-ack ttl 63 OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcphttpsyn-ack ttl 63 nginx 2million.htb

إعداد المضيف

أضفت 2million.htb إلى ملف /etc/hots الخاص بي


اكتشاف المسارات

قمت باكتشاف المسارات عبر 2million.htb باستخدام gobuster

أثناء الاستكشاف، اكتشفت نقطة النهاية /invite


بعد الانتقال إلى صفحة /invite


أثناء فحص الصفحة، لاحظت أنها تحمّل ملف JavaScript باسم inviteapi.min.js يحتوي على كود مُعمّى:

root@kitploit:~
eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1 i(4){h 8={"4":4};$.9({a:"7",5:"6",g:8,b:\'/d/e/n\',c:1(0){3.2(0)},f:1(0){3.2(0)}})}1 j(){$.9({a:"7",5:"6",b:\'/d/e/k/l/m\',c:1(0){3.2(0)},f:1(0){3.2(0)}})}',24,24,'response|function|log|console|code|dataType|json|POST|formData|ajax|type|url|success|api/v1|invite|error|data|var|verifyInviteCode|makeInviteCode|how|to|generate|verify'.split('|'),0,{}))

فك التعمية

قمت بفك تعمية الكود باستخدام de4js، وأنتج الكود التالي بلغة JavaScript يمكن قراءتها:


root@kitploit:~
function verifyInviteCode(code) {
    var formData = {
        "code": code
    };
    $.ajax({
        type: "POST",
        dataType: "json",
        data: formData,
        url: '/api/v1/invite/verify',
        success: function (response) {
            console.log(response)
        },
        error: function (response) {
            console.log(response)
        }
    })
}

function makeInviteCode() {
    $.ajax({
        type: "POST",
        dataType: "json",
        url: '/api/v1/invite/how/to/generate',
        success: function (response) {
            console.log(response)
        },
        error: function (response) {
            console.log(response)
        }
    })
}

makeInviteCode() : يُنشئ رمز دعوة جديد
verefyInviteCode(code) : يتحقق مما إذا كان الرمز صالحًا

ولفهم أكثر، اعترضت طلب التحقق:


يستخدم API استجابات JSON


توليد رمز الدعوة وفك تشفير ROT13

انتقلت إلى وحدة تحكم المتصفح ونفّذت makeInviteCode()


لاحظت أن البيانات كانت مشفرة بشيفرة ROT13


بعد فك التشفير، وجدت نقطة النهاية /api/v1/invite/generate، ثم قمت بتوليد رمز الدعوة


فك تشفير Base64

المفتاح
تم إدخال المفتاح 2F4BN-YI8OH-B0SCL-L8OE6 وتم قبوله بنجاح

التسجيل

الصفحة الرئيسية

صفحة Access
لا تعمل الكثير من صفحات هذا الموقع بشكل صحيح، وصفحة Access هي حيث تصبح الأمور مثيرة للاهتمام

استكشاف نقاط نهاية API
قمت برفع ملف VPN بالنقر على زر connection pack، واعترضت طلب GET


ثم نفّذت طلب curl بخياري verbose و silent لاستكشاف نقاط نهاية API المتاحة



استجاب الخادم بقائمة JSON من API endpoints

كان لدى المسؤول 3 نقاط نهاية API بأساليب GET و POST و PUT

عندما حاولت توليد مفتاح المسؤول من نقطة نهاية المسؤول /api/v1/admin/vpn/generate، لم يتم توليد المفتاح لأنني لم أكن المسؤول، وأكّدت نقطة نهاية المسؤول الأولى /api/v1/admin/auth ذلك





تصعيد الصلاحيات العمودي في تطبيق الويب: رفع المستخدم العادي الحالي إلى مسؤول


بعد اكتشاف الصيغة الصحيحة لـ طلب PUT مع Content-Type: application/json والمعاملات المطلوبة، نجحت في رفع مستخدمي إلى مسؤول











حقن أوامر نظام التشغيل

قمت بحقن ;whoami; في حقل اسم المستخدم، ووقع اشتباهي على دوال exec() أو system() في PHP، وهي شائعة في الميزات المخصصة للمسؤول وغالبًا ما تفتقر إلى التنقية المناسبة

على سبيل المثال، من المحتمل أن يكون الكود الضعيف مشابهًا لهذا:

root@kitploit:~
$username = $json->username;

exec("/usr/bin/cat /var/www/html/VPN/user/$username.ovpn");

كانت نقطة النهاية POST /api/v1/admin/vpn/generate ضعيفة، وتم تنفيذ حقن أوامر نظام التشغيل بنجاح




الوصول الأولي: شل عكسي عبر حقن أوامر نظام التشغيل (تجاوز base64)

تشفير الحمولة لتجاوز القيود

نظرًا لأن التطبيق كان يحتوي على قيود تمنع الأحرف الخاصة، قمت بتشفير أمر حمولة الشل العكسي بـ base64 لتجاوز هذا القيد


حقن الحمولة المشفرة

قمت بحقن الحمولة في معامل username، وتوجيهها إلى base64 -d | bash لفك التشفير والتنفيذ:


مستمع Netcat


الحصول على الوصول الأولي

تم تنفيذ الحمولة بنجاح، وأعادت شلًا عكسيًا كـ www-data user


الحركة الجانبية

حاولت القيام بـ حركة جانبية من مستخدم www-data إلى مستخدم admin باستخدام تقنيات مختلفة

أثناء فحص مجلد /var/www/html اكتشفت ملف .env يحتوي على بيانات اعتماد قاعدة البيانات:


تمت إعادة استخدام كلمة المرور المكتشفة بنجاح للمصادقة عبر SSH و MySQL

SSH

MySQL


تصعيد صلاحيات نظام التشغيل

بعد الحصول على الوصول الأولي كمستخدم admin، قمت بجمع معلومات النظام لتحديد نواقل تصعيد الصلاحيات المحتملة

جربت أكثر حيل تصعيد الصلاحيات شيوعًا مثل ثنائيات SUID، والصلاحيات (capabilities)، وحقوق sudo، ومهام cron، ولم ينجح أي منها. لذا فحصت متغيرات البيئة بحثًا عن اختطاف PATH أو متغير حساس، ووجدت MAIL variable يشير إلى /var/mail/admin


ذهبت لفحص محتوى البريد ولاحظت أنه تم تحذير المسؤول من تحديث النواة لمعالجة ثغرة OverlayFS/FUSE


إصدار النواة

إصدار نظام التشغيل

لم يتم تحديث النواة أبدًا، مما يؤكد أن المسؤول تجاهل تحذير الأمان أو نسيه

كشف فحص النواة عن الإصدار 5.15.70-051570-generic، وهو عرضة لثغرة CVE-2023-0386 OverlayFS/FUSE لتصعيد الصلاحيات محليًا

بعد تأكيد الثغرة، انتقلت إلى الحصول على استغلال POC عام

قمت باستنساخ الـ POC ونقله إلى الجهاز المستهدف

ثم قمت بتنفيذه ونجحت في الحصول على صلاحيات الجذر


سلسلة الهجوم



الموارد

CVE-2023-0386 - CVE-2023-0386 - حقن أوامر نظام التشغيل



إخلاء مسؤولية: تم اختراق هذا الجهاز في بيئة اختبار اختراق مصرح بها

تنزيل الأداة
المرحلةالتقنيةالهدفالنتيجة
1. الاستطلاعفحص المنافذ22 (SSH), 80 (HTTP)اكتشاف الخدمات
اكتشاف المسارات/inviteتم العثور على صفحة الدعوة
فك تعمية JavaScriptinviteapi.min.jsتم كشف نقاط نهاية API
2. الوصول الأوليتوليد رمز الدعوةPOST /api/v1/invite/generateرمز دعوة صالح
التسجيلPOST /api/v1/user/registerتم إنشاء مستخدم عادي
3. تصعيد الصلاحيات عبر الويباستكشاف APIGET /api/v1تم اكتشاف نقاط نهاية المسؤول
التصعيد العموديPUT /api/v1/admin/settings/updateis_admin: 0 -> 1
4. الوصول إلى النظامحقن الأوامرPOST /api/v1/admin/vpn/generateusername=test;id;
الشل العكسيحمولة مشفرة بـ Base64شل www-data
5. الحركة الجانبيةاكتشاف الملفات/var/www/html/.envadmin:SuperDuperPass123
إعادة استخدام SSHssh [email protected]الوصول إلى مستخدم admin
6. تصعيد صلاحيات الجذرفحص النواةuname -r -> 5.15.70تم تحديد CVE-2023-0386
تحذير البريد الإلكتروني/var/mail/adminتم تأكيد OverlayFS/FUSE
تنفيذ الاستغلال./fuse && ./expشل الجذر