
NodeXP - Uno strumento di Server Side Javascript Injection in grado di rilevare e sfruttare vulnerabilità Node.js
NodeXP è uno strumento integrato, scritto in Python 2.7, in grado di rilevare possibili vulnerabilità nei servizi Node.js e di sfruttarle in modo automatizzato, basato su attacchi di S(erver)S(ide)J(avascript)I(njection)!
Scarica NodeXP clonando il repository Git:
git clone https://github.com/esmog/nodexp
Per ottenere un elenco di tutte le opzioni esegui:
python2.7 nodexp -h
Esempi per i casi POST e GET rispettivamente:
python2.7 nodexp.py --url="http://nodegoat.herokuapp.com/contributions" --pdata="preTax=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA"
python2.7 nodexp.py --url="http://nodegoat.herokuapp.com/contributions" --pdata="preTax=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA" --tech=blind
python2.7 nodexp.py --url="http://192.168.64.30/?name=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA"
python2.7 nodexp.py --url="http://192.168.64.30/?name=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA" --tech=blind
Per familiarizzare con NodeXP potresti aver bisogno di configurare i servizi di test Node.js forniti (/testbeds) e iniziare a utilizzare lo strumento. Sarà necessaria una macchina locale con un server Node.js in esecuzione.
Prima di tutto, dovresti installare i pacchetti 'body-parser' ed 'express' nelle directory GET e POST.
Vai alla directory 'testbeds/GET' sulla tua macchina locale e incolla il comando seguente nel terminale:
npm install express --save
Vai alla directory 'testbeds/POST' e incolla i comandi seguenti nel terminale:
npm install body-parser --save
nmp install express --save
Dopo la corretta installazione dei pacchetti, puoi eseguire ciascun servizio lanciando il comando 'node' e il file js desiderato (es. node eval.js).
Dopo aver avviato il server, sei pronto per eseguire NodeXP e testarlo su questi servizi!
Esempio per il caso GET mostrato di seguito:
python2.7 nodexp.py --url=http://localiprunningnodejsserver:3001/?name=[INJECT_HERE]
Esempio per il caso POST mostrato di seguito:
python2.7 nodexp.py --url=http://localiprunningnodejsserver:3001/post.js --pdata=username=[INJECT_HERE]
I payload utilizzati sia per la tecnica di Iniezione Blind che per quella Basata sui Risultati sono memorizzati in "/files/blind_payloads.txt" e in "/files/payloads.txt".
I payload sono scritti su ogni numero di riga dispari dei file di testo e, nel caso dell'Iniezione Basata sui Risultati, le risposte attese sono scritte su ogni numero di riga pari del file "payloads.txt" come un elenco separato da virgole. I numeri di riga pari del file "blind_payloads.txt" sono vuoti.
Per fermare il processo di iniezione, viene utilizzato "---end(nextline)---end" come delimitatore in grado di interrompere l'analisi e l'iniezione dei payload, sia per i casi di Iniezione Blind che Basata sui Risultati.
Ogni utente può mantenere e aggiornare i file di testo dei payload con i propri payload, a patto che segua le istruzioni sopra indicate.
Lo scopo dello strumento è strettamente accademico ed è stato sviluppato per condurre la mia tesi di laurea magistrale. Potrebbe anche essere utile durante il processo di penetration test su servizi Node.js. Qualsiasi altro uso maligno o illegale dello strumento è fortemente sconsigliato e chiaramente non rientra nello scopo di questa ricerca.
NodeXP - Versione 1.2.2