Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
TwoMillion-Machine-Writeup — Dalla deoffuscazione di code.js alla root, CVE-2023-0386 | Kitploit
Strumenti/GitHubGitHub/anxs3c/twomillion-machine-writeup
Escalation di PrivilegiRicognizioneExploitMovimento LateraleReverse EngineeringSfruttamento di Applicazioni WebCTFPenetration TestingApprendimento e FormazioneLab e Pratica
GitHubanxs3c/twomillion-machine-writeup
173 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

TwoMillion-Machine-Writeup

Dalla deoffuscazione di code.js alla root, CVE-2023-0386

Vedi Repository

Informazioni sulla macchina

TwoMillion è una macchina Linux di difficoltà Facile rilasciata per celebrare il raggiungimento di 2 milioni di utenti su HackTheBox. La macchina presenta una vecchia versione della piattaforma HackTheBox che include il vecchio codice d'invito hackerabile. Dopo aver hackerato il codice d'invito, è possibile creare un account sulla piattaforma. L'account può essere utilizzato per enumerare vari endpoint API, uno dei quali può essere usato per elevare l'utente ad Amministratore. Con l'accesso amministrativo, l'utente può effettuare una command injection nell'endpoint di generazione VPN admin, ottenendo così una shell di sistema. Viene trovato un file .env contenente le credenziali del database e, grazie al riutilizzo delle password, gli attaccanti possono accedere come utente admin sulla macchina. Il kernel di sistema risulta obsoleto e CVE-2023-0386 può essere utilizzato per ottenere una root shell

Risultati della scansione

portaserviziodettagli
22/tcpsshsyn-ack ttl 63 OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcphttpsyn-ack ttl 63 nginx 2million.htb

Configurazione host

Ho aggiunto 2million.htb al mio file /etc/hots


Scoperta dei percorsi

Ho eseguito una discovery dei percorsi su 2million.htb usando gobuster

Durante l'enumerazione, ho scoperto l'endpoint /invite


Dopo aver navigato nella pagina /invite


Ispezionando la pagina, ho notato che caricava un file JavaScript chiamato inviteapi.min.js contenente codice offuscato:

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,{}))

Deoffuscazione

Ho deoffuscato il codice usando de4js, che ha prodotto il seguente JavaScript leggibile:


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(): genera un nuovo codice d'invito
verefyInviteCode(code): verifica se un codice è valido

e per capire meglio, ho intercettato la richiesta di verifica:


l'API usa risposte JSON


Generazione del codice d'invito e decrittazione ROT13

Sono andato nella console del browser e ho eseguito makeInviteCode()


Ho notato che i dati erano cifrati con ROT13


Dopo la decrittazione, ho trovato l'endpoint /api/v1/invite/generate; ho quindi generato il codice d'invito


Decodifica Base64

Chiave
La chiave 2F4BN-YI8OH-B0SCL-L8OE6 è stata inserita e accettata con successo

Registrazione

Home Page

Pagina Access
Non molte pagine di questo sito funzionano correttamente; la pagina access è dove le cose diventano interessanti

Enumerazione degli endpoint API
Ho caricato il file VPN cliccando sul pulsante connection pack e ho intercettato la GET request


Ho quindi eseguito una richiesta curl con le opzioni verbose e silent per enumerare gli API endpoints disponibili



Il server ha risposto con un elenco JSON di endpoint API

L'admin aveva 3 endpoint API con metodi GET, POST e PUT

Quando ho tentato di generare la chiave admin con l'endpoint admin /api/v1/admin/vpn/generate, la chiave non è stata generata perché non ero l'admin, e il primo endpoint admin /api/v1/admin/auth lo ha confermato





Escalation verticale dei privilegi nell'applicazione web: da utente standard ad amministratore


Dopo aver scoperto il corretto formato della PUT request con Content-Type: application/json e i required parameters, ho elevato con successo il mio utente ad amministratore

Scarica lo strumento