Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
TwoMillion-Machine-Writeup — От деобфускации code.js до root, CVE-2023-0386 | Kitploit
Инструменты/GitHubGitHub/anxs3c/twomillion-machine-writeup
Повышение привилегийРазведкаЭксплуатацияЛатеральное перемещениеОбратная инженерияЭксплуатация веб-приложенийCTFТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubanxs3c/twomillion-machine-writeup

TwoMillion-Machine-Writeup

53 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

От деобфускации code.js до root, CVE-2023-0386

Репозиторий

О машине

TwoMillion — это лёгкая Linux-машина уровня Easy, выпущенная в честь достижения 2 миллионов пользователей на HackTheBox. Машина содержит старую версию платформы HackTheBox со старым взламываемым инвайт-кодом. После взлома инвайт-кода можно создать учётную запись на платформе. Эта учётная запись используется для перечисления различных API-эндпоинтов, один из которых позволяет повысить пользователя до администратора. Имея административный доступ, пользователь может выполнить инъекцию команд в эндпоинте генерации VPN для администратора, получив таким образом системную оболочку. Обнаруживается, что файл .env содержит учётные данные базы данных, и благодаря повторному использованию пароля злоумышленники могут войти на машину как пользователь admin. Ядро системы устарело, и CVE-2023-0386 можно использовать для получения root-оболочки.

Результаты сканирования

портсервисподробности
22/tcpsshsyn-ack ttl 63 OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcphttpsyn-ack ttl 63 nginx 2million.htb

Настройка hosts

Я добавил 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 был вставлен и успешно принят

Регистрация

Домашняя страница

Страница доступа
Немногие страницы на этом сайте работают должным образом; страница доступа — вот где становится интересно

Перечисление API-эндпоинтов
Я загрузил VPN-файл, нажав кнопку connection pack, и перехватил GET request


Затем я выполнил curl-запрос с опциями verbose и silent, чтобы перечислить доступные API endpoints



Сервер ответил JSON-списком API-эндпоинтов

У администратора было 3 API-эндпоинта с методами GET, POST и PUT

Когда я попытался сгенерировать ключ администратора через админский эндпоинт /api/v1/admin/vpn/generate, ключ не был сгенерирован, поскольку я не был администратором; первый админский эндпоинт /api/v1/admin/auth подтвердил это





Вертикальное повышение привилегий в веб-приложении: повышение текущего стандартного пользователя до администратора


Выяснив правильный формат PUT request с Content-Type: application/json и required parameters, я успешно повысил своего пользователя до администратора











Инъекция команд ОС

Я ввёл ;whoami; в поле username; мои подозрения пали на PHP-функции exec() или system(), которые часто встречаются в функциях, доступных только администратору, и зачастую не имеют надлежащей санитизации

Например, уязвимый код, вероятно, выглядел примерно так:

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 parameter, передав её через конвейер в 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 vulnerability


версия ядра

версия ОС

Ядро так и не было обновлено, что подтверждает: администратор проигнорировал или забыл предупреждение о безопасности

Перечисление ядра показало версию 5.15.70-051570-generic, которая уязвима к CVE-2023-0386 — локальному повышению привилегий через OverlayFS/FUSE

Убедившись в наличии уязвимости, я приступил к получению публичного POC-эксплойта

Я склонировал POC и перенёс его на целевую машину

Затем я выполнил его и успешно получил root-доступ


Цепочка атаки



Ресурсы

CVE-2023-0386 - CVE-2023-0386 - OS Command Injection



Отказ от ответственности: Эта машина была скомпрометирована в рамках авторизованной среды тестирования на проникновение.

Скачать инструмент
ЭтапТехникаЦельРезультат
1. РазведкаСканирование портов22 (SSH), 80 (HTTP)Обнаружение сервисов
Поиск путей/inviteНайдена страница приглашения
Деобфускация JSinviteapi.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. Повышение привилегий до rootПеречисление ядраuname -r -> 5.15.70Определён CVE-2023-0386
Предупреждение по почте/var/mail/adminПодтверждён OverlayFS/FUSE
Запуск эксплойта./fuse && ./exproot-оболочка