Abbiamo trattato l'inserimento e l'esecuzione dei comandi in Node JS. Lo scenario includeva una casella di input che trasmette l'input dell'utente come numeri a una funzione di calcolatrice che utilizza una funzione EVAL() per calcolare e restituire all'utente l'output dell'operazione aritmatica. La funzione EVAL() insieme alla calcolatrice non implementa alcun tipo di convalida dell'input che ci ha permesso di utilizzare e chiamare metodi Node JS come readdirsync() e readfilesync() per leggere file sensibili. Questo faceva parte HackTheBoxJSCalc sfida sul web.

Ottieni le note sul certificato OSCP

Appunti pratici della suite Burp

Il corso pratico completo sul Penetration Testing delle applicazioni Web

DESCRIZIONE DELLA SFIDA
Nelle misteriose profondità del mare digitale, calamari esperti di tecnologia hanno creato un calcolatore JavaScript specializzato. Con più bracci e complesse capacità di risoluzione dei problemi, questi ingegneri di cefalopodi lo usano per qualsiasi cosa, dai calcoli della traiettoria del getto d'inchiostro alla matematica delle profondità marine. Tenta di superarlo in astuzia a tuo rischio e pericolo! 🦑

Video in evidenza

Per saperne di più sull'attivo Node.js processo, utilizzare il processo dell'oggetto globale. Require() non è necessario perché è globale. Offre una miriade di funzionalità e tecniche utili per ottenere un maggiore controllo sulle interazioni del sistema.

Ad esempio, viene restituita la directory di lavoro corrente del processo Node.js processo.cwd(). Ho utilizzato il nostro programma per testarlo e ho ricevuto i risultati. non ho attivato Burp. Avevo solo bisogno di utilizzare la console del browser per esaminare il carico utile e vedere la risposta.

Lo scopo della sfida era leggere i dati da un file flag.txt sul server. Il modulo fs di Node.js, che deve essere richiesto con require('fs'), può aiutare a farlo. Esistono versioni sincrone e asincrone di ogni metodo. È possibile lavorare con il file system (accesso, gestione e modifica dei file, ecc.). Include una vasta gamma di tecniche e attributi. Il contenuto della directory può essere elencato utilizzando il metodo readdir() o readdirSync() (versione sincrona) della classe fs, che funziona in modo simile ai comandi ls o dir rispettivamente su Linux e Microsoft Windows.

Abbiamo utilizzato il payload seguente per risolvere la sfida

richiedere('fs').readdirSync("/app").accordare()

richiedere('fs').readdirSync(‘../’).accordare()

richiedere('fs').leggereFileSync(“/flag.txt”).accordare()

Videoprocedura dettagliata

Circa l'autore

Creo note sulla sicurezza informatica, note di marketing digitale e corsi online. Fornisco anche consulenza di marketing digitale, inclusi ma non limitati a SEO, annunci Google e Meta e amministrazione CRM.

Visualizza articoli