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

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

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
183 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

TwoMillion-Machine-Writeup

От деобфускации 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, содержащий обфусцированный код:

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:


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, я успешно повысил своего пользователя до администратора

Скачать инструмент