Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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

TwoMillion-Machine-Writeup

52 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

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:

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

Deoffuscazione

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


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(): 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











OS Command Injection

Ho iniettato ;whoami; nel campo username; il mio sospetto è caduto sulle funzioni PHP exec() o system(), comuni nelle funzionalità solo-admin e spesso prive di una corretta sanitizzazione

Ad esempio, il codice vulnerabile probabilmente era simile a questo:

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

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

Questo endpoint POST /api/v1/admin/vpn/generate era vulnerabile e OS Command Injection è stata eseguita con successo




Accesso iniziale: Reverse Shell tramite OS Command Injection (bypass base64)

Codifica del payload per bypassare le restrizioni

Poiché l'applicazione aveva restrizioni che impedivano i caratteri speciali, ho codificato in base64 il comando del payload della reverse shell per bypassare questa restrizione


Iniezione del payload codificato

Ho iniettato il payload nel username parameter, passandolo tramite pipe a base64 -d | bash per la decodifica e l'esecuzione:


Listener Netcat


Accesso iniziale ottenuto

Il payload è stato eseguito con successo, restituendo una reverse shell come www-data user


Movimento laterale

Ho tentato un movimento laterale dall'utente www-data all'utente admin usando varie tecniche

Ispezionando la directory /var/www/html ho scoperto un file .env contenente le credenziali del database:


La password scoperta è stata riutilizzata con successo per autenticarsi via SSH e MySQL

SSH

MySQL


OS Privilege Escalation

Dopo aver ottenuto l'accesso iniziale come utente admin, ho eseguito l'enumerazione del sistema per identificare potenziali vettori di privilege escalation

Ho provato tutti i più comuni trucchi di privilege escalation come i binari SUID, le capabilities, i diritti sudo, i cron job; niente ha funzionato. Quindi ho controllato le variabili d'ambiente per PATH hijacking o variabili sensibili e ho trovato una MAIL variable che punta a /var/mail/admin


Sono andato a controllare il contenuto della mail e ho notato che l'admin era stato avvisato di applicare la patch al kernel contro la OverlayFS/FUSE vulnerability


versione del kernel

versione del sistema operativo

Il kernel non è mai stato aggiornato, confermando che l'amministratore aveva ignorato o dimenticato l'avviso di sicurezza

L'enumerazione del kernel ha rivelato la versione 5.15.70-051570-generic, vulnerabile a CVE-2023-0386 OverlayFS/FUSE local privilege escalation

Con la vulnerabilità confermata, ho proceduto a ottenere un exploit POC pubblico

Ho clonato il POC e l'ho trasferito sulla macchina target

Poi l'ho eseguito e ho ottenuto con successo l'accesso root


Catena di attacco



Risorse

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



Disclaimer: Questa macchina è stata portata a root in un ambiente di penetration testing autorizzato

Scarica lo strumento
FaseTecnicaObiettivoRisultato
1. RicognizioneScansione delle porte22 (SSH), 80 (HTTP)Scoperta dei servizi
Scoperta dei percorsi/invitePagina di invito trovata
Deoffuscazione JSinviteapi.min.jsEndpoint API esposti
2. Accesso inizialeGenerazione del codice d'invitoPOST /api/v1/invite/generateCodice d'invito valido
RegistrazionePOST /api/v1/user/registerUtente standard creato
3. Web PrivescEnumerazione APIGET /api/v1Endpoint admin scoperti
Escalation verticalePUT /api/v1/admin/settings/updateis_admin: 0 -> 1
4. Accesso al sistemaCommand InjectionPOST /api/v1/admin/vpn/generateusername=test;id;
Reverse ShellPayload codificato in Base64Shell www-data
5. Movimento lateraleScoperta di file/var/www/html/.envadmin:SuperDuperPass123
Riutilizzo SSHssh [email protected]Accesso utente admin
6. Escalation a rootEnumerazione del kerneluname -r -> 5.15.70CVE-2023-0386 identificato
Avviso via email/var/mail/adminOverlayFS/FUSE confermato
Esecuzione dell'exploit./fuse && ./expShell root